forked from shaka-project/shaka-player
-
Notifications
You must be signed in to change notification settings - Fork 0
147 lines (129 loc) · 5.06 KB
/
release-please.yaml
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
143
144
145
146
147
name: Release
on:
push:
branches:
- main
- v[0-9]*
jobs:
release:
runs-on: ubuntu-latest
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
steps:
# Create/update release PR
- uses: google-github-actions/release-please-action@v3
id: release
with:
# Required input to specify the release type (node package).
release-type: node
# Make sure we create the PR against the correct branch.
default-branch: ${{ github.ref_name }}
# If we didn't create a release, we may have created or updated a PR.
- uses: actions/checkout@v2
if: steps.release.outputs.release_created == false
- name: Custom update Player version
if: steps.release.outputs.release_created == false
run: |
# Check out the branch that release-please created, if it exists.
git fetch
git checkout release-please--branches--${{ github.ref_name }} || exit 0
# If it does exist, update lib/player.js in the PR branch, so that the
# -uncompiled tag remains in the player version in that context.
VERSION="v$(jq -r .version package.json)-uncompiled"
sed -e "s/^\\(shaka.Player.version =\\).*/\\1 '$VERSION';/" \
-i lib/player.js
git add lib/player.js
# Emulate the actions bot.
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
# Update the PR.
git commit --amend --no-edit
git push -f
# The jobs below are all conditional on a release having been created by
# someone merging the release PR. They all run in parallel.
tag-main:
runs-on: ubuntu-latest
needs: release
if: needs.release.outputs.release_created
steps:
- uses: actions/checkout@v2
with:
ref: main
- name: Tag the main branch
run: |
# Emulate the actions bot.
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
VERSION=${{ needs.release.outputs.tag_name }}
git tag -m "$VERSION-main" "$VERSION-main"
git push origin "$VERSION-main"
npm:
runs-on: ubuntu-latest
needs: release
if: needs.release.outputs.release_created
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
persist-credentials: false
- uses: actions/setup-node@v1
with:
node-version: 16
registry-url: 'https://registry.npmjs.org'
- run: npm ci
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- run: npm pack
- uses: svenstaro/upload-release-action@483c1e56f95e88835747b1c7c60581215016cbf2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ needs.release.outputs.tag_name }}
file: shaka-player-*.tgz
file_glob: true
overwrite: true
appspot:
runs-on: ubuntu-latest
needs: release
if: needs.release.outputs.release_created
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
persist-credentials: false
- uses: actions/setup-node@v1
with:
node-version: 16
registry-url: 'https://registry.npmjs.org'
- name: Compute appspot subdomain and promotion
run: |
# This is the same as the version tag, but with dots replaced by
# dashes. For example, v3.2.2 would have the subdomain v3-2-2.
APPSPOT_SUBDOMAIN=$( echo ${{ needs.release.outputs.tag_name }} | sed -e 's/\./-/g' )
echo APPSPOT_SUBDOMAIN=$APPSPOT_SUBDOMAIN >> $GITHUB_ENV
# "Promoting" an appspot deployment makes it the default which shows
# up on shaka-player-demo.appspot.com (no subdomain). This should be
# done for the latest release version from the latest release branch.
RELEASE_TAGS=$(git tag | grep ^v[0-9] | grep -Ev -- '-(master|main)')
LATEST_RELEASE=$(echo "$RELEASE_TAGS" | sort --version-sort | tail -1)
TAG_NAME=${{ needs.release.outputs.tag_name }}
if [[ "$TAG_NAME" == "$LATEST_RELEASE" ]]; then
echo APPSPOT_PROMOTE=true >> $GITHUB_ENV
else
echo APPSPOT_PROMOTE=false >> $GITHUB_ENV
fi
# Debug the decisions made here.
echo "Subdomain: $APPSPOT_SUBDOMAIN"
echo "Latest release: $LATEST_RELEASE"
echo "This release: $TAG_NAME"
echo "Promote: $APPSPOT_PROMOTE"
- uses: ./.github/workflows/custom-actions/prep-for-appspot
- uses: google-github-actions/auth@v0
with:
credentials_json: '${{ secrets.APPENGINE_DEPLOY_KEY }}'
- uses: google-github-actions/deploy-appengine@v0
with:
project_id: shaka-player-demo
version: ${{ env.APPSPOT_SUBDOMAIN }}
promote: ${{ env.APPSPOT_PROMOTE }}