PR comments #5947
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Lint | |
on: | |
push: | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
actionlint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Run actionlint | |
uses: devops-actions/actionlint@v0.1.3 | |
with: | |
shellcheck_opts: '-e SC2086' | |
rustfmt: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Cache | |
uses: ./.github/actions/cache | |
- name: Install latest nightly toolchain and rustfmt | |
run: rustup update nightly && rustup default nightly && rustup component add rustfmt | |
- run: cargo fmt --all -- --check | |
clippy: | |
name: "clippy #${{ matrix.platform }} ${{ matrix.rust_version }}" | |
runs-on: ${{ matrix.platform }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# Ignore nightly for now, it fails too often | |
rust_version: ["1.76.0", "stable"] | |
platform: [windows-latest, ubuntu-latest] | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Cache | |
uses: ./.github/actions/cache | |
with: | |
rust_version: ${{ matrix.rust_version }} | |
- name: Install ${{ matrix.rust_version }} toolchain and clippy | |
run: rustup install ${{ matrix.rust_version }} && rustup default ${{ matrix.rust_version }} && rustup component add clippy | |
- name: Install Protoc Binary | |
shell: bash | |
run: chmod +x ./scripts/install-protoc.sh && ./scripts/install-protoc.sh $HOME | |
- name: Run clippy on ${{ matrix.platform }} ${{ matrix.rust_version }} | |
shell: bash | |
run: | | |
# shellcheck disable=SC2046 | |
cargo clippy --workspace --all-targets --all-features -- -D warnings $([ ${{ matrix.rust_version }} = 1.76.0 ] && echo -Aunknown-lints -Ainvalid_reference_casting) | |
licensecheck: | |
runs-on: ubuntu-latest | |
name: "Presence of licence headers" | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Install licensecheck | |
run: sudo apt-get install -y licensecheck | |
- name: Check licenses | |
# Exclude symbolizer-ffi from the checks (mostly imported code) | |
run: '! find . \( -name "*.rs" -o -name "*.c" -o -name "*.sh" \) -not -path "./symbolizer-ffi/*" -not -path "*/tarpc/*" -print0 | xargs -0 licensecheck -c ".*" | grep -v "Apache License 2.0"' | |
# todo: fix upstream warnings; from the readme: | |
# The most common cause of missing licenses seems to be workspaces that | |
# don't include forward their license files. Go to the repo for the | |
# workspace and copy the relevant files from there. | |
# A package license may receive a confidence warning stating that | |
# cargo-bundle-licenses is "unsure" or "semi" confident. This means that | |
# when the found license was compared to a template license it was found to | |
# have diverged in more than a few words. You should verify that the licence | |
# text is in fact correct in these cases. | |
# | |
# If this job fails, you probably need to regenerate the license, e.g. | |
# CARGO_HOME=/tmp/dd-cargo cargo bundle-licenses --format yaml --output LICENSE-3rdparty.yml | |
license-3rdparty: | |
runs-on: ubuntu-latest | |
name: "Valid LICENSE-3rdparty.yml" | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- run: stat LICENSE-3rdparty.yml | |
- name: Cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/registry/ | |
~/.cargo/git/db/ | |
~/.cargo/bin/ | |
~/.cargo/.crates.toml | |
# cache key contains current version of cargo-bundle-licenses | |
# when upstream version is updated we can bump the cache key version, | |
# to cache the latest version of the tool | |
key: "v1-2.0.0" | |
# cargo-bundle-licenses v2.0 doesn't understand path differences due to | |
# sparse vs git index, so force git. | |
- run: mkdir -p .cargo && printf "[registries.crates-io]\nprotocol = \"git\"\n" > .cargo/config.toml | |
- run: cargo install cargo-bundle-licenses | |
- name: "Generate new LICENSE-3rdparty.yml and check against the previous" | |
env: | |
CARGO_HOME: "/tmp/dd-cargo" | |
run: | | |
# Run cargo bundle-licenses without directly checking against a previous snapshot | |
cargo bundle-licenses \ | |
--format yaml \ | |
--output /tmp/CI.yaml | |
# Normalize the paths in both files to ignore registry differences | |
sed -E 's/(registry\/src\/)[^\/]+/\1normalized_path/g' /tmp/CI.yaml > /tmp/CI_normalized.yaml | |
sed -E 's/(registry\/src\/)[^\/]+/\1normalized_path/g' LICENSE-3rdparty.yml > /tmp/LICENSE-3rdparty_normalized.yml | |
# Now perform the diff on the normalized files | |
if ! diff /tmp/CI_normalized.yaml /tmp/LICENSE-3rdparty_normalized.yml; then | |
echo "Differences detected." | |
exit 1 | |
fi | |
echo "No differences found." | |
- name: export the generated license file on failure | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: LICENSE-3rdparty.yml | |
path: /tmp/CI.yaml | |
overwrite: true |