-
Notifications
You must be signed in to change notification settings - Fork 13
142 lines (121 loc) · 4.27 KB
/
publish-master.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: Publish Teraslice NPM Packages, Documents and Docker Image, Create Release
on:
pull_request:
branches:
- master
types:
- closed
jobs:
build-release:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
- name: Register npm token
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
- name: Verify npm authentication
run: npm whoami
# we login to docker to publish new teraslice image
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Check out code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
cache: 'yarn'
- name: Install and build packages
run: yarn && yarn setup
- name: Verify npm authentication within yarn
env:
CI_NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: yarn npm whoami
- name: Publish to npm
env:
CI_NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: yarn ts-scripts publish -t latest npm
- name: Publish to docker
run: yarn ts-scripts publish -t dev docker
create-release-on-teraslice-bump:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
needs: build-release
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Install semver-compare-cli
run: yarn && yarn add semver-compare-cli
- name: Check for teraslice version update
id: version_check
run: |
CURRENT_VERSION=$(jq -r .version package.json)
echo "current version:" $CURRENT_VERSION
NPM_VERSION=$(yarn npm info teraslice --json | jq -r '.["dist-tags"].latest')
echo "npm version:" $NPM_VERSION
if ./node_modules/.bin/semver-compare $CURRENT_VERSION gt $NPM_VERSION; then
echo "Teraslice version updated from $NPM_VERSION to $CURRENT_VERSION, creating release"
echo "version_updated=true" >> $GITHUB_OUTPUT
echo "tag: v$CURRENT_VERSION"
echo "tag=v$CURRENT_VERSION" >> $GITHUB_OUTPUT
else
echo "Teraslice version not updated, will not release"
echo "version_updated=false" >> $GITHUB_OUTPUT
fi
- name: Generate a token
if: steps.version_check.outputs.version_updated == 'true'
id: generate-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.RELEASES_APP_ID }}
private-key: ${{ secrets.RELEASES_PRIVATE_KEY }}
- name: Create Release
if: steps.version_check.outputs.version_updated == 'true'
uses: softprops/action-gh-release@v2
with:
token: ${{ steps.generate-token.outputs.token }}
prerelease: true
tag_name: ${{ steps.version_check.outputs.tag }}
name: ${{ steps.version_check.outputs.tag }}
generate_release_notes: true
build-docs:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
needs: build-release
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
cache: 'yarn'
- name: Build documentation
run: yarn && ./scripts/build-documentation.sh # output in website/build
- name: Check Output
run: find ./website/build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./website/build
publish-docs:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
needs: build-docs
permissions:
pages: write # to deploy to Pages
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4