ci: enhance release workflow to trigger and upload ISO artifacts #3
Workflow file for this run
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | name: Create/Update Release | |
| on: | |
| repository_dispatch: | |
| types: [trigger-release] | |
| push: | |
| branches: | |
| - main | |
| - dev | |
| workflow_dispatch: | |
| env: | |
| MAX_RETRIES: 3 | |
| RETRY_DELAY: 30 | |
| jobs: | |
| update-release: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up environment variables | |
| id: env | |
| run: | | |
| echo "VERSION=$(date +'%Y.%m.%d')" >> $GITHUB_ENV | |
| echo "BUILD_ID=$(date +'%Y%m%d_%H%M%S')" >> $GITHUB_ENV | |
| - name: Generate Release Notes | |
| run: | | |
| # Create release notes header | |
| echo "# π Release ${{ env.VERSION }}" > release_notes.md | |
| echo "" >> release_notes.md | |
| # Add recent changes | |
| echo "## π Recent Changes" >> release_notes.md | |
| echo "" >> release_notes.md | |
| git log --pretty=format:"- %s" -n 10 >> release_notes.md | |
| echo "" >> release_notes.md | |
| echo "" >> release_notes.md | |
| # Add package information if available | |
| if [ -f "updates.txt" ]; then | |
| echo "## π¦ Updated Packages" >> release_notes.md | |
| echo "\`\`\`" >> release_notes.md | |
| cat updates.txt >> release_notes.md | |
| echo "\`\`\`" >> release_notes.md | |
| echo "" >> release_notes.md | |
| fi | |
| # Add changelog if available | |
| if [ -f "changelog.txt" ]; then | |
| echo "## π Package Changelog" >> release_notes.md | |
| cat changelog.txt >> release_notes.md | |
| fi | |
| # Add build information | |
| echo "" >> release_notes.md | |
| echo "## π§ Build Information" >> release_notes.md | |
| echo "- Build ID: \`${{ env.BUILD_ID }}\`" >> release_notes.md | |
| echo "- Commit: \`$(git rev-parse HEAD)\`" >> release_notes.md | |
| echo "- Branch: \`${GITHUB_REF#refs/heads/}\`" >> release_notes.md | |
| echo "- Build Date: \`$(date -u '+%Y-%m-%d %H:%M:%S UTC')\`" >> release_notes.md | |
| - name: Update Release | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| # Check if release exists | |
| if gh release view "${{ env.VERSION }}" &>/dev/null; then | |
| # Update existing release | |
| gh release edit "${{ env.VERSION }}" \ | |
| --title "Release ${{ env.VERSION }}" \ | |
| --notes-file release_notes.md | |
| else | |
| # Create new release | |
| gh release create "${{ env.VERSION }}" \ | |
| --title "Release ${{ env.VERSION }}" \ | |
| --notes-file release_notes.md \ | |
| --target ${GITHUB_REF#refs/heads/} | |
| - name: Download ISO Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: iso-files | |
| path: ./iso-files | |
| - name: Update Release with ISO | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| # Check if release exists | |
| if gh release view "${{ env.VERSION }}" &>/dev/null; then | |
| # Update existing release and upload ISO | |
| gh release edit "${{ env.VERSION }}" \ | |
| --title "Release ${{ env.VERSION }}" \ | |
| --notes-file release_notes.md | |
| gh release upload "${{ env.VERSION }}" ./iso-files/* | |
| else | |
| # Create new release with ISO | |
| gh release create "${{ env.VERSION }}" \ | |
| --title "Release ${{ env.VERSION }}" \ | |
| --notes-file release_notes.md \ | |
| --target ${GITHUB_REF#refs/heads/} \ | |
| ./iso-files/* | |
| - name: Upload Build Logs | |
| if: always() | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: release-logs-${{ env.BUILD_ID }} | |
| path: release_notes.md | |
| retention-days: 7 | |
| - name: Notify on Failure | |
| if: failure() | |
| uses: actions/github-script@v6 | |
| with: | |
| script: | | |
| const issue = await github.rest.issues.create({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| title: 'β Release Update Failed', | |
| body: `The release update workflow failed on ${new Date().toISOString()}\n\nBuild ID: ${process.env.BUILD_ID}\n\nPlease check the workflow logs for details.` | |
| }); |