Instead of building a custom CI image with Trunk pre-installed, let's
try running CI on a stock image, installing Trunk from a binary on every
workflow run.
Write a Dockerfile that describes a Debian image with our build
environment set up in it. Write a script that builds and tags the custom
image. Set the continuous integration workflow to run on the custom
image, pulled from Docker's local image store.
Running the examples on the custom image takes the same steps as running
them on a development machine, so we no longer gain anything from
factoring out the `cargo run --example` steps. That means we can get rid
of the `run-examples` action. Since the build environment is now set up
ahead of time, we can get rid of the `setup-rust` action too.
This workflow is too spendthrift for deployment: every job sets up Rust,
and the `build` job also installs Trunk, which takes even more
resources. The workflow serves well, however, as a proof of concept.
Introducing a syntax error into `src/main.rs` causes the `build` and
`test` jobs to fail, but allows `run-examples` to succeed. Similarly,
introducing a syntax error into `examples/point-on-sphere.rs` causes
`run-examples` to fail, but allows the other jobs to succeed.