This repo show how to set up CI on a GitHub project for Bevy.
It creates two workflows:
Definition: .github/workflows/ci.yaml
This workflow runs on every commit to main
branch, and on every PR targeting the main
branch.
It will use rust stable on linux, with cache between different executions, those commands:
cargo test
cargo clippy -- -D warnings
cargo fmt --all -- --check
If you are using anything OS specific or rust nightly, you should update the file ci.yaml to use those.
Definition: .github/workflows/release.yaml
This workflow runs on every tag.
It will build:
assets
.assets
.assets
.If you don't want to target some of those platforms, you can remove the corresponding job from the file release.yaml.
If you don't want to attach the builds to the GitHub release, set env.add_binaries_to_github_release
to false
.
If you are using Git LFS, set env.use_git_lfs
to true
so your assets are properly checked out.
[!Warning] GitHub's LFS storage has a quota. Please take a look at GitHub's documentation here to understand the quota and costs before enabling this option.
You can follow Managing releases in a repository
Execute the following commands:
git tag -a "my-game-1.0" -m "First official release"
git push --tags
A new release will be available in GitHub, with the archives per platform available as downloadable assets.
The git
commands above produced this release: my-game-1.0.
If you would like to use the GitHub workflows included here for your own project, there are a few things you might have to adapt:
index.html
file under /wasm
for web buildsbinary
(release.yaml) matches the name of your binaryActions -> General
make sure "Read and Write permissions" is selected under "Workflow permissions" near the bottom. This fixes the error Error: Resource not accessible by integration
.The release flow can be configured to push the releases to itch.io:
BUTLER_CREDENTIALS
set to the API key.env.itch_target
in release.yaml
and set it to the itch.io username and the name of the game on itch.io, separated by a slash (/
)Once that is done, any tag pushed to GitHub will trigger an itch.io release and use the tag as the user version.
Licensed under either of
at your option.
The Ducky sprite is CC-0 licensed by Caz Creates Games.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be triple licensed as above, without any additional terms or conditions.