Skip to content

Bump the cli-dependencies group with 1 update #340

Bump the cli-dependencies group with 1 update

Bump the cli-dependencies group with 1 update #340

Workflow file for this run

name: Rust
on:
push:
branches: [ "main", "next" ]
pull_request:
branches: [ "main", "next" ]
permissions:
checks: write
contents: read
pull-requests: write
env:
CARGO_TERM_COLOR: always
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Create local bin directory
run: mkdir -p "${HOME}/.local/bin"
- name: Download markdown-test-report
uses: robinraju/[email protected]
with:
repository: "ctron/markdown-test-report"
tag: "v0.3.8"
fileName: markdown-test-report-linux-amd64
out-file-path: tmp
- name: Install markdown-test-report
run: |
mv tmp/markdown-test-report-linux-amd64 "${HOME}/.local/bin/markdown-test-report"
chmod +x "${HOME}/.local/bin/markdown-test-report"
- name: Download grcov
uses: robinraju/[email protected]
with:
repository: "mozilla/grcov"
tag: "v0.8.18"
fileName: grcov-x86_64-unknown-linux-gnu.tar.bz2
out-file-path: tmp
- name: Install grcov
run: |
tar -xvf tmp/grcov-x86_64-unknown-linux-gnu.tar.bz2
mv grcov "${HOME}/.local/bin"
chmod +x "${HOME}/.local/bin/grcov"
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2023-06-15
- name: Add llvm-tools
run: rustup component add llvm-tools
- name: Configure cache
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: test-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Run tests
run: cargo test --verbose -- -Z unstable-options --report-time --format json | tee test-output.json
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: -Cinstrument-coverage
LLVM_PROFILE_FILE: cargo-test-%p-%m.profraw
- name: Process code coverage with grcov
run: grcov . --binary-path ./target/debug/deps/ -s . -t cobertura --branch --ignore-not-existing --ignore '../*' --ignore "/*" -o target/cobertura.xml
- name: Code coverage report
uses: irongut/[email protected]
with:
filename: target/cobertura.xml
badge: true
fail_below_min: false
format: markdown
hide_branch_rate: false
hide_complexity: true
indicators: true
output: both
thresholds: "50 75"
- name: Add Coverage PR Comment
uses: marocchino/sticky-pull-request-comment@v2
if: github.event_name == 'pull_request'
with:
recreate: true
path: code-coverage-results.md
- name: Job summary (coverage)
if: ${{ always() }}
run: |
echo "# Coverage report " >> $GITHUB_STEP_SUMMARY
[ -f code-coverage-results.md ] && cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
continue-on-error: true
- name: Job summary (tests)
if: ${{ always() }}
run: "[ -f test-output.json ] && markdown-test-report --no-front-matter --output - >> $GITHUB_STEP_SUMMARY"
continue-on-error: true
build-binary:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Configure cache
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: test-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Compile binary
run: cargo build --release
- name: Store binary artifact
uses: actions/upload-artifact@v3
with:
name: paper-age-binary
path: target/release/paper-age
visual-snapshots:
runs-on: ubuntu-latest
needs: [build-binary]
env:
PAPERAGE_PASSPHRASE: supersecret
steps:
- uses: actions/checkout@v3
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.2"
- name: Install latest PaperAge release
uses: robinraju/[email protected]
with:
repository: "matiaskorhonen/paper-age"
latest: true
extract: true
fileName: paper-age-x86_64-unknown-linux-gnu.tar.gz
out-file-path: tmp
- name: Move the release binary to bin
run: mv tmp/paper-age bin/paper-age-release
- name: Install pdfium-cli
uses: robinraju/[email protected]
with:
repository: "klippa-app/pdfium-cli"
tag: "v0.1.1"
fileName: pdfium-linux-x64
out-file-path: bin
- name: Make PDFium executable
run: chmod u+x bin/pdfium-linux-x64
- name: Download PaperAge binary for this branch
uses: actions/download-artifact@v3
with:
name: paper-age-binary
- name: Make the binary executable
run: chmod u+x paper-age
- name: Generate PDFs
run: |
mkdir -p visual-snapshots
echo "Hello World" | ./paper-age --title="A4 secret" --page-size=a4 --output=visual-snapshots/a4-current.pdf
echo "Hello World" | ./paper-age --title="Letter secret" --page-size=letter --output=visual-snapshots/letter-current.pdf
echo "Hello World" | ./bin/paper-age-release --title="A4 secret" --page-size=a4 --output=visual-snapshots/a4-release.pdf
echo "Hello World" | ./bin/paper-age-release --title="Letter secret" --page-size=letter --output=visual-snapshots/letter-release.pdf
- name: Convert the PDFs to PNGs
run: |
for f in visual-snapshots/*.pdf; do
echo "Converting $f to PNG"
./bin/pdfium-linux-x64 render "$f" "${f%.*}.png" --combine-pages --dpi 300 --file-type png
done
- name: Generate image diffs
run: |
for f in visual-snapshots/*-current.png; do
echo "Comparing ${f/-current.png/-release.png} to $f"
npx --package=odiff-bin --yes -- odiff --parsable-stdout --threshold=0.5 "${f/-current.png/-release.png}" "$f" "${f/-current.png/-diff.png}" || true
done
- name: Save snapshots
uses: actions/upload-artifact@v3
with:
name: visual-snapshots
path: visual-snapshots
- name: Upload to B2
uses: shallwefootball/s3-upload-action@master
id: B2
with:
aws_key_id: ${{ secrets.AWS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
aws_bucket: ${{ vars.AWS_BUCKET }}
endpoint: ${{ vars.AWS_ENDPOINT }}
source_dir: "visual-snapshots"
destination_dir: "30-days/${{ github.repository }}/${{ github.run_id }}"
- name: Generate snapshots comment
run: ./bin/snapshots-comment '${{steps.B2.outputs.object_locations}}'
- uses: jwalton/gh-find-current-pr@v1
id: finder
- uses: marocchino/sticky-pull-request-comment@v2
with:
number: ${{ steps.finder.outputs.pr }}
header: "Visual Snapshots"
path: "./visual-snapshots.tmp"
- name: Job summary (visuals)
run: cat visual-snapshots.tmp > $GITHUB_STEP_SUMMARY