Skip to content

Commit

Permalink
chore: update ci/cd
Browse files Browse the repository at this point in the history
* Replaced publish workflow with new release workflow modeled after
  other Chickensoft packages
* Updated auto_release workflow to use the new release workflow
* Updated GoDotTest csproj with fallback version number for release
  workflow
* Updated dictionary to recognize "devbuild" from fallback version
  number
  • Loading branch information
wlsnmrk committed Feb 8, 2025
1 parent 203123f commit fad6a39
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 102 deletions.
16 changes: 10 additions & 6 deletions .github/workflows/auto_release.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# This workflow will run whenever tests finish running. If tests pass, it will
# look at the last commit message to see if it contains the phrase
# "chore(deps): update all dependencies".
# "chore(deps)".
#
# If it finds a commit with that phrase, and the testing workflow has passed,
# it will automatically release a new version of the project by running the
# publish workflow.
# release workflow.
#
# The commit message phrase above is always used by renovatebot when opening
# PR's to update dependencies. If you have renovatebot enabled and set to
Expand All @@ -31,7 +31,10 @@ jobs:
should_release: ${{ steps.release.outputs.should_release }}
steps:
- name: 🧾 Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
uses: actions/checkout@v4
with:
lfs: true
submodules: 'recursive'

- name: 🧑‍🔬 Check Test Results
id: tests
Expand All @@ -43,7 +46,7 @@ jobs:
run: |
message=$(git log -1 --pretty=%B)
if [[ $message == *"chore(deps): update all dependencies"* ]]; then
if [[ $message == *"chore(deps)"* ]]; then
echo "changed=true" >> "$GITHUB_OUTPUT"
else
echo "changed=false" >> "$GITHUB_OUTPUT"
Expand All @@ -65,11 +68,12 @@ jobs:
echo "✋ Not creating a release."
fi
release:
uses: './.github/workflows/publish.yaml'
trigger_release:
uses: './.github/workflows/release.yaml'
needs: auto_release
if: needs.auto_release.outputs.should_release == 'true'
secrets:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
GH_BASIC: ${{ secrets.GH_BASIC }}
with:
bump: patch
95 changes: 0 additions & 95 deletions .github/workflows/publish.yaml

This file was deleted.

98 changes: 98 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: '📦 Release'
on:
# Make a release whenever the developer wants.
workflow_dispatch:
inputs:
bump:
type: string
description: "major, minor, or patch"
required: true
default: "patch"
# Make a release whenever we're told to by another workflow.
workflow_call:
secrets:
NUGET_API_KEY:
description: "API key for Nuget"
required: true
GH_BASIC:
description: "Personal access token (PAT) for GitHub"
required: true
# Input unifies with the workflow dispatch since it's identical.
inputs:
bump:
type: string
description: "major, minor, or patch"
required: true
default: "patch"
jobs:
release:
name: '📦 Release'
runs-on: ubuntu-latest
env:
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_NOLOGO: true
steps:
- name: 🧾 Checkout
uses: actions/checkout@v4
with:
lfs: true
submodules: 'recursive'
fetch-depth: 0 # So we can get all tags.

- name: 🔎 Read Current Project Version
id: current-version
uses: WyriHaximus/github-action-get-previous-tag@v1
with:
fallback: "0.0.0-devbuild"

- name: 🖨 Print Current Version
run: |
echo "Current Version: ${{ steps.current-version.outputs.tag }}"
- name: 🧮 Compute Next Version
uses: chickensoft-games/next-godot-csproj-version@v1
id: next-version
with:
project-version: ${{ steps.current-version.outputs.tag }}
godot-version: global.json
bump: ${{ inputs.bump }}

- uses: actions/setup-dotnet@v4
name: 💽 Setup .NET SDK
with:
# Use the .NET SDK from global.json in the root of the repository.
global-json-file: global.json

# Write version to file so .NET will build correct version.
- name: 📝 Write Version to File
uses: jacobtomlinson/gha-find-replace@v3
with:
find: "0.0.0-devbuild"
replace: ${{ steps.next-version.outputs.version }}
regex: false
include: Chickensoft.GoDotTest/Chickensoft.GoDotTest.csproj

- name: 📦 Build
working-directory: Chickensoft.GoDotTest
run: dotnet build -c Release

- name: 🔎 Get Package Path
id: package-path
run: |
package=$(find ./Chickensoft.GoDotTest/nupkg -name "*.nupkg")
echo "package=$package" >> "$GITHUB_OUTPUT"
echo "📦 Found package: $package"
- name: ✨ Create Release
env:
GITHUB_TOKEN: ${{ secrets.GH_BASIC }}
run: |
version="${{ steps.next-version.outputs.version }}"
gh release create --title "v$version" --generate-notes "$version" \
"${{ steps.package-path.outputs.package }}"
- name: 🛜 Publish to Nuget
run: |
dotnet nuget push "${{ steps.package-path.outputs.package }}" \
--api-key "${{ secrets.NUGET_API_KEY }}" \
--source "https://api.nuget.org/v3/index.json" --skip-duplicate
2 changes: 1 addition & 1 deletion Chickensoft.GoDotTest/Chickensoft.GoDotTest.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<DebugType>portable</DebugType>

<Title>Chickensoft.GoDotTest</Title>
<Version>1.5.10</Version>
<Version>0.0.0-devbuild</Version>
<Description>C# test runner for Godot. Run tests from the command line, collect code coverage, and debug tests in VSCode.
</Description>
<Copyright>© 2023 Chickensoft</Copyright>
Expand Down
1 change: 1 addition & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"contentfiles",
"coreclr",
"CYGWIN",
"devbuild",
"endregion",
"Gamedev",
"globaltool",
Expand Down

0 comments on commit fad6a39

Please sign in to comment.