Skip to content

Create Release

Create Release #112

Workflow file for this run

name: Release & Deploy
on:
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
ref: main
- name: Semver Info
id: semver
uses: cdrani/action-semantic-release-info@fix/current-branch
- name: Update Version
if: steps.semver.outputs.version != ''
run: |
# Package
jq --arg version "${{ steps.semver.outputs.version }}" \
'.version = $version' package.json > tmp && \
mv tmp package.json
# Chrome
jq --arg version "${{ steps.semver.outputs.version }}" \
'.version = $version' src/manifest.chrome.json > tmp && \
mv tmp src/manifest.chrome.json
# Firefox
jq --arg version "${{ steps.semver.outputs.version }}" \
'.version = $version' src/manifest.firefox.json > tmp && \
mv tmp src/manifest.firefox.json
- name: Commit Changes
if: steps.semver.outputs.version != ''
run: |
git config --local user.name "Github Action"
git config user.email "action@github.com"
git diff --quiet || git commit -a -m "docs: bump version to ${{ steps.semver.outputs.git_tag }}"
git tag ${{ steps.semver.outputs.git_tag }}
- name: Push Changes
if: steps.semver.outputs.version != ''
uses: ad-m/github-push-action@master
with:
branch: ${{ github.ref }}
tags: true
- name: Nightly Merge
if: steps.semver.outputs.version != ''
uses: robotology/gh-action-nightly-merge@v1.5.0
with:
allow_ff: true
ff_only: true
stable_branch: 'main'
development_branch: 'develop'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v4
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Build Distributable Package
run: pnpm build
- name: Archive Extension Files
if: steps.semver.outputs.version != ''
run: |
function create_zip {
# $1: target browser
if [ "$1" == "firefox" ]; then
jq '
.background = {
"type": "module",
"scripts": ["background.js"]
} |
.browser_specific_settings = {
"gecko": {
"id": "chorus@cdrani.dev",
"strict_min_version": "112.0"
}
}
' dist/manifest.json > dist/manifest.temp.json && mv dist/manifest.temp.json dist/manifest.json
fi
zip -r "chorus-$1.zip" dist/*
}
create_zip chrome
create_zip firefox
- name: Create Release Archive & Notes
if: steps.semver.outputs.version != ''
uses: ncipollo/release-action@v1.12.0
with:
tag: ${{ steps.semver.outputs.git_tag }}
name: ${{ steps.semver.outputs.git_tag }}
body: ${{ steps.semver.outputs.notes }}
artifacts: 'chorus-chrome.zip,chorus-firefox.zip'
- name: Chrome Upload & Publish
if: steps.semver.outputs.version != ''
uses: cdrani/chrome-extension-upload@ci/silent-update-fail
with:
silent-fail: true
file-path: chorus-chrome.zip
client-id: ${{ secrets.CLIENT_ID }}
extension-id: ${{ secrets.EXTENSION_ID }}
client-secret: ${{ secrets.CLIENT_SECRET }}
refresh-token: ${{ secrets.REFRESH_TOKEN }}
- name: FireFox Upload & Publish
if: steps.semver.outputs.version != ''
uses: yayuyokitano/firefox-addon@v0.0.3-alpha
with:
guid: 'chorus@cdrani.dev'
xpi_path: chorus-firefox.zip
api_key: ${{ secrets.AMO_ISSUER }}
api_secret: ${{ secrets.AMO_SECRET }}