Skip to content

Commit 206cec3

Browse files
committed
chore(ci): add relaease automation with semantic release (#651)
1 parent 69ca98e commit 206cec3

File tree

17 files changed

+4989
-87
lines changed

17 files changed

+4989
-87
lines changed

.github/workflows/lambda-runner-binaries-syncer.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ env:
55
on:
66
push:
77
branches:
8-
- master
98
- develop
109
pull_request:
1110
paths:

.github/workflows/lambda-runners.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ name: Lambda Runners
22
on:
33
push:
44
branches:
5-
- master
65
- develop
76
pull_request:
87
paths:

.github/workflows/lambda-webhook.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ name: Lambda Webhook
22
on:
33
push:
44
branches:
5-
- master
65
- develop
76
pull_request:
87
paths:

.github/workflows/release.yml

Lines changed: 61 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -2,73 +2,80 @@ name: Release build
22

33
on:
44
push:
5-
tags:
6-
- v*
5+
branches:
6+
- master
7+
- develop
78

89
jobs:
9-
release:
10-
name: Build runners distribution
10+
prepare:
11+
name: Create dist
1112
runs-on: ubuntu-latest
1213
container: node:12
13-
env:
14-
lambda_webhook_name: webhook
15-
lambda_runners_name: runners
16-
lambda_syncer_name: runner-binaries-syncer
14+
strategy:
15+
matrix:
16+
lambda: ["modules/webhook/lambdas/webhook", "modules/runner-binaries-syncer/lambdas/runner-binaries-syncer", "modules/runners/lambdas/runners"]
1717
steps:
18-
- name: Create Release
19-
id: create_release
20-
uses: actions/create-release@latest
18+
- name: Extract lambda name
19+
id: lambda
2120
env:
22-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
23-
with:
24-
tag_name: ${{ github.ref }}
25-
release_name: Release ${{ github.ref }}
26-
draft: true
27-
prerelease: true
28-
- name: Extract tag name
29-
id: tag_name
30-
run: echo ::set-output name=TAG::${GITHUB_REF##*/}
21+
LAMBDA: ${{ matrix.lambda }}
22+
run: echo ::set-output name=name::${LAMBDA##*/}
3123
- uses: actions/checkout@v2
3224
- name: Add zip
3325
run: apt update && apt install zip
26+
- name: Build dist
27+
working-directory: ${{ matrix.lambda }}
28+
run: yarn install && yarn run test && yarn dist
29+
- uses: actions/upload-artifact@v2
30+
with:
31+
name: ${{ steps.lambda.outputs.name }}
32+
path: ${{ matrix.lambda }}/${{ steps.lambda.outputs.name }}.zip
33+
retention-days: 1
3434

35-
- name: Lambda webhook - build
36-
working-directory: modules/webhook/lambdas/webhook
37-
run: yarn install && yarn dist
38-
- name: Lambda webhook - Upload asset
39-
uses: actions/upload-release-asset@v1
40-
env:
41-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
35+
release:
36+
runs-on: ubuntu-latest
37+
needs:
38+
prepare
39+
steps:
40+
- uses: actions/checkout@v2
41+
with:
42+
fetch-depth: 0
43+
- uses: actions/download-artifact@v2
44+
with:
45+
name: webhook
46+
path: artifacts
47+
- uses: actions/download-artifact@v2
48+
with:
49+
name: runners
50+
path: artifacts
51+
- uses: actions/download-artifact@v2
4252
with:
43-
upload_url: ${{ steps.create_release.outputs.upload_url }}
44-
asset_path: modules/${{ env.lambda_webhook_name }}/lambdas/${{ env.lambda_webhook_name }}/${{ env.lambda_webhook_name }}.zip
45-
asset_name: ${{ env.lambda_webhook_name }}-${{ steps.tag_name.outputs.TAG }}.zip
46-
asset_content_type: application/zip
53+
name: runner-binaries-syncer
54+
path: artifacts
4755

48-
- name: Lambda syncer - build
49-
working-directory: modules/runner-binaries-syncer/lambdas/runner-binaries-syncer
50-
run: yarn install && yarn dist
51-
- name: Lambda syncer - Upload asset
52-
uses: actions/upload-release-asset@v1
53-
env:
54-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
56+
- name: Get installation token
57+
uses: npalm/[email protected]
58+
id: app-token
5559
with:
56-
upload_url: ${{ steps.create_release.outputs.upload_url }}
57-
asset_path: modules/${{ env.lambda_syncer_name }}/lambdas/${{ env.lambda_syncer_name }}/${{ env.lambda_syncer_name }}.zip
58-
asset_name: ${{ env.lambda_syncer_name }}-${{ steps.tag_name.outputs.TAG }}.zip
59-
asset_content_type: application/zip
60+
appId: ${{ secrets.FOREST_RELEASER_APP_ID }}
61+
appPrivateKeyBase64: ${{ secrets.FOREST_RELEASER_APP_PRIVATE_KEY_BASE64 }}
62+
appInstallationType: repo
63+
appInstallationValue: ${{ github.repository }}
6064

61-
- name: Lambda runners - build
65+
- name: Release
66+
if: github.event_name != 'pull_request' && contains('refs/heads/master', github.ref)
6267
env:
63-
lambda_path: modules/runners/lambdas/runners
64-
working-directory: modules/runners/lambdas/runners
65-
run: yarn install && yarn dist
66-
- name: Lambda runners - Upload asset
67-
uses: actions/upload-release-asset@v1
68+
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
69+
run: |
70+
cp .release/* .
71+
yarn
72+
yarn release -d --repositoryUrl https://x-access-token:[email protected]/$GITHUB_REPOSITORY.git
73+
74+
- name: Dry run release
75+
if: github.event_name != 'pull_request'
6876
env:
69-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
70-
with:
71-
upload_url: ${{ steps.create_release.outputs.upload_url }}
72-
asset_path: modules/${{ env.lambda_runners_name }}/lambdas/${{ env.lambda_runners_name }}/${{ env.lambda_runners_name }}.zip
73-
asset_name: ${{ env.lambda_runners_name }}-${{ steps.tag_name.outputs.TAG }}.zip
74-
asset_content_type: application/zip
77+
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
78+
run: |
79+
cp .release/* .
80+
yarn
81+
yarn release -d --repositoryUrl https://x-access-token:[email protected]/$GITHUB_REPOSITORY.git

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
repos:
22
- repo: git://github.com/antonbabenko/pre-commit-terraform
3-
rev: v1.45.0
3+
rev: v1.47.0
44
hooks:
55
- id: terraform_fmt
66
- id: terraform_tflint
77
- id: terraform_docs
88
- repo: git://github.com/pre-commit/pre-commit-hooks
9-
rev: v2.5.0
9+
rev: v3.4.0
1010
hooks:
1111
- id: check-merge-conflict

.release/package.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "terraform",
3+
"description": "Install semantic release packages",
4+
"scripts": {
5+
"release": "semantic-release"
6+
},
7+
"author": "Niek Palm",
8+
"devDependencies": {
9+
"@semantic-release/changelog": "^5.0.1",
10+
"@semantic-release/commit-analyzer": "^8.0.1",
11+
"@semantic-release/exec": "^5.0.0",
12+
"@semantic-release/git": "^9.0.0",
13+
"@semantic-release/github": "^7.2.0",
14+
"@semantic-release/release-notes-generator": "^9.0.1",
15+
"conventional-changelog-conventionalcommits": "^4.5.0",
16+
"semantic-release": "^17.3.9"
17+
}
18+
}

0 commit comments

Comments
 (0)