Skip to content

Commit d90ad62

Browse files
authored
Merge pull request #3 from MegaPiggy/master
Add workflow release action
2 parents 97c6d25 + f9c9a0f commit d90ad62

1 file changed

Lines changed: 87 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
name: Create Release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
prerelease:
7+
description: Prerelease
8+
type: boolean
9+
bypassCheck:
10+
description: Bypass Version Check
11+
type: boolean
12+
13+
env:
14+
PROJ_USERNAME: dgarro
15+
PROJ_NAME: CustomShipLogModes
16+
17+
jobs:
18+
pre_job:
19+
name: Check For Other Releases
20+
outputs:
21+
version: ${{ steps.out.outputs.version }}
22+
exists: ${{ steps.out.outputs.exists }}
23+
runs-on: ubuntu-latest
24+
steps:
25+
- name: Checkout
26+
uses: "actions/checkout@v3"
27+
28+
- name: Fetch
29+
run: git fetch
30+
31+
- name: Read Manifest
32+
id: read-manifest
33+
run: echo "manifest=$(< ./${{ env.PROJ_NAME }}/manifest.json sed ':a;N;$!ba;s/\n/ /g')" >> $GITHUB_OUTPUT
34+
35+
- name: Check For Release
36+
id: check-tag
37+
run: echo "exists=$(git ls-remote --exit-code --tags origin ${{ env.TAG }} >/dev/null 2>&1 && echo true || echo false)" >> $GITHUB_OUTPUT
38+
env:
39+
TAG: ${{fromJson(steps.read-manifest.outputs.manifest).version}}
40+
41+
- name: Output Version Info
42+
id: out
43+
run: |
44+
echo "version=${{fromJson(steps.read-manifest.outputs.manifest).version}}" >> $GITHUB_OUTPUT
45+
echo "exists=${{steps.check-tag.outputs.exists}}" >> $GITHUB_OUTPUT
46+
47+
- name: Error
48+
if: ${{ steps.out.outputs.exists != 'false' && (!inputs.bypassCheck) }}
49+
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"
50+
release:
51+
needs: pre_job
52+
if: ${{ (needs.pre_job.outputs.version != '0.0.0') && (needs.pre_job.outputs.exists == 'false') || (inputs.bypassCheck) }}
53+
name: Create Release
54+
runs-on: windows-latest
55+
steps:
56+
- name: Checkout
57+
uses: "actions/checkout@v3"
58+
59+
- name: Setup .NET
60+
uses: "actions/setup-dotnet@v3"
61+
62+
- name: Remove .csproj.user
63+
run: if (Test-Path ${{ env.PROJ_NAME }}/${{ env.PROJ_NAME }}.csproj.user) { rm ${{ env.PROJ_NAME }}/${{ env.PROJ_NAME }}.csproj.user }
64+
65+
- name: Build Mod
66+
run: dotnet build -c Release
67+
68+
- name: Upload Artifact
69+
uses: "actions/upload-artifact@v3"
70+
with:
71+
name: "${{ env.PROJ_USERNAME }}.${{ env.PROJ_NAME }}"
72+
path: "${{ env.PROJ_NAME }}/bin/Release"
73+
74+
- name: Zip For Release
75+
run: 7z a ${{ env.PROJ_USERNAME }}.${{ env.PROJ_NAME }}.zip ./${{ env.PROJ_NAME }}/bin/Release/**
76+
77+
- name: Create Release
78+
uses: "ncipollo/release-action@v1"
79+
with:
80+
allowUpdates: true
81+
commit: ${{ github.ref_name }}
82+
tag: ${{ needs.pre_job.outputs.version }}
83+
name: ${{ needs.pre_job.outputs.version }}
84+
omitBodyDuringUpdate: true
85+
artifacts: "${{ env.PROJ_USERNAME}}.${{ env.PROJ_NAME }}.zip"
86+
draft: true
87+
prerelease: ${{ inputs.prerelease }}

0 commit comments

Comments
 (0)