Docker image for building rust projects.
| .forgejo/workflows | ||
| scripts | ||
| src | ||
| .gitignore | ||
| Cargo.toml | ||
| Dockerfile | ||
| justfile | ||
| LICENSE | ||
| mise.toml | ||
| README.md | ||
| renovate.json | ||
docker-builder-rust
Docker image for building Rust projects with Cargo.
Usage
In a Forgejo action file, e.g. .forgejo/workflows/test.yml:
on: [push]
jobs:
test:
runs-on: docker
container:
image:
git.kemitix.net/kemitix/rust:v3.0.0
steps:
- name: test with nightly
run: cargo +nightly test
- name: build with v1.74.1
run: cargo +1.74.1 cargo build
- name: test with stable
run: cargo test
Toolchains
The available toolchain in the image are:
nightly- stable
- 1.74.1
Contents
- nodejs
- rust
- git
- cargo
- cargo-binstall
- cargo-mutants
- cargo-chef
- cargo-hack
- release-plz
- dbus-dev
- perl
Scripts
check-for-ignored
Checks for files that are being tracked by Git but should be ignored according
to the .gitignore file.
Usage
steps:
- name: Check for Ignored Files
run: check-for-ignored
Caveats
openssl
The alpine linux install doesn't build with this dependency. You can either compile native-tls with the vendored feature, or not use openssl.
vendoered native-tls
This crate must use the vendored feature in order to compile in the Alpine Linux image.
native-tls = { version = "0.2", features = ["vendored"] }
Don't use openssl
Check that none of your dependencies require openssl:
cargo tree --edges normal -i openssl
This will list the tree of dependencies that are bringing in openssl.
If you do need ssl/tls, try using rustls. e.g.
reqwest = { version = "0.12", default-features = false, features = [
"json",
"rustls-tls",
] }