Skip to content

v0.4.5

v0.4.5 #28

name: Release Electron App
on:
release:
types: [published]
permissions:
contents: write
env:
APP_NAME: SSW.YakShaver
NODE_VERSION: 20
jobs:
check-release:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.check.outputs.version }}
target: ${{ steps.check.outputs.target }}
steps:
- id: check
run: |
TAG="${{ github.event.release.tag_name }}"
TARGET="${{ github.event.release.target_commitish }}"
echo "version=${TAG#v}" >> $GITHUB_OUTPUT
echo "target=$TARGET" >> $GITHUB_OUTPUT
build-windows:
needs: check-release
runs-on: windows-latest
steps:
- uses: actions/checkout@v5
with:
ref: ${{ needs.check-release.outputs.target }}
- uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
cache-dependency-path: package-lock.json
# TODO: Remove this step once this PBI is done: https://github.com/SSWConsulting/SSW.YakShaver/issues/3095
- name: Create .env from secrets
shell: pwsh
env:
YOUTUBE_CLIENT_ID: ${{ secrets.YOUTUBE_CLIENT_ID }}
YOUTUBE_CLIENT_SECRET: ${{ secrets.YOUTUBE_CLIENT_SECRET }}
run: |
"YOUTUBE_CLIENT_ID=$env:YOUTUBE_CLIENT_ID" | Out-File -FilePath ".env" -Encoding utf8 -NoNewline
Add-Content -Path ".env" -Value "`nYOUTUBE_CLIENT_SECRET=$env:YOUTUBE_CLIENT_SECRET"
- name: Install dependencies
run: npm ci --prefer-offline
- name: Install UI dependencies
run: npm ci --prefer-offline
working-directory: src/ui
- name: Publish Windows app
run: npm run publish -- --win
env:
NODE_ENV: production
CI: true
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-macos:
needs: check-release
runs-on: macos-latest
steps:
- uses: actions/checkout@v5
with:
ref: ${{ needs.check-release.outputs.target }}
- uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm
cache-dependency-path: package-lock.json
# TODO: Remove this step once this PBI is done: https://github.com/SSWConsulting/SSW.YakShaver/issues/3095
- name: Create .env from secrets
env:
YOUTUBE_CLIENT_ID: ${{ secrets.YOUTUBE_CLIENT_ID }}
YOUTUBE_CLIENT_SECRET: ${{ secrets.YOUTUBE_CLIENT_SECRET }}
run: |
printf "YOUTUBE_CLIENT_ID=%s\nYOUTUBE_CLIENT_SECRET=%s\n" "$YOUTUBE_CLIENT_ID" "$YOUTUBE_CLIENT_SECRET" > .env
- name: Install dependencies
run: npm ci --prefer-offline
- name: Install UI dependencies
run: npm ci --prefer-offline
working-directory: src/ui
- name: Publish macOS app
run: npm run publish -- --mac
env:
NODE_ENV: production
CI: true
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}