Skip to content

Simplify build workflow and fix cleanup-release timing issues #96

Simplify build workflow and fix cleanup-release timing issues

Simplify build workflow and fix cleanup-release timing issues #96

name: Build and Publish Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
publish-linux:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Publish Linux
run: npm run publish:linux
env:
GH_TOKEN: ${{ secrets.atriordsa }}
publish-windows:
runs-on: windows-latest
needs: publish-linux
timeout-minutes: 30
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Publish Windows
run: npm run publish:win
env:
GH_TOKEN: ${{ secrets.atriordsa }}
publish-macos:
runs-on: macos-latest
needs: publish-windows
timeout-minutes: 30
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Publish macOS
run: npm run publish:mac
env:
GH_TOKEN: ${{ secrets.atriordsa }}
cleanup-release:
runs-on: ubuntu-latest
needs: [publish-linux, publish-windows, publish-macos]
if: always() && (needs.publish-linux.result == 'success' || needs.publish-windows.result == 'success' || needs.publish-macos.result == 'success')
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Wait for release creation
run: sleep 60
- name: Clean unwanted files from release
run: |
chmod +x ./bin/cleanup-release.sh
./bin/cleanup-release.sh
env:
GITHUB_TOKEN: ${{ secrets.atriordsa }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_REF_NAME: ${{ github.ref_name }}
upload-to-cos:
runs-on: ubuntu-latest
timeout-minutes: 180
needs: [cleanup-release]
if: always() && needs.cleanup-release.result == 'success'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Get release info
id: release
run: |
chmod +x ./bin/get-release-info.sh
./bin/get-release-info.sh
env:
GITHUB_TOKEN: ${{ secrets.atriordsa }}
GITHUB_REPOSITORY: ${{ github.repository }}
GITHUB_REF_NAME: ${{ github.ref_name }}
- name: Download release assets
run: |
chmod +x ./bin/download-assets.sh
./bin/download-assets.sh
env:
GITHUB_TOKEN: ${{ secrets.atriordsa }}
GITHUB_REPOSITORY: ${{ github.repository }}
RELEASE_ASSETS: ${{ steps.release.outputs.assets }}
RELEASE_TAG_NAME: ${{ steps.release.outputs.tag_name }}
- name: Create release index
run: node scripts/create-release-index.js
env:
TAG_NAME: ${{ steps.release.outputs.tag_name }}
CDN_URL: ${{ secrets.CDN_URL }}
GITHUB_TOKEN: ${{ secrets.atriordsa }}
- name: Upload to COS
run: npm run upload:cos
env:
COS_SECRET_ID: ${{ secrets.COS_SECRET_ID }}
COS_SECRET_KEY: ${{ secrets.COS_SECRET_KEY }}
COS_REGION: ${{ secrets.COS_REGION }}
COS_BUCKET: ${{ secrets.COS_BUCKET }}
COS_DOMAIN: ${{ secrets.COS_DOMAIN }}
TAG_NAME: ${{ steps.release.outputs.tag_name }}
- name: Display upload summary
run: |
chmod +x ./bin/display-upload-summary.sh
./bin/display-upload-summary.sh
env:
TAG_NAME: ${{ steps.release.outputs.tag_name }}
COS_DOMAIN: ${{ secrets.COS_DOMAIN }}
CDN_URL: ${{ secrets.CDN_URL }}