feat(ci): update workflows for build and release process (#82) #3
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: Main Build | |
| on: | |
| push: | |
| branches: | |
| - main | |
| permissions: | |
| contents: write | |
| packages: write | |
| jobs: | |
| build-and-test: | |
| name: Build, Test and Pack | |
| uses: ./.github/workflows/build-and-test.yml | |
| with: | |
| create-pack: true | |
| create-draft-release: | |
| name: Create Draft Release | |
| needs: build-and-test | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Download NuGet packages | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: nuget-packages | |
| path: ./artifacts | |
| - name: Check if tag exists | |
| id: check-tag | |
| run: | | |
| TAG="v${{ needs.build-and-test.outputs.version }}" | |
| if git rev-parse "$TAG" >/dev/null 2>&1; then | |
| echo "exists=true" >> $GITHUB_OUTPUT | |
| echo "⚠️ Tag $TAG already exists" | |
| else | |
| echo "exists=false" >> $GITHUB_OUTPUT | |
| echo "✅ Tag $TAG does not exist yet" | |
| fi | |
| - name: Create/Update Draft Release | |
| if: steps.check-tag.outputs.exists == 'false' | |
| uses: release-drafter/release-drafter@v6 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| config-name: release-drafter.yml | |
| version: v${{ needs.build-and-test.outputs.version }} | |
| tag: v${{ needs.build-and-test.outputs.version }} | |
| name: Version ${{ needs.build-and-test.outputs.version }} | |
| publish: false | |
| prerelease: false | |
| - name: Upload packages to draft release | |
| if: steps.check-tag.outputs.exists == 'false' | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| TAG="v${{ needs.build-and-test.outputs.version }}" | |
| # Wait a moment for the release to be created | |
| sleep 2 | |
| # Upload artifacts to the draft release | |
| for file in ./artifacts/*.nupkg; do | |
| gh release upload "$TAG" "$file" --clobber | |
| done | |
| echo "✅ Uploaded NuGet packages to draft release" | |
| - name: Summary | |
| if: steps.check-tag.outputs.exists == 'false' | |
| run: | | |
| echo "✅ Draft release created/updated" >> $GITHUB_STEP_SUMMARY | |
| echo "Version: v${{ needs.build-and-test.outputs.version }}" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "### Next steps:" >> $GITHUB_STEP_SUMMARY | |
| echo "1. Go to [Releases](../../releases)" >> $GITHUB_STEP_SUMMARY | |
| echo "2. Review the draft release" >> $GITHUB_STEP_SUMMARY | |
| echo "3. Edit release notes if needed" >> $GITHUB_STEP_SUMMARY | |
| echo "4. Publish release to trigger production deployment" >> $GITHUB_STEP_SUMMARY | |
| - name: Release already exists | |
| if: steps.check-tag.outputs.exists == 'true' | |
| run: | | |
| echo "ℹ️ Release v${{ needs.build-and-test.outputs.version }} already exists" >> $GITHUB_STEP_SUMMARY | |
| echo "No action taken" >> $GITHUB_STEP_SUMMARY |