Repository navigation
Build, test and release the framework from GitHub Actions - #53
Merged
Merged
Conversation
Add the Build and release workflow: every pull request and push to main builds the dacpac on Windows and runs the integration tests on Linux against that build; a push to main publishes the GitHub release v<version> when the version in .direct-version has none yet, with the notes from the matching section of ReleaseNotes.md and the dacpacs, the fabric folder and the Snowflake script as assets. The version files are checked for agreement before the build. Also lowercase the current and next folder names in the migration tests so they run on Linux, add the Snowflake edition to the 2.2.0 release notes, and describe the release flow in the README. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P8xKsmMZRuuoGUZqqpAmVK
The Release configuration treats warnings as errors, and the NuGet audit of the test project's transitive packages (SSH.NET via Testcontainers, System.Security.Cryptography.Pkcs via DacFx) reports vulnerabilities, so the restore failed on the Linux runner. The repository's own test runner uses Debug. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P8xKsmMZRuuoGUZqqpAmVK
The project's post-build script did not see the Release configuration on the runner and left the tracked, older dacpac in the next release folder, so the tests ran against DIRECT 2.1.0 and 15 of them failed on the missing procedures. The workflow now copies bin/Release to the next release folder itself and fails when the dacpac's DacMetadata version is not the version under test. The test results folder is addressed from the workspace root so the trx is uploaded. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P8xKsmMZRuuoGUZqqpAmVK
The migration test runs the pre-dacpac deployment script through sqlcmd, which the Linux runner does not have; 22 of 23 tests passed without it. Install go-sqlcmd 1.10.0 before the tests. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P8xKsmMZRuuoGUZqqpAmVK
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the
Build and releaseworkflow (.github/workflows/release.yml), the release pipeline of the framework..direct-version,Directory.Build.props,Releases.Direct_Framework/next/version.json, theDIRECT_VERSIONseed andDocumentation/ReleaseNotes.mdagree on the version, buildsDirect_Framework.sqlprojin Release, copies the output toReleases.Direct_Framework/next/db(the project's post-build script does not see the configuration of adotnet buildand leaves the tracked dacpac in place), checks that the dacpac carries the version under test, and uploads it.nextrelease folder with that build output and runs the Testcontainers based test project in Debug (asRunTestsSimple.ps1does; in Release the NuGet audit of transitive packages fails the restore), so the tests cover the build under test and not the dacpac checked into the repository.mainonly, or a manual run withpublishticked): when the releasev<version>does not exist yet, publishes it with the notes from the## Release <version>section ofReleaseNotes.md, a compare link to the previous tag, and the assetsDirect_Framework.dacpac,master.dacpac(as in v2.1.2),Direct_Fabric.zip(thefabricfolder) andDirect_Snowflake.sql. When the release exists the job ends with a notice, so ordinary merges do not fail.Pull requests run build and tests only. A release is therefore cut by merging the version bump; merging this PR publishes v2.2.0, since
.direct-versionis already 2.2.0 and no such release exists.Also:
MigrationTestsusedCurrentandNextas folder names; the folders are lowercase, which the Linux runner is strict about.Testing
🤖 Generated with Claude Code
https://claude.ai/code/session_01P8xKsmMZRuuoGUZqqpAmVK