Open
Conversation
Contributor
|
This is excellent. It also unhooks my personal dockerhub to use ghcr.io, which is a good thing. |
23dec8b to
d30e019
Compare
Deleted 4 obsolete workflows:
- create-container-shadows.yml shadows component removed from repo
- create_socializer.yml ghosts.pandora.socializer dir no longer exists
- docker-image.yml referenced non-existent Dockerfile-universal-client
- login.yml standalone Docker Hub login test with no purpose
Moved 5 workflows:
- create_api.yml replaced by api.yml
- create-container-ui.yml replaced by frontend.yml
- create_pandora.yml replaced by pandora.yml
- create_client_universal.yml replaced by client-universal.yml
- mkdocs.yml replaced by docs.yml
Added 3 workflows
- client-windows.yml
- client-lite.yml
- release.yml
Current workflows:
- api.yml
* Docker build on every push/PR to src/Ghosts.Api/**, src/Ghosts.Domain/**,
src/Ghosts.Animator/**, src/Dockerfile-api.
* Pushes ghrc.io/{{repo}}/api with tags for commit/branch/release/latest
- frontend.yml
* Docker build on every push/PR to src/Ghosts.Frontend/**.
* Pushes ghrc.io/{{repo}}/frontend with tags for commit/branch/release/latest
- pandora.yml
* Docker build on every push/PR to src/Ghosts.Pandora/**.
* Pushes ghrc.io/{{repo}}/pandorda with tags for commit/branch/release/latest
- client-universal.yml (.NET 9)
* dotnet build CI on push/PR to src/Ghosts.Client.Universal/** or
src/Ghosts.Domain/**.
* On release: matrix publish across all four RIDs
(linux-x64, linux-x86, win-x64, win-x86), each zipped and uploaded
to the GitHub Release as a separate artifact.
- client-windows.yml (.NET Framework 4.6.2)
* NuGet restore + MSBuild CI on windows-latest, triggered by changes to
src/Ghosts.Client.Windows/** or src/Ghosts.Domain/**.
* On release: MSBuild path resolved once via vswhere, then built for both
x64 and x86 each zipped and uploaded to the GitHub Release.
- client-lite.yml (.NET 8)
* dotnet build CI on push/PR to src/Ghosts.Client.Lite/** or
src/Ghosts.Domain/**.
* On release: matrix publish across all four RIDs each zipped and uploaded
to the GitHub Release as a separate artifact.
- docs.yml
* mkdocs gh-deploy, triggered only when docs/** or mkdocs.yml changes.
- release.yml
* Watches conventional commits on master and opens/updates a release PR.
* When release PR is merged, release-please publishes the GitHub Release
and tag, which triggers all Docker pushes and binary uploads above.
Release-please config (release-please-config.json):
Single config file, release-type: node. Root package.json is the primary
version file. extra-files keeps all version locations in sync on each
release PR:
- CITATION.cff (yaml, also fixed stale 8.0.0 -> 9.0.0)
- src/Ghosts.Frontend/package.json (json)
- All .csproj files: AssemblyVersion/FileVersion/Version/ReleaseVersion
updated via generic regex, preserving the .0 fourth part
- src/Ghosts.Client.Windows/Properties/AssemblyInfo.cs (regex)
Update dependencies and versions to keep all projects building.
Contributor
Author
|
Alright, @sei-dupdyke this is ready for your review. As suspected I had to make some tweaks along the way. You can see what this will look like over on my fork.
(ignore the double changelog entries, I was too lazy to turn it to squash merges). Some choices I made along the way. Happy to switch back on any of these, just had to pick one or the other for now to get it working.
Highlighted above, there are some changes needed to repository settings to make fit with these workflows:
|
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.


Overview
This is a comprehensive update to this project's Github Actions (CI). The benefits are threefold:
ghcr.iobased on the project's namespace. The main 'upstream' will always beghcr.io/cmu-sei/ghosts/api:latest. But forks also get updated containers for testing (ex:ghcr.io/nblair2/ghosts/api:fix-somethinggets created if I push thefix/somethingbranch to my fork)Requirements
Warning
The following changes are required in the github repository settings:
RELEASE_TOKENUpdates
Deleted 4 obsolete workflows:
create-container-shadows.yml(shadows component removed from repo)create_socializer.yml(ghosts.pandora.socializer dir no longer exists)docker-image.yml(referenced non-existent Dockerfile-universal-client)login.yml(standalone Docker Hub login test with no purpose)Moved 5 workflows:
create_api.yml-->api.ymlcreate-container-ui.yml-->frontend.ymlcreate_pandora.yml-->pandora.ymlcreate_client_universal.yml-->client-universal.ymlmkdocs.yml-->docs.ymlAdded 3 workflows
client-windows.ymlclient-lite.ymlrelease.ymlUpdated all dependencies to allow each package to build
Current workflows:
api.ymlsrc/Ghosts.Api/**, src/Ghosts.Domain/**, src/Ghosts.Animator/**, src/Dockerfile-api.ghrc.io/{{username}}/GHOSTS/apiwith tags for commit/branch/release/latestfrontend.ymlsrc/Ghosts.Frontend/**.ghrc.io/{{username}}/GHOSTS/frontendwith tags for commit/branch/release/latestpandora.ymlsrc/Ghosts.Pandora/**.ghrc.io/{{username}}/GHOSTS/pandordawith tags for commit/branch/release/latestclient-universal.yml(.NET 9)src/Ghosts.Client.Universal/**, src/Ghosts.Domain/**.client-windows.yml(.NET Framework 4.6.2)src/Ghosts.Client.Windows/**, src/Ghosts.Domain/**.client-lite.yml(.NET 8)src/Ghosts.Client.Lite/**, src/Ghosts.Domain/**.docs.ymldocs/**, mkdocs.ymlchanges.release.ymlRelease-please config (release-please-config.json):
Single config file, release-type: node. Root package.json is the primary version file. extra-files keeps all version locations in sync on each release PR:
CITATION.cff(yaml, also fixed stale 8.0.0 -> 9.0.0)src/Ghosts.Frontend/package.json(json)*.csprojfiles: AssemblyVersion/FileVersion/Version/ReleaseVersion updated via generic regex, preserving the .0 fourth partsrc/Ghosts.Client.Windows/Properties/AssemblyInfo.cs