name: Dev Daily on: schedule: # GitHub Actions schedule uses UTC. 16:00 UTC = 北京时间次日 00:00 - cron: "0 16 * * *" workflow_dispatch: permissions: contents: write env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" FIXED_DEV_TAG: nightly-dev jobs: prepare: runs-on: ubuntu-latest outputs: dev_version: ${{ steps.meta.outputs.dev_version }} steps: - name: Check out git repository uses: actions/checkout@v5 with: fetch-depth: 0 - name: Install Node.js uses: actions/setup-node@v5 with: node-version: 24 cache: "npm" - name: Generate daily dev version id: meta shell: bash run: | set -euo pipefail BASE_VERSION="$(node -p "require('./package.json').version.split('-')[0]")" YEAR_2="$(TZ=Asia/Shanghai date +%y)" MONTH="$(TZ=Asia/Shanghai date +%-m)" DAY="$(TZ=Asia/Shanghai date +%-d)" DEV_VERSION="${BASE_VERSION}-dev.${YEAR_2}.${MONTH}.${DAY}" echo "dev_version=$DEV_VERSION" >> "$GITHUB_OUTPUT" echo "Dev version: $DEV_VERSION" - name: Ensure fixed prerelease exists env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} shell: bash run: | set -euo pipefail if gh release view "$FIXED_DEV_TAG" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then gh release edit "$FIXED_DEV_TAG" --repo "$GITHUB_REPOSITORY" --title "Daily Dev Build" --prerelease else gh release create "$FIXED_DEV_TAG" --repo "$GITHUB_REPOSITORY" --title "Daily Dev Build" --notes "固定开发版发布页(每日覆盖更新)" --prerelease fi dev-mac-arm64: needs: prepare runs-on: macos-14 steps: - name: Check out git repository uses: actions/checkout@v5 with: fetch-depth: 0 - name: Install Node.js uses: actions/setup-node@v5 with: node-version: 24 cache: "npm" - name: Install Dependencies run: npm install - name: Set dev version shell: bash run: npm version "${{ needs.prepare.outputs.dev_version }}" --no-git-tag-version --allow-same-version - name: Build Frontend & Type Check run: | npx tsc npx vite build - name: Package macOS arm64 dev artifacts run: | npx electron-builder --mac dmg --arm64 --publish never '--config.publish.channel=dev' '--config.artifactName=${productName}-dev-arm64.${ext}' - name: Upload macOS arm64 assets to fixed release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} shell: bash run: | gh release upload "$FIXED_DEV_TAG" release/* --repo "$GITHUB_REPOSITORY" --clobber dev-linux: needs: prepare runs-on: ubuntu-latest steps: - name: Check out git repository uses: actions/checkout@v5 with: fetch-depth: 0 - name: Install Node.js uses: actions/setup-node@v5 with: node-version: 24 cache: "npm" - name: Install Dependencies run: npm install - name: Set dev version shell: bash run: npm version "${{ needs.prepare.outputs.dev_version }}" --no-git-tag-version --allow-same-version - name: Build Frontend & Type Check run: | npx tsc npx vite build - name: Package Linux dev artifacts run: | npx electron-builder --linux --publish never '--config.publish.channel=dev' '--config.artifactName=${productName}-dev-linux.${ext}' - name: Upload Linux assets to fixed release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} shell: bash run: | gh release upload "$FIXED_DEV_TAG" release/* --repo "$GITHUB_REPOSITORY" --clobber dev-win-x64: needs: prepare runs-on: windows-latest steps: - name: Check out git repository uses: actions/checkout@v5 with: fetch-depth: 0 - name: Install Node.js uses: actions/setup-node@v5 with: node-version: 24 cache: "npm" - name: Install Dependencies run: npm install - name: Set dev version shell: bash run: npm version "${{ needs.prepare.outputs.dev_version }}" --no-git-tag-version --allow-same-version - name: Build Frontend & Type Check run: | npx tsc npx vite build - name: Package Windows x64 dev artifacts run: | npx electron-builder --win nsis --x64 --publish never '--config.publish.channel=dev' '--config.artifactName=${productName}-dev-x64-Setup.${ext}' - name: Upload Windows x64 assets to fixed release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} shell: bash run: | gh release upload "$FIXED_DEV_TAG" release/* --repo "$GITHUB_REPOSITORY" --clobber dev-win-arm64: needs: prepare runs-on: windows-latest steps: - name: Check out git repository uses: actions/checkout@v5 with: fetch-depth: 0 - name: Install Node.js uses: actions/setup-node@v5 with: node-version: 24 cache: "npm" - name: Install Dependencies run: npm install - name: Set dev version shell: bash run: npm version "${{ needs.prepare.outputs.dev_version }}" --no-git-tag-version --allow-same-version - name: Build Frontend & Type Check run: | npx tsc npx vite build - name: Package Windows arm64 dev artifacts run: | npx electron-builder --win nsis --arm64 --publish never '--config.publish.channel=dev-arm64' '--config.artifactName=${productName}-dev-arm64-Setup.${ext}' - name: Upload Windows arm64 assets to fixed release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} shell: bash run: | gh release upload "$FIXED_DEV_TAG" release/* --repo "$GITHUB_REPOSITORY" --clobber