Skip to content

Commit 899ea4a

Browse files
authored
Automated updates for Terraform 0.14 support and improved PR automation (#47)
1 parent 09c8f66 commit 899ea4a

File tree

17 files changed

+273
-56
lines changed

17 files changed

+273
-56
lines changed

.github/CODEOWNERS

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Use this file to define individuals or teams that are responsible for code in a repository.
22
# Read more: <https://help.github.com/articles/about-codeowners/>
33
#
4-
# Order is important: the last matching pattern takes the most precedence
4+
# Order is important: the last matching pattern has the highest precedence
55

66
# These owners will be the default owners for everything
77
* @cloudposse/engineering @cloudposse/contributors
@@ -13,5 +13,12 @@
1313
# Cloud Posse must review any changes to GitHub actions
1414
.github/* @cloudposse/engineering
1515

16-
# Cloud Posse must review any changes to standard context definition
17-
**/context.tf @cloudposse/engineering
16+
# Cloud Posse must review any changes to standard context definition,
17+
# but some changes can be rubber-stamped.
18+
**/context.tf @cloudposse/engineering @cloudposse/approvers
19+
README.md @cloudposse/engineering @cloudposse/contributors @cloudposse/approvers
20+
docs/*.md @cloudposse/engineering @cloudposse/contributors @cloudposse/approvers
21+
22+
# Cloud Posse Admins must review all changes to CODEOWNERS or the mergify configuration
23+
.github/mergify.yml @cloudposse/admins
24+
.github/CODEOWNERS @cloudposse/admins

.github/auto-release.yml

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,35 @@ version-template: '$MAJOR.$MINOR.$PATCH'
44
version-resolver:
55
major:
66
labels:
7-
- 'major'
7+
- 'major'
88
minor:
99
labels:
10-
- 'minor'
11-
- 'enhancement'
10+
- 'minor'
11+
- 'enhancement'
1212
patch:
1313
labels:
14-
- 'patch'
15-
- 'fix'
16-
- 'bugfix'
17-
- 'bug'
18-
- 'hotfix'
14+
- 'auto-update'
15+
- 'patch'
16+
- 'fix'
17+
- 'bugfix'
18+
- 'bug'
19+
- 'hotfix'
1920
default: 'minor'
2021

2122
categories:
22-
- title: '🚀 Enhancements'
23-
labels:
24-
- 'enhancement'
25-
- title: '🐛 Bug Fixes'
26-
labels:
27-
- 'fix'
28-
- 'bugfix'
29-
- 'bug'
30-
- 'hotfix'
23+
- title: '🚀 Enhancements'
24+
labels:
25+
- 'enhancement'
26+
- 'patch'
27+
- title: '🐛 Bug Fixes'
28+
labels:
29+
- 'fix'
30+
- 'bugfix'
31+
- 'bug'
32+
- 'hotfix'
33+
- title: '🤖 Automatic Updates'
34+
labels:
35+
- 'auto-update'
3136

3237
change-template: |
3338
<details>

.github/mergify.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
pull_request_rules:
2+
- name: "approve automated PRs that have passed checks"
3+
conditions:
4+
- "check-success~=test/bats"
5+
- "check-success~=test/readme"
6+
- "check-success~=test/terratest"
7+
- "base=master"
8+
- "author=cloudpossebot"
9+
- "head~=auto-update/.*"
10+
actions:
11+
review:
12+
type: "APPROVE"
13+
bot_account: "cloudposse-mergebot"
14+
message: "We've automatically approved this PR because the checks from the automated Pull Request have passed."
15+
16+
- name: "merge automated PRs when approved and tests pass"
17+
conditions:
18+
- "check-success~=test/bats"
19+
- "check-success~=test/readme"
20+
- "check-success~=test/terratest"
21+
- "base=master"
22+
- "head~=auto-update/.*"
23+
- "#approved-reviews-by>=1"
24+
- "#changes-requested-reviews-by=0"
25+
- "#commented-reviews-by=0"
26+
- "base=master"
27+
- "author=cloudpossebot"
28+
actions:
29+
merge:
30+
method: "squash"
31+
32+
- name: "delete the head branch after merge"
33+
conditions:
34+
- "merged"
35+
actions:
36+
delete_head_branch: {}
37+
38+
- name: "ask to resolve conflict"
39+
conditions:
40+
- "conflict"
41+
actions:
42+
comment:
43+
message: "This pull request is now in conflict. Could you fix it @{{author}}? 🙏"
44+
45+
- name: "remove outdated reviews"
46+
conditions:
47+
- "base=master"
48+
actions:
49+
dismiss_reviews:
50+
changes_requested: true
51+
approved: true
52+
message: "This Pull Request has been updated, so we're dismissing all reviews."

.github/renovate.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"extends": [
3+
"config:base",
4+
":preserveSemverRanges"
5+
],
6+
"labels": ["auto-update"],
7+
"enabledManagers": ["terraform"],
8+
"terraform": {
9+
"ignorePaths": ["**/context.tf", "examples/**"]
10+
}
11+
}
12+

.github/workflows/auto-context.yml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: "auto-context"
2+
on:
3+
schedule:
4+
# Update context.tf nightly
5+
- cron: '0 3 * * *'
6+
7+
jobs:
8+
update:
9+
if: github.event_name == 'schedule'
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v2
13+
14+
- name: Update context.tf
15+
shell: bash
16+
id: update
17+
env:
18+
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
19+
run: |
20+
if [[ -f context.tf ]]; then
21+
echo "Discovered existing context.tf! Fetching most recent version to see if there is an update."
22+
curl -o context.tf -fsSL https://raw.githubusercontent.com/cloudposse/terraform-null-label/master/exports/context.tf
23+
if git diff --no-patch --exit-code context.tf; then
24+
echo "No changes detected! Exiting the job..."
25+
else
26+
echo "context.tf file has changed. Update examples and rebuild README.md."
27+
make init
28+
make github/init/context.tf
29+
make readme/build
30+
echo "::set-output name=create_pull_request=true"
31+
fi
32+
else
33+
echo "This module has not yet been updated to support the context.tf pattern! Please update in order to support automatic updates."
34+
fi
35+
36+
- name: Create Pull Request
37+
if: steps.update.outputs.create_pull_request == 'true'
38+
uses: cloudposse/actions/github/create-pull-request@0.22.0
39+
with:
40+
token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }}
41+
commit-message: Update context.tf from origin source
42+
title: Update context.tf
43+
body: |-
44+
## what
45+
This is an auto-generated PR that updates the `context.tf` file to the latest version from `cloudposse/terraform-null-label`
46+
47+
## why
48+
To support all the features of the `context` interface.
49+
50+
branch: auto-update/context.tf
51+
base: master
52+
delete-branch: true
53+
labels: |
54+
auto-update
55+
context

.github/workflows/auto-readme.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: "auto-readme"
2+
on:
3+
schedule:
4+
# Update README.md nightly
5+
- cron: '0 4 * * *'
6+
7+
jobs:
8+
update:
9+
if: github.event_name == 'schedule'
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v2
13+
14+
- name: Update readme
15+
shell: bash
16+
id: update
17+
env:
18+
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
19+
run: |
20+
make init
21+
make readme/build
22+
23+
- name: Create Pull Request
24+
uses: cloudposse/actions/github/create-pull-request@0.20.0
25+
with:
26+
token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }}
27+
commit-message: Update README.md and docs
28+
title: Update README.md and docs
29+
body: |-
30+
## what
31+
This is an auto-generated PR that updates the README.md and docs
32+
33+
## why
34+
To have most recent changes of README.md and doc from origin templates
35+
36+
branch: auto-update/readme
37+
base: master
38+
delete-branch: true
39+
labels: |
40+
auto-update
41+
readme

.github/workflows/auto-release.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ name: auto-release
33
on:
44
push:
55
branches:
6-
- master
6+
- master
77

88
jobs:
99
semver:
1010
runs-on: ubuntu-latest
1111
steps:
12-
# Drafts your next Release notes as Pull Requests are merged into "master"
13-
- uses: release-drafter/release-drafter@v5
14-
with:
15-
publish: true
16-
prerelease: false
17-
config-name: auto-release.yml
18-
env:
19-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
12+
# Drafts your next Release notes as Pull Requests are merged into "master"
13+
- uses: release-drafter/release-drafter@v5
14+
with:
15+
publish: true
16+
prerelease: false
17+
config-name: auto-release.yml
18+
env:
19+
GITHUB_TOKEN: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }}

.github/workflows/chatops.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
steps:
1010
- uses: actions/checkout@v2
1111
- name: "Handle common commands"
12-
uses: cloudposse/actions/github/slash-command-dispatch@0.16.0
12+
uses: cloudposse/actions/github/slash-command-dispatch@0.22.0
1313
with:
1414
token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }}
1515
reaction-token: ${{ secrets.GITHUB_TOKEN }}
@@ -24,7 +24,7 @@ jobs:
2424
- name: "Checkout commit"
2525
uses: actions/checkout@v2
2626
- name: "Run tests"
27-
uses: cloudposse/actions/github/slash-command-dispatch@0.16.0
27+
uses: cloudposse/actions/github/slash-command-dispatch@0.22.0
2828
with:
2929
token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }}
3030
reaction-token: ${{ secrets.GITHUB_TOKEN }}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Validate Codeowners
2+
on:
3+
pull_request:
4+
5+
jobs:
6+
validate-codeowners:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- name: "Checkout source code at current commit"
10+
uses: actions/checkout@v2
11+
- uses: mszostok/codeowners-validator@v0.5.0
12+
if: github.event.pull_request.head.repo.full_name == github.repository
13+
name: "Full check of CODEOWNERS"
14+
with:
15+
# For now, remove "files" check to allow CODEOWNERS to specify non-existent
16+
# files so we can use the same CODEOWNERS file for Terraform and non-Terraform repos
17+
# checks: "files,syntax,owners,duppatterns"
18+
checks: "syntax,owners,duppatterns"
19+
# GitHub access token is required only if the `owners` check is enabled
20+
github_access_token: "${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }}"
21+
- uses: mszostok/codeowners-validator@v0.5.0
22+
if: github.event.pull_request.head.repo.full_name != github.repository
23+
name: "Syntax check of CODEOWNERS"
24+
with:
25+
checks: "syntax,duppatterns"

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,17 @@ Available targets:
8484

8585
| Name | Version |
8686
|------|---------|
87-
| terraform | >= 0.12.0 |
88-
| aws | ~> 2.55 |
89-
| null | ~> 2.1 |
90-
| template | ~> 2.1 |
87+
| terraform | >= 0.12.26 |
88+
| aws | >= 2.55 |
89+
| null | >= 2.1 |
90+
| template | >= 2.1 |
9191

9292
## Providers
9393

9494
| Name | Version |
9595
|------|---------|
96-
| aws | ~> 2.55 |
97-
| template | ~> 2.1 |
96+
| aws | >= 2.55 |
97+
| template | >= 2.1 |
9898

9999
## Inputs
100100

0 commit comments

Comments
 (0)