Automated Release Workflow #7
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
# GitHub Actions Workflow for Automated Releases | |
name: Automated Release Workflow | |
on: | |
schedule: | |
# Nightly builds at 6 PM PST every day | |
- cron: '0 2 * * *' | |
release: | |
types: | |
- created | |
- published | |
jobs: | |
nightly-build: | |
if: github.event_name == 'schedule' | |
runs-on: ubuntu-latest | |
name: Nightly Build and Release | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Set Up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 'lts/iron' # Specify your Node.js version | |
registry-url: 'https://registry.npmjs.org/' | |
- name: Install Dependencies | |
run: npm ci | |
- name: Bump Version for Nightly | |
id: bump_version | |
run: | | |
PACKAGE_VERSION=$(node -p "require('./package.json').version") | |
DATE=$(date +%Y%m%d) | |
NIGHTLY_VERSION=$(echo $PACKAGE_VERSION | awk -F. -v OFS=. '{$NF+=1; print}')-nightly-$DATE | |
echo "NIGHTLY_VERSION=${NIGHTLY_VERSION}" >> $GITHUB_ENV | |
- name: Update package.json | |
run: | | |
npm version $NIGHTLY_VERSION --no-git-tag-version | |
git config user.name "github-actions[bot]" | |
git config user.email "github-actions[bot]@users.noreply.github.com" | |
git add package.json | |
git commit -m "chore: bump version to $NIGHTLY_VERSION for nightly build" | |
- name: Push Changes | |
uses: ad-m/[email protected] | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
branch: ${{ github.ref }} | |
- name: Build Project | |
run: npm run build:prod | |
- name: Publish Nightly to NPM | |
run: | | |
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc | |
npm publish --access public --tag nightly | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
prerelease-build: | |
if: github.event.release.prerelease == true | |
runs-on: ubuntu-latest | |
name: Pre-release (Beta) Build and Publish | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Set Up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '16' # Specify your Node.js version | |
registry-url: 'https://registry.npmjs.org/' | |
- name: Install Dependencies | |
run: npm ci | |
- name: Build Project | |
run: npm run build:prod | |
- name: Publish Beta to NPM | |
run: | | |
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc | |
npm publish --access public --tag beta | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
stable-release-build: | |
if: github.event.release.prerelease == false | |
runs-on: ubuntu-latest | |
name: Stable Release Build and Publish | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Set Up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '16' # Specify your Node.js version | |
registry-url: 'https://registry.npmjs.org/' | |
- name: Install Dependencies | |
run: npm ci | |
- name: Build Project | |
run: npm run build:prod | |
- name: Publish to NPM | |
run: | | |
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc | |
npm publish --access public | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |