From f07fd7f6416149c2766ac91f30b4272ccf127c5d Mon Sep 17 00:00:00 2001 From: Oliver Booth Date: Wed, 17 Apr 2024 14:48:17 +0100 Subject: [PATCH] ci: add automatic tagged release --- .github/workflows/prerelease.yml | 66 ++++++++++++++++++++++++++++++++ .github/workflows/release.yml | 66 ++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 .github/workflows/prerelease.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml new file mode 100644 index 0000000..9c88bb6 --- /dev/null +++ b/.github/workflows/prerelease.yml @@ -0,0 +1,66 @@ +name: Tagged Pre-Release + +on: + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+-*" + +jobs: + release: + name: "Tagged Pre-Release" + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 8.0.x + + - name: Restore dependencies + run: dotnet restore + + - name: Get version from tag + id: get_version + run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/v} + + - name: Build and Publish + run: | + dotnet publish -c Release -p PublishSingleFile=true -p:VersionSuffix='prerelease' -p:BuildNumber=${{ github.run_number }} -o ./publish/win-x64 -r win-x64 + dotnet publish -c Release -p PublishSingleFile=true -p:VersionSuffix='prerelease' -p:BuildNumber=${{ github.run_number }} -o ./publish/win-x86 -r win-x86 + dotnet publish -c Release -p PublishSingleFile=true -p:VersionSuffix='prerelease' -p:BuildNumber=${{ github.run_number }} -o ./publish/linux-x64 -r linux-x64 + dotnet publish -c Release -p PublishSingleFile=true -p:VersionSuffix='prerelease' -p:BuildNumber=${{ github.run_number }} -o ./publish/osx-x64 -r osx-x64 + + - name: Upload build artifacts + uses: actions/upload-artifact@v3 + with: + name: publish + path: publish/ + + - name: Create Release + id: create_release + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + prerelease: false + + - name: Upload Release Assets + id: upload-release-assets + uses: actions/upload-release-asset@v1 + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: | + ./publish/win-x64/fdup.exe + ./publish/win-x86/fdup.exe + ./publish/linux-x64/fdup + ./publish/osx-x64/fdup + asset_name: | + fdup-${{ steps.get_version.outputs.VERSION }}-win-x64.exe + fdup-${{ steps.get_version.outputs.VERSION }}-win-x86.exe + fdup-${{ steps.get_version.outputs.VERSION }}-linux_x64 + fdup-${{ steps.get_version.outputs.VERSION }}-macos_x64 + asset_content_type: application/octet-stream + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..90d4c59 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,66 @@ +name: Tagged Release + +on: + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+" + +jobs: + release: + name: "Tagged Release" + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 8.0.x + + - name: Restore dependencies + run: dotnet restore + + - name: Get version from tag + id: get_version + run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/v} + + - name: Build and Publish + run: | + dotnet publish -c Release -p PublishSingleFile=true -o ./publish/win-x64 -r win-x64 + dotnet publish -c Release -p PublishSingleFile=true -o ./publish/win-x86 -r win-x86 + dotnet publish -c Release -p PublishSingleFile=true -o ./publish/linux-x64 -r linux-x64 + dotnet publish -c Release -p PublishSingleFile=true -o ./publish/osx-x64 -r osx-x64 + + - name: Upload build artifacts + uses: actions/upload-artifact@v3 + with: + name: publish + path: publish/ + + - name: Create Release + id: create_release + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + prerelease: false + + - name: Upload Release Assets + id: upload-release-assets + uses: actions/upload-release-asset@v1 + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: | + ./publish/win-x64/fdup.exe + ./publish/win-x86/fdup.exe + ./publish/linux-x64/fdup + ./publish/osx-x64/fdup + asset_name: | + fdup-${{ steps.get_version.outputs.VERSION }}-win-x64.exe + fdup-${{ steps.get_version.outputs.VERSION }}-win-x86.exe + fdup-${{ steps.get_version.outputs.VERSION }}-linux_x64 + fdup-${{ steps.get_version.outputs.VERSION }}-macos_x64 + asset_content_type: application/octet-stream + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}