test: Deflake UI test teardown (#5466) #864
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: | |
# This command instructs the tool to use the config and manifest | |
# files below to decide the next version and the SHA of the previous | |
# release (used to compute the changelog). This is necessary if | |
# there are more than 250 commits between main branch releases. | |
command: manifest | |
config-file: .release-please-config.json | |
manifest-file: .release-please-manifest.json | |
# 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@v3 | |
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 does not exist, FAIL! | |
git fetch | |
git checkout release-please--branches--${{ github.ref_name }}--components--shaka-player || exit 1 | |
# 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 && endsWith(needs.release.outputs.tag_name, '.0') == false | |
steps: | |
- uses: actions/checkout@v3 | |
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@v3 | |
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@v3 | |
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 }} | |
auto-branch: | |
runs-on: ubuntu-latest | |
needs: release | |
if: needs.release.outputs.release_created && endsWith(needs.release.outputs.tag_name, '.0') | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Create release branch | |
run: | | |
TAG=${{ needs.release.outputs.tag_name }} | |
BRANCH=$(echo "$TAG" | sed -e 's/\.0$/.x/') | |
git push origin HEAD:"$BRANCH" |