Skip to content

Commit 23f1d20

Browse files
committed
fix: release process
1 parent d48c1f8 commit 23f1d20

File tree

3 files changed

+199
-113
lines changed

3 files changed

+199
-113
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121

2222
### Related issues, RFCs
2323

24-
<!--- Add here the number to the Github Issue or RFC that is related to this PR. -->
25-
<!-- **Issue number:** #123 -->
24+
<!--- Add here the number (i.e. #42) to the Github Issue or RFC that is related to this PR. -->
25+
<!--- If no issue is present the PR might get blocked and not be reviewed. -->
2626
**Issue number:**
2727

2828
### PR status

.github/workflows/make-release.yml

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
name: Make Release
2+
on:
3+
workflow_dispatch: {}
4+
concurrency:
5+
group: on-release-publish
6+
jobs:
7+
check-examples:
8+
runs-on: ubuntu-latest
9+
env:
10+
NODE_ENV: dev
11+
strategy:
12+
matrix:
13+
example: ["sam", "cdk"]
14+
fail-fast: false
15+
defaults:
16+
run:
17+
working-directory: examples/${{ matrix.example }}
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@v3
21+
- name: Setup NodeJS
22+
uses: actions/setup-node@v3
23+
with:
24+
node-version: 16
25+
cache: "npm"
26+
- name: Cache node modules
27+
id: cache-node-modules
28+
uses: actions/cache@v3
29+
with:
30+
path: "./examples/${{ matrix.example }}/node_modules"
31+
# Use the combo between example, name, and SHA-256 hash of all example lock files as cache key.
32+
# It's not possible to use the ${{ matrix.example }} key in the hashFiles fn so
33+
# if any of the lock files (wich should be fairly similar anyway) changes the cache is
34+
# invalidated/discarded for all.
35+
key: ${{ matrix.example }}-cache-examples-node-modules-${{ hashFiles('./examples/*/package-lock.json') }}
36+
- name: Install dependencies
37+
run: npm ci
38+
- name: Run tests
39+
run: npm t
40+
check-layer-publisher:
41+
runs-on: ubuntu-latest
42+
env:
43+
NODE_ENV: dev
44+
defaults:
45+
run:
46+
working-directory: layer-publisher
47+
steps:
48+
- name: Checkout code
49+
uses: actions/checkout@v3
50+
- name: Setup NodeJS
51+
uses: actions/setup-node@v3
52+
with:
53+
node-version: 16
54+
cache: "npm"
55+
- name: Cache node modules
56+
id: cache-node-modules
57+
uses: actions/cache@v3
58+
with:
59+
path: "./layer-publisher/node_modules"
60+
# Use the combo between example, name, and SHA-256 hash of the layer-publisher lock files as cache key.
61+
key: cache-layer-publisher-node-modules-${{ hashFiles('./layer-publisher/*/package-lock.json') }}
62+
- name: Install Layer publisher app
63+
run: npm ci
64+
run-unit-tests-on-utils:
65+
runs-on: ubuntu-latest
66+
env:
67+
NODE_ENV: dev
68+
strategy:
69+
matrix:
70+
version: [12, 14, 16]
71+
fail-fast: false
72+
steps:
73+
- name: Checkout code
74+
uses: actions/checkout@v3
75+
- name: Setup NodeJS
76+
uses: actions/setup-node@v3
77+
with:
78+
node-version: ${{ matrix.version }}
79+
cache: "npm"
80+
- name: Setup npm
81+
run: npm i -g npm@next-8
82+
- name: Cache node modules
83+
id: cache-node-modules
84+
uses: actions/cache@v3
85+
with:
86+
path: "./node_modules"
87+
# Use the combo between node version, name, and SHA-256 hash of the lock file as cache key so that
88+
# if one of them changes the cache is invalidated/discarded
89+
key: ${{ matrix.version }}-cache-utils-node-modules-${{ hashFiles('./package-lock.json') }}
90+
- name: Install dependencies
91+
# We can skip the install if there was a cache hit
92+
if: steps.cache-node-modules.outputs.cache-hit != 'true'
93+
# See https://github.com/npm/cli/issues/4475 to see why --foreground-scripts
94+
run: npm ci --foreground-scripts
95+
- name: Build packages
96+
# If there's a cache hit we still need to manually build the packages
97+
# this would otherwise have been done automatically as a part of the
98+
# postinstall npm hook
99+
if: steps.cache-node-modules.outputs.cache-hit == 'true'
100+
run: |
101+
npm run build -w packages/commons
102+
npm run build -w packages/logger & npm run build -w packages/tracer & npm run build -w packages/metrics
103+
- name: Lint
104+
run: npm run lint -w packages/commons -w packages/logger -w packages/tracer -w packages/metrics
105+
- name: Run unit tests
106+
run: npm t -w packages/commons -w packages/logger -w packages/tracer -w packages/metrics
107+
publish-npm:
108+
needs: [check-examples, check-layer-publisher, run-unit-tests-on-utils]
109+
runs-on: ubuntu-latest
110+
steps:
111+
- name: Checkout code
112+
uses: actions/checkout@v3
113+
with:
114+
# Here `token` is needed to avoid incurring in error GH006 Protected Branch Update Failed,
115+
token: ${{ secrets.GH_PUBLISH_TOKEN }}
116+
# While `fetch-depth` is used to allow the workflow to later commit & push the changes.
117+
fetch-depth: 0
118+
- name: Setup NodeJS
119+
uses: actions/setup-node@v3
120+
with:
121+
node-version: "16"
122+
cache: "npm"
123+
- name: Setup npm
124+
run: |
125+
npm i -g npm@next-8
126+
npm set "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}"
127+
- name: Cache node modules
128+
id: cache-node-modules
129+
uses: actions/cache@v3
130+
with:
131+
path: "./node_modules"
132+
# Use the combo between node version, name, and SHA-256 hash of the lock file as cache key so that
133+
# if one of them changes the cache is invalidated/discarded
134+
key: 16-cache-utils-node-modules-${{ hashFiles('./package-lock.json') }}
135+
- name: Build packages
136+
run: |
137+
npm run build -w packages/commons
138+
npm run build -w packages/logger & npm run build -w packages/tracer & npm run build -w packages/metrics
139+
- name: "Version and publish"
140+
env:
141+
GH_TOKEN: ${{ secrets.GH_PUBLISH_TOKEN }}
142+
run: |
143+
git config --global user.name 'github-actions[bot]'
144+
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
145+
git remote set-url origin https://x-access-token:${GH_TOKEN}@github.com/$GITHUB_REPOSITORY
146+
npx lerna version --conventional-commits --force-publish --yes
147+
npx lerna publish from-git --no-verify-access --yes
148+
publish-docs:
149+
needs: publish-npm
150+
runs-on: ubuntu-latest
151+
steps:
152+
- name: Checkout code
153+
uses: actions/checkout@v3
154+
- name: Set up Python
155+
uses: actions/setup-python@v4
156+
with:
157+
python-version: "3.8"
158+
- name: Set RELEASE_VERSION env var
159+
run: |
160+
RELEASE_VERSION=$(cat packages/commons/package.json | jq '.version' -r)
161+
echo "RELEASE_VERSION=${RELEASE_VERSION}" >> $GITHUB_ENV
162+
- name: Install doc generation dependencies
163+
run: |
164+
pip install --upgrade pip
165+
pip install -r docs/requirements.txt
166+
- name: Setup doc deploy
167+
run: |
168+
git config --global user.name Docs deploy
169+
git config --global user.email [email protected]
170+
- name: Build mkdocs site in "gh-pages" branch and push
171+
run: |
172+
rm -rf site
173+
VERSION="${{ env.RELEASE_VERSION }}"
174+
ALIAS="latest"
175+
echo "Publishing doc for version: $VERSION"
176+
mkdocs build
177+
mike deploy --push --update-aliases --no-redirect "$VERSION" "$ALIAS"
178+
# Set latest version as a default
179+
mike set-default --push latest
180+
- name: Build API docs
181+
run: |
182+
rm -rf api
183+
npm run docs-generateApiDoc
184+
- name: Release API docs to the released version
185+
uses: peaceiris/actions-gh-pages@v3
186+
with:
187+
github_token: ${{ secrets.GITHUB_TOKEN }}
188+
publish_dir: ./api
189+
keep_files: true
190+
destination_dir: ${{ env.RELEASE_VERSION }}/api
191+
- name: Release API docs to the "latest" version
192+
uses: peaceiris/actions-gh-pages@v3
193+
with:
194+
github_token: ${{ secrets.GITHUB_TOKEN }}
195+
publish_dir: ./api
196+
keep_files: true
197+
destination_dir: latest/api

.github/workflows/on-release-prod.yml

Lines changed: 0 additions & 111 deletions
This file was deleted.

0 commit comments

Comments
 (0)