Add CI workflows for tag-based release publishing and per-commit DLL builds #1

Merged
Copilot merged 3 commits from copilot/add-action-for-tag-and-commit into master 2026-05-18 13:06:50 -04:00
Copilot commented 2026-05-18 13:06:04 -04:00 (Migrated from github.com)

This PR adds GitHub Actions automation for NfcAime.Dll so tag pushes produce a release artifact with commit history since the previous release, while regular commits run build-only validation without publishing.

  • Tag-triggered release pipeline

    • New workflow: .github/workflows/release-on-tag.yml
    • Triggers on tag push (on.push.tags: ['*'])
    • Builds src/NfcAime.Dll/NfcAime.Dll.csproj in Release with PlatformTarget=x64
    • Disables project-reference builds (BuildProjectReferences=false)
    • Creates/updates GitHub Release and uploads NfcAime.Dll.dll
  • Release notes with delta commits

    • Computes previous tag and generates release notes from prevTag..currentTag
    • Adds commit list into release body (fallback for first tag supported)
  • Per-commit build-only workflow

    • New workflow: .github/workflows/build-on-commit.yml
    • Triggers on non-tag push
    • Builds the same DLL target/configuration but does not publish a release
    • Uploads built DLL as workflow artifact for inspection/use
  • Workflow security/permissions

    • Explicit permissions set per workflow
      • release workflow: contents: write (required for release creation/upload)
      • commit-build workflow: contents: read
- 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
This PR adds GitHub Actions automation for `NfcAime.Dll` so tag pushes produce a release artifact with commit history since the previous release, while regular commits run build-only validation without publishing. - **Tag-triggered release pipeline** - New workflow: `.github/workflows/release-on-tag.yml` - Triggers on tag push (`on.push.tags: ['*']`) - Builds `src/NfcAime.Dll/NfcAime.Dll.csproj` in `Release` with `PlatformTarget=x64` - Disables project-reference builds (`BuildProjectReferences=false`) - Creates/updates GitHub Release and uploads `NfcAime.Dll.dll` - **Release notes with delta commits** - Computes previous tag and generates release notes from `prevTag..currentTag` - Adds commit list into release body (fallback for first tag supported) - **Per-commit build-only workflow** - New workflow: `.github/workflows/build-on-commit.yml` - Triggers on non-tag `push` - Builds the same DLL target/configuration but does not publish a release - Uploads built DLL as workflow artifact for inspection/use - **Workflow security/permissions** - Explicit `permissions` set per workflow - release workflow: `contents: write` (required for release creation/upload) - commit-build workflow: `contents: read` ```yaml - 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 ```
copilot-pull-request-reviewer[bot] (Migrated from github.com) reviewed 2026-05-18 13:09:21 -04:00
copilot-pull-request-reviewer[bot] (Migrated from github.com) left a comment

Pull request overview

This PR introduces GitHub Actions CI automation to build NfcAime.Dll on every commit and to publish a GitHub Release (including generated commit delta notes) when a tag is pushed.

Changes:

  • Added a tag-triggered workflow to build NfcAime.Dll and create/update a GitHub Release with the built DLL attached.
  • Added a push-triggered (non-tag) workflow to build NfcAime.Dll and upload it as a workflow artifact.
  • Added release-note generation logic that summarizes commits since the previous tag (with a first-release fallback).

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
.github/workflows/release-on-tag.yml Builds on tag pushes, generates commit-based release notes, creates a GitHub Release, and uploads the DLL artifact.
.github/workflows/build-on-commit.yml Builds on non-tag pushes and uploads the built DLL as a workflow artifact for validation/inspection.
Comments suppressed due to low confidence (1)

