name: Build and Release on: push: tags: - "v*" workflow_dispatch: inputs: version: description: "Version number (e.g., 1.0.0)" required: false type: string jobs: build-windows: runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "24" cache: "yarn" - name: Install dependencies run: yarn install --frozen-lockfile - name: Build application run: yarn build - name: Build Windows installer run: yarn dist:win env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: windows-builds path: | dist/*.exe dist/*.zip retention-days: 30 build-macos: runs-on: macos-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "24" cache: "yarn" - name: Install dependencies run: yarn install --frozen-lockfile - name: Build application run: yarn build - name: Build macOS installer run: yarn dist:mac env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: macos-builds path: | dist/*.dmg dist/*.zip retention-days: 30 release: needs: [build-windows, build-macos] runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') permissions: contents: write steps: - name: Download Windows artifacts uses: actions/download-artifact@v4 with: name: windows-builds path: dist - name: Download macOS artifacts uses: actions/download-artifact@v4 with: name: macos-builds path: dist - name: Create Release uses: softprops/action-gh-release@v2 with: name: ToonFlow ${{ github.ref_name }} draft: false prerelease: ${{ contains(github.ref_name, 'beta') || contains(github.ref_name, 'alpha') }} generate_release_notes: true files: | dist/*.exe dist/*.zip dist/*.dmg env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}