diff --git a/.github/workflows/build-on-commit.yml b/.github/workflows/build-on-commit.yml new file mode 100644 index 0000000..020e0a5 --- /dev/null +++ b/.github/workflows/build-on-commit.yml @@ -0,0 +1,36 @@ +name: Build NfcAime.Dll on Commit + +on: + push: + tags-ignore: + - '*' + +permissions: + contents: read + +jobs: + build: + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup NuGet + uses: NuGet/setup-nuget@v2 + + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v2 + + - name: Restore NuGet packages + run: nuget restore .\\PN532-Aime-Reader.sln + + - name: Build NfcAime.Dll (x64, no project references) + run: msbuild .\\src\\NfcAime.Dll\\NfcAime.Dll.csproj /p:Configuration=Release /p:Platform="Any CPU" /p:PlatformTarget=x64 /p:BuildProjectReferences=false + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: NfcAime.Dll-${{ github.sha }} + path: src/NfcAime.Dll/bin/Release/NfcAime.Dll.dll + if-no-files-found: error diff --git a/.github/workflows/release-on-tag.yml b/.github/workflows/release-on-tag.yml new file mode 100644 index 0000000..f00e4c2 --- /dev/null +++ b/.github/workflows/release-on-tag.yml @@ -0,0 +1,67 @@ +name: Build and Release NfcAime.Dll on Tag + +on: + push: + tags: + - '*' + +permissions: + contents: write + +jobs: + build-and-release: + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup NuGet + uses: NuGet/setup-nuget@v2 + + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v2 + + - name: Restore NuGet packages + run: nuget restore .\\PN532-Aime-Reader.sln + + - name: Build NfcAime.Dll (x64, no project references) + run: msbuild .\\src\\NfcAime.Dll\\NfcAime.Dll.csproj /p:Configuration=Release /p:Platform="Any CPU" /p:PlatformTarget=x64 /p:BuildProjectReferences=false + + - name: Generate commit notes since previous tag + shell: pwsh + run: | + $currentTag = "${{ github.ref_name }}" + $prevTag = git tag --sort=-creatordate | Where-Object { $_ -ne $currentTag } | Select-Object -First 1 + + if ($prevTag) { + $range = "$prevTag..$currentTag" + $commitTitle = "## Commits since $prevTag" + } else { + $range = $currentTag + $commitTitle = "## Commits in $currentTag" + } + + $commits = git log $range --pretty=format:"- %s (%h)" + if (-not $commits) { + $commits = "- No commits found." + } + + @" + ## Build Artifact + - NfcAime.Dll.dll (Release, PlatformTarget=x64) + + $commitTitle + $commits + "@ | Out-File -FilePath RELEASE_NOTES.md -Encoding utf8 + + - name: Create GitHub Release and upload DLL + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.ref_name }} + body_path: RELEASE_NOTES.md + files: | + src/NfcAime.Dll/bin/Release/NfcAime.Dll.dll + fail_on_unmatched_files: true