.github/workflows/release-on-tag.yml:45

  • In the first-tag fallback branch, $range = $currentTag makes git log $range include the full history reachable from that tag (not just commits “in” the tag). The generated heading ## Commits in $currentTag is misleading; consider renaming it to something like “Commits up to …” or adjusting the range logic if you want a different behavior for the initial release.
            $commitTitle = "## Commits since $prevTag"
          } else {
            $range = $currentTag
            $commitTitle = "## Commits in $currentTag"
          }

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

## Pull request overview This PR introduces GitHub Actions CI automation to build `NfcAime.Dll` on every commit and to publish a GitHub Release (including generated commit delta notes) when a tag is pushed. **Changes:** - Added a tag-triggered workflow to build `NfcAime.Dll` and create/update a GitHub Release with the built DLL attached. - Added a push-triggered (non-tag) workflow to build `NfcAime.Dll` and upload it as a workflow artifact. - Added release-note generation logic that summarizes commits since the previous tag (with a first-release fallback). ### Reviewed changes Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments. | File | Description | | ---- | ----------- | | .github/workflows/release-on-tag.yml | Builds on tag pushes, generates commit-based release notes, creates a GitHub Release, and uploads the DLL artifact. | | .github/workflows/build-on-commit.yml | Builds on non-tag pushes and uploads the built DLL as a workflow artifact for validation/inspection. | <details> <summary>Comments suppressed due to low confidence (1)</summary> **.github/workflows/release-on-tag.yml:45** * In the first-tag fallback branch, `$range = $currentTag` makes `git log $range` include the full history reachable from that tag (not just commits “in” the tag). The generated heading `## Commits in $currentTag` is misleading; consider renaming it to something like “Commits up to …” or adjusting the range logic if you want a different behavior for the initial release. ``` $commitTitle = "## Commits since $prevTag" } else { $range = $currentTag $commitTitle = "## Commits in $currentTag" } ``` </details> --- 💡 <a href="/zhicheng233/PN532-Aime-Reader/new/master?filename=.github/instructions/*.instructions.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add Copilot custom instructions</a> for smarter, more guided reviews. <a href="https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn how to get started</a>.
@@ -0,0 +26,4 @@
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
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2026-05-18 13:09:21 -04:00

Same issue as the release workflow: /p:Platform="Any CPU" likely won’t match the project’s Release|AnyCPU condition in NfcAime.Dll.csproj. This can lead to a non-Release configuration being effectively used and/or output landing somewhere other than the expected bin/Release path. Remove /p:Platform or change it to /p:Platform=AnyCPU.

Same issue as the release workflow: `/p:Platform="Any CPU"` likely won’t match the project’s `Release|AnyCPU` condition in `NfcAime.Dll.csproj`. This can lead to a non-Release configuration being effectively used and/or output landing somewhere other than the expected `bin/Release` path. Remove `/p:Platform` or change it to `/p:Platform=AnyCPU`.
@@ -0,0 +28,4 @@
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
copilot-pull-request-reviewer[bot] (Migrated from github.com) commented 2026-05-18 13:09:20 -04:00

The MSBuild invocation passes /p:Platform="Any CPU", but NfcAime.Dll.csproj uses AnyCPU (no space) in its configuration conditions (e.g., Release|AnyCPU). With Platform="Any CPU", the intended Release property group may not apply (Optimize/DefineConstants/OutputPath), and the built DLL may not match the expected settings. Prefer removing /p:Platform entirely (letting the project default to AnyCPU) or set /p:Platform=AnyCPU.

This issue also appears on line 41 of the same file.

The MSBuild invocation passes `/p:Platform="Any CPU"`, but `NfcAime.Dll.csproj` uses `AnyCPU` (no space) in its configuration conditions (e.g., `Release|AnyCPU`). With `Platform="Any CPU"`, the intended Release property group may not apply (Optimize/DefineConstants/OutputPath), and the built DLL may not match the expected settings. Prefer removing `/p:Platform` entirely (letting the project default to AnyCPU) or set `/p:Platform=AnyCPU`. This issue also appears on line 41 of the same file.
Sign in to join this conversation.