From bbd788c3ab3405f29efc6b1a53cad4b4cd6a5bef Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Tue, 14 May 2024 17:44:15 -0400 Subject: [PATCH] Add action --- .github/workflows/release.yml | 87 ++++++++++++++++++++++ GhostTranslations/GhostTranslations.csproj | 1 - 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..9b72f4d --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,87 @@ +name: Create Release + +on: + workflow_dispatch: + inputs: + prerelease: + description: Prerelease + type: boolean + bypassCheck: + description: Bypass Version Check + type: boolean + +env: + PROJ_USERNAME: MegaPiggy + PROJ_NAME: GhostTranslations + +jobs: + pre_job: + name: Check For Other Releases + outputs: + version: ${{ steps.out.outputs.version }} + exists: ${{ steps.out.outputs.exists }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: "actions/checkout@v3" + + - name: Fetch + run: git fetch + + - name: Read Manifest + id: read-manifest + run: echo "manifest=$(< ./${{ env.PROJ_NAME }}/manifest.json sed ':a;N;$!ba;s/\n/ /g')" >> $GITHUB_OUTPUT + + - name: Check For Release + id: check-tag + run: echo "exists=$(git ls-remote --exit-code --tags origin ${{ env.TAG }} >/dev/null 2>&1 && echo true || echo false)" >> $GITHUB_OUTPUT + env: + TAG: "v${{fromJson(steps.read-manifest.outputs.manifest).version}}" + + - name: Output Version Info + id: out + run: | + echo "version=${{fromJson(steps.read-manifest.outputs.manifest).version}}" >> $GITHUB_OUTPUT + echo "exists=${{steps.check-tag.outputs.exists}}" >> $GITHUB_OUTPUT + + - name: Error + if: ${{ steps.out.outputs.exists != 'false' && (!inputs.bypassCheck) }} + run: echo "::error file=manifest.json,title=Refusing to Release::Your mod was not released because there is already a release with the version in manifest.json" + release: + needs: pre_job + if: ${{ (needs.pre_job.outputs.version != '0.0.0') && (needs.pre_job.outputs.exists == 'false') || (inputs.bypassCheck) }} + name: Create Release + runs-on: windows-latest + steps: + - name: Checkout + uses: "actions/checkout@v3" + + - name: Setup .NET + uses: "actions/setup-dotnet@v3" + + - name: Remove .csproj.user + run: if (Test-Path ${{ env.PROJ_NAME }}/${{ env.PROJ_NAME }}.csproj.user) { rm ${{ env.PROJ_NAME }}/${{ env.PROJ_NAME }}.csproj.user } + + - name: Build Mod + run: dotnet build -c Release + + - name: Upload Artifact + uses: "actions/upload-artifact@v3" + with: + name: "${{ env.PROJ_USERNAME }}.${{ env.PROJ_NAME }}" + path: "${{ env.PROJ_NAME }}/bin/Release" + + - name: Zip For Release + run: 7z a ${{ env.PROJ_USERNAME }}.${{ env.PROJ_NAME }}.zip ./${{ env.PROJ_NAME }}/bin/Release/** + + - name: Create Release + uses: "ncipollo/release-action@v1" + with: + allowUpdates: true + commit: ${{ github.ref_name }} + tag: v${{ needs.pre_job.outputs.version }} + name: Version ${{ needs.pre_job.outputs.version }} + omitBodyDuringUpdate: true + artifacts: "${{ env.PROJ_USERNAME}}.${{ env.PROJ_NAME }}.zip" + draft: true + prerelease: ${{ inputs.prerelease }} \ No newline at end of file diff --git a/GhostTranslations/GhostTranslations.csproj b/GhostTranslations/GhostTranslations.csproj index adc18f9..a29ab62 100644 --- a/GhostTranslations/GhostTranslations.csproj +++ b/GhostTranslations/GhostTranslations.csproj @@ -12,7 +12,6 @@ MegaPiggy $(ProjectName) $(ProjectName) - Build $(Authors).$(MSBuildProjectName) portable