# Rust Base Image

Rust base image for use in Gitlab CI. Includes extra tools to support the CI use case

## Usage

To use this image as the base for your CI pipeline, include the following at the head of your `.gitlab-ci.yml`:

```yaml
image: cr.weirdboi.dev/base/rust:1.84
```

To use this image for a specific pipeline job, include the following in your job spec:

```yaml
my_build_step:
  stage: build
  image: cr.weirdboi.dev/base/rust:1.82
  script:
    # ...
```

## Additional Tools

### Rustup

- Rustup is installed and configured using the default profile, which includes `fmt` and `clippy`.
- Only the default linux x86-64 toolchain is installed
- Stable rust is the default version, where the image tag dictates which rust version is being used
- Nightly rust is installed, where the version is based on the build time of the image

### Cargo Tools

- `cargo binstall` - Install prebuilt binaries from crates.io
- `cargo nextest` - Efficient testing

### Extra Binaries

- `junitify` - Can be used to transform the output of `cargo test` into a junit.xml file
- `node` - Node.js javascript runtime

### Cross support

- The container also includes `cross`, but does not install additional toolchains by default. This can be used to avoid prebuilding additional image versions in environments with DinD support