-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
26 changed files
with
2,044 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
# 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". | ||
# | ||
# 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. | ||
# | ||
# 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 | ||
# automatically merge in dependency updates, this can automatically release and | ||
# publish the updated version of the project. | ||
# | ||
# You can disable this action by setting the DISABLE_AUTO_RELEASE repository | ||
# variable to true. | ||
|
||
name: '🦾 Auto-Release' | ||
on: | ||
workflow_run: | ||
workflows: ["🚥 Tests"] | ||
branches: | ||
- main | ||
types: | ||
- completed | ||
|
||
jobs: | ||
auto_release: | ||
name: 🦾 Auto-Release | ||
runs-on: ubuntu-latest | ||
outputs: | ||
should_release: ${{ steps.release.outputs.should_release }} | ||
steps: | ||
- name: 🧾 Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
# Use your GitHub Personal Access Token variable here. | ||
token: ${{ secrets.GH_BASIC }} | ||
lfs: true | ||
submodules: 'recursive' | ||
|
||
- name: 🧑🔬 Check Test Results | ||
id: tests | ||
run: | | ||
echo "passed=${{ github.event.workflow_run.conclusion == 'success' }}" >> "$GITHUB_OUTPUT" | ||
- name: 📄 Check If Dependencies Changed | ||
id: deps | ||
run: | | ||
message=$(git log -1 --pretty=%B) | ||
if [[ $message == *"chore(deps)"* ]]; then | ||
echo "changed=true" >> "$GITHUB_OUTPUT" | ||
else | ||
echo "changed=false" >> "$GITHUB_OUTPUT" | ||
fi | ||
- name: 📝 Check Release Status | ||
id: release | ||
run: | | ||
echo "Tests passed: ${{ steps.tests.outputs.passed }}" | ||
echo "Dependencies changed: ${{ steps.deps.outputs.changed }}" | ||
disable_auto_release='${{ vars.DISABLE_AUTO_RELEASE }}' | ||
echo "DISABLE_AUTO_RELEASE=$disable_auto_release" | ||
if [[ ${{ steps.tests.outputs.passed }} == "true" && ${{ steps.deps.outputs.changed }} == "true" && $disable_auto_release != "true" ]]; then | ||
echo "should_release=true" >> "$GITHUB_OUTPUT" | ||
echo "🦾 Creating a release!" | ||
else | ||
echo "should_release=false" >> "$GITHUB_OUTPUT" | ||
echo "✋ Not creating a release." | ||
fi | ||
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 |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
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: | ||
token: ${{ secrets.GH_BASIC }} | ||
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.Log/Chickensoft.Log.csproj | ||
|
||
- name: 📦 Build | ||
run: dotnet build \ | ||
Chickensoft.Log/Chickensoft.Log.csproj -c Release | ||
|
||
- name: 🔎 Get Package Path | ||
id: package-path | ||
run: | | ||
package=$(find ./Chickensoft.Log/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 |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
name: '🧑🏫 Spellcheck' | ||
on: | ||
push: | ||
pull_request: | ||
|
||
jobs: | ||
spellcheck: | ||
name: '🧑🏫 Spellcheck' | ||
# Only run the workflow if it's not a PR or if it's a PR from a fork. | ||
# This prevents duplicate workflows from running on PR's that originate | ||
# from the repository itself. | ||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
working-directory: '.' | ||
steps: | ||
- uses: actions/checkout@v4 | ||
name: 🧾 Checkout | ||
|
||
- uses: streetsidesoftware/cspell-action@v6 | ||
name: 📝 Check Spelling | ||
with: | ||
config: './cspell.json' | ||
incremental_files_only: false | ||
root: '.' |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
name: 🚥 Tests | ||
on: | ||
push: | ||
pull_request: | ||
|
||
jobs: | ||
tests: | ||
name: 🧪 Evaluate Tests on ${{ matrix.os }} | ||
# Only run the workflow if it's not a PR or if it's a PR from a fork. | ||
# This prevents duplicate workflows from running on PR's that originate | ||
# from the repository itself. | ||
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
# Don't cancel other OS runners if one fails. | ||
fail-fast: false | ||
matrix: | ||
# Put the operating systems you want to run on here. | ||
# | ||
# You can change windows-2019 to windows-latest, but windows-2019 | ||
# was running in half the time. Try it out and see what works best. | ||
os: [ubuntu-latest, macos-latest, windows-2019] | ||
env: | ||
DOTNET_CLI_TELEMETRY_OPTOUT: true | ||
DOTNET_NOLOGO: true | ||
defaults: | ||
run: | ||
# Use bash shells on all platforms. | ||
shell: bash | ||
steps: | ||
- name: 🧾 Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
token: ${{ secrets.GH_BASIC }} | ||
lfs: true | ||
submodules: 'recursive' | ||
|
||
- name: 💽 Setup .NET SDK | ||
uses: actions/setup-dotnet@v4 | ||
with: | ||
# Use the .NET SDK from global.json in the root of the repository. | ||
global-json-file: global.json | ||
|
||
- name: 📦 Restore Dependencies | ||
run: dotnet restore | ||
|
||
- name: 🤖 Setup Godot | ||
uses: chickensoft-games/setup-godot@v2 | ||
with: | ||
# Version must include major, minor, and patch, and be >= 4.0.0 | ||
# Pre-release label is optional. | ||
# | ||
# In this case, we are using the version from global.json. | ||
# | ||
# This allows checks on renovatebot PR's to succeed whenever | ||
# renovatebot updates the Godot SDK version. | ||
version: global.json | ||
|
||
- name: 🧑🔬 Generate .NET Bindings | ||
working-directory: Chickensoft.Log.Tests | ||
run: godot --headless --build-solutions --quit || exit 0 | ||
|
||
- name: 🦺 Build Projects | ||
run: dotnet build | ||
|
||
- name: 🧪 Run Tests | ||
working-directory: Chickensoft.Log.Tests | ||
run: godot --headless --run-tests --quit-on-finish |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{ | ||
"recommendations": [ | ||
"ms-dotnettools.csharp", | ||
"selcukermaya.se-csproj-extensions", | ||
"josefpihrt-vscode.roslynator", | ||
"streetsidesoftware.code-spell-checker", | ||
"VisualStudioExptTeam.vscodeintellicode", | ||
"DavidAnson.vscode-markdownlint" | ||
] | ||
} |
Oops, something went wrong.