-
Notifications
You must be signed in to change notification settings - Fork 1.2k
.github/workflows: Split advisory issues from PR workflows using cargo-deny
#2803
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 5 commits
526ff8d
e01935a
bcf69a8
db7c84d
5108516
035a2a8
75b9e42
86986ba
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| name: cargo deny | ||
| on: | ||
| push: | ||
| paths: | ||
| - '**/Cargo.toml' | ||
| - '**/Cargo.lock' | ||
| pull_request: | ||
| paths: | ||
| - '**/Cargo.toml' | ||
| - '**/Cargo.lock' | ||
| jobs: | ||
| cargo-deny: | ||
| runs-on: ubuntu-latest | ||
| strategy: | ||
| matrix: | ||
| checks: | ||
| - advisories | ||
| - bans licenses sources | ||
|
Comment on lines
+13
to
+16
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Given that we no longer treat
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I personally prefer to be explicit as if there is change in the future you can gradually adopt more check features. If the preference is to be implicit non-exhaustive then we can change this but prepare for surprise(s) if the tooling changes. Also I personally prefer matrix to separate the workflow streams so I can catch / view errors in context e.g. I want to have different mindset when dealing with licenses vs advisories - plus it's faster as silver lining. If the preference is to bundle them to same flow then that can be certainly changed. Let me know and I can change.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd like to keep it separate actually so we can temporarily ignore a failing advisory check for example. It also allows us to mark some of them as required via GH for merging and leave others optional. |
||
|
|
||
| # Prevent sudden announcement of a new advisory from failing ci: | ||
| continue-on-error: ${{ matrix.checks == 'advisories' }} | ||
thomaseizinger marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| steps: | ||
| - uses: actions/checkout@v3 | ||
| - uses: EmbarkStudios/cargo-deny-action@v1 | ||
| with: | ||
| command: check ${{ matrix.checks }} | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,144 @@ | ||
| # This section is considered when running `cargo deny check advisories` | ||
pinkforest marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| # More documentation for the advisories section can be found here: | ||
| # https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html | ||
| [advisories] | ||
| # The path where the advisory database is cloned/fetched into | ||
| db-path = "~/cargo/advisory-db" | ||
| # The url of the advisory database to use | ||
| db-urls = [ "https://github.com/rustsec/advisory-db" ] | ||
| # The lint level for security vulnerabilities | ||
| vulnerability = "deny" | ||
| # The lint level for unmaintained crates | ||
| unmaintained = "warn" | ||
| # The lint level for crates that have been yanked from their source registry | ||
| yanked = "warn" | ||
| # The lint level for crates with security notices. Note that as of | ||
| # 2019-12-17 there are no security notice advisories in | ||
| # https://github.com/rustsec/advisory-db | ||
| notice = "warn" | ||
| # A list of advisory IDs to ignore. Note that ignored advisories will still | ||
| # output a note when they are encountered. | ||
| ignore = [ | ||
| #"RUSTSEC-0000-0000", | ||
| ] | ||
| # Threshold for security vulnerabilities, any vulnerability with a CVSS score | ||
| # lower than the range specified will be ignored. Note that ignored advisories | ||
| # will still output a note when they are encountered. | ||
| # * None - CVSS Score 0.0 | ||
| # * Low - CVSS Score 0.1 - 3.9 | ||
| # * Medium - CVSS Score 4.0 - 6.9 | ||
| # * High - CVSS Score 7.0 - 8.9 | ||
| # * Critical - CVSS Score 9.0 - 10.0 | ||
| #severity-threshold = | ||
|
|
||
| # This section is considered when running `cargo deny check licenses` | ||
| # More documentation for the licenses section can be found here: | ||
| # https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html | ||
| [licenses] | ||
| # The lint level for crates which do not have a detectable license | ||
| unlicensed = "deny" | ||
| # List of explictly allowed licenses | ||
| # See https://spdx.org/licenses/ for list of possible licenses | ||
| # [possible values: any SPDX 3.7 short identifier (+ optional exception)]. | ||
| allow = [ | ||
| "Apache-2.0", | ||
| "BSD-2-Clause", | ||
| "MIT", | ||
| "Unlicense", | ||
| ] | ||
| # List of explictly disallowed licenses | ||
| # See https://spdx.org/licenses/ for list of possible licenses | ||
| # [possible values: any SPDX 3.7 short identifier (+ optional exception)]. | ||
| deny = [] | ||
| # Lint level for licenses considered copyleft | ||
| copyleft = "allow" | ||
| # Blanket approval or denial for OSI-approved or FSF Free/Libre licenses | ||
| # * both - The license will be approved if it is both OSI-approved *AND* FSF | ||
| # * either - The license will be approved if it is either OSI-approved *OR* FSF | ||
| # * osi-only - The license will be approved if is OSI-approved *AND NOT* FSF | ||
| # * fsf-only - The license will be approved if is FSF *AND NOT* OSI-approved | ||
| # * neither - This predicate is ignored and the default lint level is used | ||
| allow-osi-fsf-free = "both" | ||
| # Lint level used when no other predicates are matched | ||
| # 1. License isn't in the allow or deny lists | ||
| # 2. License isn't copyleft | ||
| # 3. License isn't OSI/FSF, or allow-osi-fsf-free = "neither" | ||
| default = "deny" | ||
| # The confidence threshold for detecting a license from license text. | ||
| # The higher the value, the more closely the license text must be to the | ||
| # canonical license text of a valid SPDX license file. | ||
| # [possible values: any between 0.0 and 1.0]. | ||
| confidence-threshold = 0.8 | ||
| # Allow 1 or more licenses on a per-crate basis, so that particular licenses | ||
| # aren't accepted for every possible crate as with the normal allow list | ||
| exceptions = [ | ||
| # OpenSSL is Apache License v2.0 (ASL v2) | ||
| # https://www.openssl.org/blog/blog/2017/03/22/license/ | ||
| # ring crate is ISC & MIT | ||
| { allow = ["ISC", "MIT", "OpenSSL"], name = "ring" }, | ||
| # libp2p is not re-distributing unicode tables data by itself | ||
| { allow = ["MIT", "Apache-2.0", "Unicode-DFS-2016"], name = "unicode-ident" }, | ||
| ] | ||
|
|
||
| # Some crates don't have (easily) machine readable licensing information, | ||
| # adding a clarification entry for it allows you to manually specify the | ||
| # licensing information | ||
| [[licenses.clarify]] | ||
| name = "ring" | ||
| expression = "ISC AND MIT AND OpenSSL" | ||
| license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] | ||
|
|
||
| [licenses.private] | ||
| # If true, ignores workspace crates that aren't published, or are only | ||
| # published to private registries | ||
| ignore = false | ||
| # One or more private registries that you might publish crates to, if a crate | ||
| # is only published to private registries, and ignore is true, the crate will | ||
| # not have its license(s) checked | ||
| #registries = [ | ||
| #] | ||
|
|
||
| # This section is considered when running `cargo deny check bans`. | ||
| # More documentation about the 'bans' section can be found here: | ||
| # https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html | ||
| [bans] | ||
| # Lint level for when multiple versions of the same crate are detected | ||
| multiple-versions = "warn" | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd love to ban this actually but I think that is gonna be a fair bit of work.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Out of curiosity, where are we at today? I think the best we can do is be a good citizen and merge @dependabot pull requests quickly.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Something like 20 duplicates I think.
We can do better and regularly check for duplicate dependencies and investigate, where they come from. We can also audit, which dependencies we have and try to get rid of some. Another way is to audit for set but unused features or entire dependencies altogether. For example, we pull in an old version of rand (0.7) via Several of the windows specific dependencies are also duplicates I think.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ed25519-dalek is not maintained.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It doesn't no, sorry for the OT. |
||
| # The graph highlighting used when creating dotgraphs for crates | ||
| # with multiple versions | ||
| # * lowest-version - The path to the lowest versioned duplicate is highlighted | ||
| # * simplest-path - The path to the version with the fewest edges is highlighted | ||
| # * all - Both lowest-version and simplest-path are used | ||
| highlight = "all" | ||
| # List of crates that are allowed. Use with care! | ||
| #allow = [ | ||
| #] | ||
| # List of crates to deny | ||
| #deny = [ | ||
| #] | ||
| # Certain crates/versions that will be skipped when doing duplicate detection. | ||
| #skip = [ | ||
| #] | ||
| # Similarly to `skip` allows you to skip certain crates during duplicate | ||
| # detection. Unlike skip, it also includes the entire tree of transitive | ||
| # dependencies starting at the specified crate, up to a certain depth, which is | ||
| # by default infinite | ||
| #skip-tree = [ | ||
| #] | ||
|
|
||
| # This section is considered when running `cargo deny check sources`. | ||
| # More documentation about the 'sources' section can be found here: | ||
| # https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html | ||
| [sources] | ||
| # Lint level for what to happen when a crate from a crate registry that is not | ||
| # in the allow list is encountered | ||
| unknown-registry = "deny" | ||
| # Lint level for what to happen when a crate from a git repository that is not | ||
| # in the allow list is encountered | ||
| unknown-git = "deny" | ||
| # List of URLs for allowed crate registries. Defaults to the crates.io index | ||
| # if not specified. If it is specified but empty, no registries are allowed. | ||
| allow-registry = ["https://github.com/rust-lang/crates.io-index"] | ||
| # List of URLs for allowed Git repositories | ||
| #allow-git = [ | ||
| #] | ||
Uh oh!
There was an error while loading. Please reload this page.