Skip to content

Commit

Permalink
chore: add a release and deploy Github Action (#7385)
Browse files Browse the repository at this point in the history
The release job will do an npm publish and a github-release.
It's based on videojs/.github/github-release.yml.
The new version is published as `next` and requires to be promoted to
latest manually.

The deploy job, should do an aws s3 sync to upload the files to S3 for
us. It uses a Github Environment secrets. This is so that we can require
a user to approve the CDN upload.
  • Loading branch information
gkatsev authored Aug 23, 2021
1 parent 1f4d95b commit 957c6fa
Showing 1 changed file with 93 additions and 0 deletions.
93 changes: 93 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: release
on:
push:
tags:
# match semver versions
- "v[0-9]+.[0-9]+.[0-9]+"
# match semver pre-releases
- "v[0-9]+.[0-9]+.[0-9]+-*"
jobs:
release:
env:
NETLIFY_BASE: 'videojs-preview.netlify.app'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
# We neeed to fetch the entire history as conventional-changelog needs
# access to any number of git commits to build the changelog.
with:
fetch-depth: 0

- name: read node version from .nvmrc
run: echo ::set-output name=NVMRC::$(cat .nvmrc)
shell: bash
id: nvm

- name: setup node
uses: actions/setup-node@v2
with:
node-version: '${{steps.nvm.outputs.NVMRC}}'
cache: npm
# this line is required for the setup-node action to be able to run the npm publish below.
registry-url: 'https://registry.npmjs.org'

- name: npm install
run: npm i --prefer-offline --no-audit

# publish runs build for us via a prepublishOnly script
- name: npm release
run: npm publish --tag next
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: get current changelog
run: node -e "console.log(require('./build/current-changelog.js')())" > CHANGELOG-LATEST.md

- name: get dashed package version for netlify
run: echo ::set-output name=VERSION::$(node -e "process.stdout.write(require('./package.json').version.split('.').join('-'))")
id: get-version
shell: bash
if: env.NETLIFY_BASE != ''

- name: add netlify preview to release notes
run: |
echo "" >> CHANGELOG-LATEST.md
echo "[netlify preview for this version](https://v${{steps.get-version.outputs.VERSION}}--${{env.NETLIFY_BASE}})" >> CHANGELOG-LATEST.md
if: env.NETLIFY_BASE != ''

- name: Create Github release
uses: softprops/action-gh-release@v1
with:
body_path: CHANGELOG-LATEST.md
token: ${{github.token}}
prerelease: true
files: dist/*.zip
discussion_category_name: Releases

deploy:
needs: release
runs-on: ubuntu-latest
environment: Deploy
env:
VJS_VERSION: ${{ github.event.head_commit.message }}
S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
S3_ACCESS: ${{ secrets.AWS_S3_ACCESS }}
S3_KEY: ${{ secrets.AWS_S3_KEY }}
steps:
- name: setup node
uses: actions/setup-node@v2

- name: npm install video.js
run: npm install "video.js@$VJS_VERSION"

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_S3_SECRET }}
aws-region: us-east-1

- name: Copy files to the CDN with the AWS CLI
run: |
aws s3 sync node_modules/video.js/dist/ s3://${S3_KEY}/${VJS_VERSION}/ --acl ${S3_ACCESS}

0 comments on commit 957c6fa

Please sign in to comment.