Build All Platforms #59
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: Build All Platforms | |
| on: | |
| workflow_dispatch: | |
| jobs: | |
| build-windows: | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v3 | |
| with: | |
| dotnet-version: '10.0.x' | |
| - name: Restore dependencies | |
| run: dotnet restore | |
| working-directory: ./YALCY | |
| - name: Build | |
| run: dotnet build --configuration Release | |
| working-directory: ./YALCY | |
| - name: Publish | |
| run: dotnet publish -c Release -r win-x64 --self-contained=true --output ./publish | |
| working-directory: ./YALCY | |
| - name: Upload Windows Binaries | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-binaries | |
| path: ./YALCY/publish | |
| build-linux: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v3 | |
| with: | |
| dotnet-version: '10.0.x' | |
| - name: Restore dependencies | |
| run: dotnet restore | |
| working-directory: ./YALCY | |
| - name: Build | |
| run: dotnet build --configuration Release | |
| working-directory: ./YALCY | |
| - name: Publish | |
| run: dotnet publish -c Release -r linux-x64 --self-contained=true --output ./publish | |
| working-directory: ./YALCY | |
| - name: Upload Linux Binaries | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: linux-binaries | |
| path: ./YALCY/publish | |
| build-macos: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v3 | |
| with: | |
| dotnet-version: '10.0.x' | |
| - name: Restore dependencies | |
| run: dotnet restore | |
| working-directory: ./YALCY | |
| - name: Build | |
| run: dotnet build --configuration Release | |
| working-directory: ./YALCY | |
| - name: Publish | |
| run: dotnet publish -c Release -r osx-x64 --self-contained=true --output ./publish | |
| working-directory: ./YALCY | |
| - name: Upload macOS Binaries | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: macos-binaries | |
| path: ./YALCY/publish | |
| release: | |
| runs-on: ubuntu-latest | |
| needs: [build-windows, build-linux, build-macos] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Fetch all tags | |
| run: git fetch --tags | |
| - name: Determine next version | |
| id: next_version | |
| run: | | |
| latest_tag=$(git describe --tags --abbrev=0 || echo "v0.0.0") | |
| IFS='.' read -r major minor patch <<<"${latest_tag//v/}" | |
| new_patch=$((patch + 1)) | |
| next_version="v$major.$minor.$new_patch" | |
| echo "next_version=$next_version" >> $GITHUB_ENV | |
| - name: Create Release | |
| id: create_release | |
| uses: actions/create-release@v1 | |
| with: | |
| tag_name: ${{ env.next_version }} | |
| release_name: "YALCY ${{ env.next_version }}" | |
| body: | | |
| Automatically generated release. | |
| Includes: | |
| - Windows x64 binaries | |
| - Linux x64 binaries | |
| - macOS x64 binaries | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
| - name: Debug Print upload URL from create-release | |
| run: echo "Upload URL ${{ steps.create_release.outputs.upload_url }}" | |
| - name: Save upload URL for macOS release | |
| run: echo "${{ steps.create_release.outputs.upload_url }}" > upload_url.txt | |
| - name: Debug Print upload_url.txt contents | |
| run: cat upload_url.txt || echo "upload_url.txt is missing or empty!" | |
| - name: Upload upload URL | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: upload-url | |
| path: upload_url.txt | |
| - name: Download Windows Binaries | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: windows-binaries | |
| path: ./windows | |
| - name: Download Linux Binaries | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: linux-binaries | |
| path: ./linux | |
| - name: Zip Windows Binaries | |
| run: | | |
| cd ./windows | |
| zip -r ../windows-x64-binaries.zip . | |
| - name: Create Tarball for Linux Binaries | |
| run: | | |
| cd ./linux | |
| tar -czvf ../linux-x64-binaries.tar.gz . | |
| - name: Upload Windows Binaries to Release | |
| uses: actions/upload-release-asset@v1 | |
| with: | |
| upload_url: ${{ steps.create_release.outputs.upload_url }} | |
| asset_path: ./windows-x64-binaries.zip | |
| asset_name: windows-x64-binaries.zip | |
| asset_content_type: application/zip | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
| - name: Upload Linux Binaries to Release | |
| uses: actions/upload-release-asset@v1 | |
| with: | |
| upload_url: ${{ steps.create_release.outputs.upload_url }} | |
| asset_path: ./linux-x64-binaries.tar.gz | |
| asset_name: linux-x64-binaries.tar.gz | |
| asset_content_type: application/gzip | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
| create-dmg: | |
| runs-on: macos-latest | |
| needs: release | |
| steps: | |
| - name: Download macOS Binaries | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: macos-binaries | |
| path: ./macos | |
| - name: Download upload URL | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: upload-url | |
| path: . | |
| - name: Debug List files in workspace | |
| run: ls -la | |
| - name: Debug Print upload_url.txt | |
| run: cat upload_url.txt || echo "upload_url.txt is missing or empty" | |
| - name: Read upload URL | |
| run: echo "UPLOAD_URL=$(cat upload_url.txt)" >> $GITHUB_ENV | |
| - name: Debug Show stored UPLOAD_URL | |
| run: echo "UPLOAD_URL=${{ env.UPLOAD_URL }}" | |
| - name: Create DMG for macOS Binaries | |
| run: | | |
| hdiutil create -volname YALCY -srcfolder ./macos -ov -format UDZO ./macos-x64-binaries.dmg | |
| - name: Upload macOS DMG to Release | |
| uses: actions/upload-release-asset@v1 | |
| with: | |
| upload_url: ${{ env.UPLOAD_URL }} | |
| asset_path: ./macos-x64-binaries.dmg | |
| asset_name: macos-x64-binaries.dmg | |
| asset_content_type: application/x-apple-diskimage | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} |