Giter Site home page Giter Site logo

tool-cache's Introduction

Binary crates cache

This repository was responsible for building and persisting binary crates cache, which were used later by actions-rs/install Action.

Deprecation warning

It is archived now and will not be updated anymore. actions-rs/install Action will be updated eventually to utilize GitHub runners cache to store compiled binaries.

Cached crates

See workflow file for a list of crates, which are stored in the cache storage.

If you want to suggest a new crate to be added into the crate cache, check if it was asked before already, and if not - create a new issue.

Security considerations

Binary crates cache is stored at the third party server (AWS S3), meaning that using this tool cache is potentially less secure than just calling cargo install command.

Pre-built binaries are executed directly in the virtual environments and have full access to them, including access to the environment variables, secrets, access tokens and so on.

Malicious parties potentially might replace these pre-built binaries, leading to the security breach. We try our best to mitigate any potential security problems, but you must acknowledge that fact before using any @actions-rs Action, which uses this cache internally and explicitly enabling this functionality.

Security measures

  1. Crates are compiled right here at GitHub
  2. Crates are signed with 4096 bit RSA key
  3. That RSA key is stored in the GitHub secrets
  4. Actions at @actions-rs are validating this signature after the file downloading
  5. Compiled crates are stored in the AWS S3 bucket and served via AWS CloudFront
  6. MFA is enabled for AWS root user
  7. Separate AWS user for files uploading has the console access disabled and only one permission: PutObject for this S3 bucket
  8. AWS access key and other confidential details are stored in the GitHub secrets

Refer to the @actions-rs/install documentation to learn more about files downloading and validating.

Contribute and support

Any contributions are welcomed!

If you want to report a bug or have a feature request, check the Contributing guide.

You can also support author by funding the ongoing project work, see Sponsoring.

tool-cache's People

Contributors

andy128k avatar bodil avatar rivy avatar svartalf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tool-cache's Issues

Add cached crate wasm-bindgen-cli

Do the checklist before filing an issue:

  • Is this related to the actions-rs Actions? If not, use GitHub Community forum to ask questions about Actions in a whole: https://github.community
  • Does this crate helps with the Rust CI?
  • Is it popular enough to be used by many users?

Crate

crates.io: https://crates.io/crates/wasm-bindgen-cli
repository: https://github.com/rustwasm/wasm-bindgen/tree/master/crates/cli

Motivation

This allows generating JavaScript bindings for your wasm file.

Add cached crate mdbook-linkcheck

Do the checklist before filing an issue:

  • Is this related to the actions-rs Actions? If not, use GitHub Community forum to ask questions about Actions in a whole: https://github.community
  • Does this crate helps with the Rust CI?
  • Is it popular enough to be used by many users?

Crate

crates.io: https://crates.io/crates/mdbook-linkcheck
repository: https://github.com/Michael-F-Bryan/mdbook-linkcheck

Motivation

I was translating the async book and publish it with my own ci using actions-rs. However, each time it builds, actions-rs re-install mdbook-linkcheck without cache, whick takes about 5 min to pass the CI. With this crate cached, the CI will be made less than 20s.

The workflow was "automatically disabled because there hasn't been activity in this repository for at least 60 days".

Do the checklist before filing an issue:

Description

Same as the title.

The newly released versions of binary crates are not built.

Used environment

N/A

Expected behavior

The "Build tools cache" workflow resumes working.

Additional context

Nothing.

Add cached rate for cargo-ndk

Do the checklist before filing an issue:

Motivation

cargo-ndk is a useful tool for building on android for rust binary.
It's used in https://github.com/cloudflare/quiche for building android targets.

Additional context

wasm-bindgen-cli is not correctly cached

Do the checklist before filing an issue:

Description

wasm-bindgen-cli installs multiples binaries. Only one, and especially the wrong one, is getting added to the tool-cache:

https://github.com/actions-rs/tool-cache/runs/578848794?check_suite_focus=true#step:5:265

Expected behavior

Probably all of them should be added, but I'd be fine with just the actual wasm-bindgen tool.

Add cached crate cargo-make

Do the checklist before filing an issue:

  • Is this related to the actions-rs Actions? If not, use GitHub Community forum to ask questions about Actions in a whole: https://github.community
  • Does this crate helps with the Rust CI?
  • Is it popular enough to be used by many users?

Crate

crates.io: https://crates.io/crates/cargo-make
repository: https://github.com/sagiegurari/cargo-make

Motivation

Add any other context about this crate here.

Cargo-make is a task runner and build tool for Rust projects.

Describe how Rust users can benefit from using this crate in their CI.

It helps Rust users to maintain common build tasks across big projects.

Add cached crate pyoxidizer

Do the checklist before filing an issue:

  • Is this related to the actions-rs Actions? If not, use GitHub Community forum to ask questions about Actions in a whole: https://github.community
  • Does this crate helps with the Rust CI? Mostly helps with Python CI for packaging self contained Python applications.
  • Is it popular enough to be used by many users? Yes.

Crate

crates.io: https://crates.io/crates/pyoxidizer
repository: https://github.com/indygreg/PyOxidizer

Motivation

pyoxidizer usage example:
https://github.com/laixintao/iredis/blob/0239c284f1c48952757fa61b6844f6fdcd6e020c/.github/workflows/release.yaml#L116-L125

