3
0
Fork 0
mirror of https://github.com/dtolnay/install.git synced 2024-11-22 00:19:31 +01:00
Fast cargo install action using a GitHub-based binary cache
Find a file
David Tolnay 59115418f6
Time out workflows after 45 minutes
GitHub's default timeout is 6 hours. Recently some of my GitHub Actions
jobs have started randomly stalling for that long, which is inconvenient
because it ties up a chunk of my runner quota. It apepars to be very
rare for a job to recover after stalling. It's better to time out
quicker and retry on a different runner.
2022-11-24 21:37:30 -08:00
.github Time out workflows after 45 minutes 2022-11-24 21:37:30 -08:00
scripts Make sure force push always pushes something for each arg 2022-06-26 20:16:20 -07:00
.gitignore Add initial attempt at composite Actions logic 2021-10-07 22:51:09 -04:00
action.yml Switch from set-output to $GITHUB_OUTPUT 2022-10-13 09:35:44 -07:00
LICENSE Add MIT license 2021-10-07 22:49:43 -04:00
README.md Add screenshot to readme 2021-10-07 23:33:56 -04:00
signing-key.asc Add public key of signing key 2021-10-07 22:50:30 -04:00

Fast cargo install action

This GitHub Action installs a Rust crate using precompiled signed binaries built on GitHub and hosted as GitHub release artifacts.

Example workflow

name: test suite
on: [push, pull_request]

jobs:
  expand:
    name: cargo expand
    runs-on: ubuntu-latest
    steps:
      - uses: dtolnay/install@master
        with:
          crate: cargo-expand
      - run: cargo expand --help

Inputs

Name Required Description
crate Name of crate as published to crates.io
bin Name of binary; default = same as crate name

Security considerations

Check the .github/workflows directory of this repo for the GitHub Actions logic which compiles, signs, and publishes each binary.

This Action downloads both the binary executable and its signature. The signature is verified using gpg and the public key available in signing-key.asc. The corresponding private key is provided to this repo's build jobs as a GitHub secret.

License

The scripts and documentation in this project are released under the MIT License.