name: Create Release on: workflow_dispatch: inputs: tag_name: description: 'Tag name (e.g., v1.0.0)' required: true release_name: description: 'Release title' required: true body: description: 'Release notes' required: false jobs: build-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - name: Install run: npm ci - name: Build Linux run: npm run build:linux - name: Upload Linux artifacts uses: actions/upload-artifact@v4 with: name: linux-artifacts path: release/** build-windows: runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - name: Install run: npm ci - name: Build Windows run: npm run build:win - name: Upload Windows artifacts uses: actions/upload-artifact@v4 with: name: windows-artifacts path: release/** build-mac: runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - name: Install run: npm ci - name: Build Mac run: npm run build:mac - name: Upload Mac artifacts uses: actions/upload-artifact@v4 with: name: mac-artifacts path: release/** create_release: needs: [build-linux, build-windows, build-mac] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Download Linux artifacts uses: actions/download-artifact@v4 with: name: linux-artifacts path: release/ - name: Download Windows artifacts uses: actions/download-artifact@v4 with: name: windows-artifacts path: release/ - name: Download Mac artifacts uses: actions/download-artifact@v4 with: name: mac-artifacts path: release/ - name: Create GitHub release and upload artifacts uses: ncipollo/release-action@v1 with: tag: ${{ github.event.inputs.tag_name }} name: ${{ github.event.inputs.release_name }} body: ${{ github.event.inputs.body }} files: 'release/**'