wasm-bindgen-cli extraction never completes if the crate is already there

Do the checklist before filing an issue:

Description

It seems like a prompt is coming up if the crate already exists in .cargo/bin, which causes the action to never finish.

Used environment

Workflow code

https://github.com/CryZe/LiveSplitOne/blob/275b166098503f174a38965243a74e56cc6c4792/.github/workflows/ci.yml#L62

Action output

https://github.com/LiveSplit/LiveSplitOne/runs/599647150?check_suite_focus=true#step:12:20

Screenshot_20200419-211114_Chrome

Expected behavior

The ZIP file is extracted even if it's already in .cargo/bin.

Add cached crate cargo-generate

Do the checklist before filing an issue:

  • Is this related to the actions-rs Actions? If not, use GitHub Community forum to ask questions about Actions in a whole: https://github.community
  • Does this crate helps with the Rust CI?
  • Is it popular enough to be used by many users?

Crate

crates.io: https://crates.io/crates/cargo-generate
repository: https://github.com/ashleygwilliams/cargo-generate

Motivation

From the cargo-generate docs,

cargo-generate is a developer tool to help you get up and running quickly with a new Rust project by leveraging a pre-existing git repository as a template.

I'm a maintainer of a cargo-generate template. I use actions-rs/install to manually build cargo-generate. The build step is part of a larger job that validates the overall template, making sure that the template will work for end-users. It takes over 6 minutes to compile cargo-generate as part of the job (Ubuntu 18.04).

By providing cargo-generate in the tools cache, we can make it easier for cargo-generate template maintainers to test their templates.

Add cached crate cargo-hack

Do the checklist before filing an issue:

  • Is this related to the actions-rs Actions? If not, use GitHub Community forum to ask questions about Actions in a whole: https://github.community
  • Does this crate helps with the Rust CI?
  • Is it popular enough to be used by many users? I think so

Crate

crates.io: https://crates.io/crates/cargo-hack
repository: https://github.com/taiki-e/cargo-hack

Motivation

This allows users to work around limitations in cargo, such as testing the full powerset of available features.

Add a flag to install a crate in debug mode

Do the checklist before filing an issue:

Motivation

Hi there, and thanks for writing this action! I have some tools from repositories and crates.io I'd like to install in my actions, and they tend to compile a lot faster in debug mode than in release mode.

Could you add a debug: true flag to the action to make it easy to add new crates in debug mode? You could make it incompatible with the use-toolchain option.

Additional context

The tools I'd like to install are:
https://github.com/facebookincubator/cargo-guppy (from the git repo)
https://crates.io/crates/cargo-readme

Add cargo-bundle to tool cache

Do the checklist before filing an issue:

  • Is this related to the actions-rs Actions? If not, use GitHub Community forum to ask questions about Actions in a whole: https://github.community
  • Does this crate helps with the Rust CI?
  • Is it popular enough to be used by many users?

Crate

crates.io: https://crates.io/crates/cargo-bundle
repository: https://github.com/burtonageo/cargo-bundle

Motivation

We use cargo-bundle as part of our CI to build platform-specific bundles of our application. This seems like a natural fit to be in the tool cache as I envision many others may want to bundle a native app in CI and cargo-bundle is one of the standard tools to do this in a cross-platform way. From a trivial search on Github I can see at least one other repo is already trying to use cargo-bundle this way (though of course it doesn't work since cargo-bundle isn't in the tool cache).

Unable to download latest mdbook from tool-cache

Do the checklist before filing an issue:

Description

I checked that mdbook is in tool-cache, and it used to work serval days ago, but in these 2 days I get the error like the title.

Used environment

Environment: ubuntu-18.04
Version: 20201210.0
Included Software: https://github.com/actions/virtual-environments/blob/ubuntu18/20201210.0/images/linux/Ubuntu1804-README.md

Workflow code

here

Action output

here is the build. Related logs are in the Install mdbook section:

  Newest mdbook version available at crates.io: 0.4.5
  Downloading mdbook signature into /tmp/mdbook.zip.sig
  Warning: Unable to download mdbook == latest from the tool cache: Error: Unexpected HTTP response: 403

Expected behavior

Expecting to make use of cached mdbook like the old days.

Add cached crate cargo-lipo

Do the checklist before filing an issue:

Motivation

cargo-lipo is a useful for building iOS targets.
It's used in https://github.com/cloudflare/quiche for its CI for testing iOS targets.

Additional context

Add cached crate cargo-binutils

Do the checklist before filing an issue:

  • Is this related to the actions-rs Actions? If not, use GitHub Community forum to ask questions about Actions in a whole: https://github.community
  • Does this crate helps with the Rust CI?
  • Is it popular enough to be used by many users?

Crate

crates.io: https://crates.io/crates/cargo-binutils
repository: https://github.com/rust-embedded/cargo-binutils/

Motivation

cargo-binutils provides a cargo wrapper the llvm tools shipped with Rust. Those are very useful in a variety of CI scenarios, for instance it can it be used to determine the file size of a built artifact or generate a disassembly, all without having to know target dependent information (like the location of the build product or concrete filename) by utilizing the information provided by the cargo metadata. This also increases usefulness of the cargo action a bit and allows to skip the explicit build step in case the information about the artifact is more important than the artifact itself.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.