mirror of
https://github.com/dani-garcia/bitwarden_rs
synced 2024-11-22 01:48:09 +01:00
e3541763fd
* Fix collections not editable by managers Since a newer version of the web-vault we use manager were not able to create sub collections anymore. This was because of some missing details in the response of some json objects. This commit fixes this by using the `to_json_details` instead of the `to_json` Fixes #5066 Fixes #5044 * Update crates and GitHub Actions - Updated all the crates - Updated all the GHA dependencies - Configured the trivy workflow to only run on the main repo and not on forks Also selected a random new scheduled date so it will not run at the same time as all other forks. The two changes should help running this scan every day without failing, and also prevent the same for new or updated forks.
199 lines
7.3 KiB
YAML
199 lines
7.3 KiB
YAML
name: Build
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- ".github/workflows/build.yml"
|
|
- "src/**"
|
|
- "migrations/**"
|
|
- "Cargo.*"
|
|
- "build.rs"
|
|
- "rust-toolchain.toml"
|
|
- "rustfmt.toml"
|
|
- "diesel.toml"
|
|
- "docker/Dockerfile.j2"
|
|
- "docker/DockerSettings.yaml"
|
|
pull_request:
|
|
paths:
|
|
- ".github/workflows/build.yml"
|
|
- "src/**"
|
|
- "migrations/**"
|
|
- "Cargo.*"
|
|
- "build.rs"
|
|
- "rust-toolchain.toml"
|
|
- "rustfmt.toml"
|
|
- "diesel.toml"
|
|
- "docker/Dockerfile.j2"
|
|
- "docker/DockerSettings.yaml"
|
|
|
|
jobs:
|
|
build:
|
|
# We use Ubuntu 22.04 here because this matches the library versions used within the Debian docker containers
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 120
|
|
# Make warnings errors, this is to prevent warnings slipping through.
|
|
# This is done globally to prevent rebuilds when the RUSTFLAGS env variable changes.
|
|
env:
|
|
RUSTFLAGS: "-D warnings"
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
channel:
|
|
- "rust-toolchain" # The version defined in rust-toolchain
|
|
- "msrv" # The supported MSRV
|
|
|
|
name: Build and Test ${{ matrix.channel }}
|
|
|
|
steps:
|
|
# Checkout the repo
|
|
- name: "Checkout"
|
|
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 #v4.2.1
|
|
# End Checkout the repo
|
|
|
|
|
|
# Install dependencies
|
|
- name: "Install dependencies Ubuntu"
|
|
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends openssl build-essential libmariadb-dev-compat libpq-dev libssl-dev pkg-config
|
|
# End Install dependencies
|
|
|
|
|
|
# Determine rust-toolchain version
|
|
- name: Init Variables
|
|
id: toolchain
|
|
shell: bash
|
|
run: |
|
|
if [[ "${{ matrix.channel }}" == 'rust-toolchain' ]]; then
|
|
RUST_TOOLCHAIN="$(grep -oP 'channel.*"(\K.*?)(?=")' rust-toolchain.toml)"
|
|
elif [[ "${{ matrix.channel }}" == 'msrv' ]]; then
|
|
RUST_TOOLCHAIN="$(grep -oP 'rust-version.*"(\K.*?)(?=")' Cargo.toml)"
|
|
else
|
|
RUST_TOOLCHAIN="${{ matrix.channel }}"
|
|
fi
|
|
echo "RUST_TOOLCHAIN=${RUST_TOOLCHAIN}" | tee -a "${GITHUB_OUTPUT}"
|
|
# End Determine rust-toolchain version
|
|
|
|
|
|
# Only install the clippy and rustfmt components on the default rust-toolchain
|
|
- name: "Install rust-toolchain version"
|
|
uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a # master @ Aug 8, 2024, 7:36 PM GMT+2
|
|
if: ${{ matrix.channel == 'rust-toolchain' }}
|
|
with:
|
|
toolchain: "${{steps.toolchain.outputs.RUST_TOOLCHAIN}}"
|
|
components: clippy, rustfmt
|
|
# End Uses the rust-toolchain file to determine version
|
|
|
|
|
|
# Install the any other channel to be used for which we do not execute clippy and rustfmt
|
|
- name: "Install MSRV version"
|
|
uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a # master @ Aug 8, 2024, 7:36 PM GMT+2
|
|
if: ${{ matrix.channel != 'rust-toolchain' }}
|
|
with:
|
|
toolchain: "${{steps.toolchain.outputs.RUST_TOOLCHAIN}}"
|
|
# End Install the MSRV channel to be used
|
|
|
|
# Set the current matrix toolchain version as default
|
|
- name: "Set toolchain ${{steps.toolchain.outputs.RUST_TOOLCHAIN}} as default"
|
|
run: |
|
|
# Remove the rust-toolchain.toml
|
|
rm rust-toolchain.toml
|
|
# Set the default
|
|
rustup default ${{steps.toolchain.outputs.RUST_TOOLCHAIN}}
|
|
|
|
# Show environment
|
|
- name: "Show environment"
|
|
run: |
|
|
rustc -vV
|
|
cargo -vV
|
|
# End Show environment
|
|
|
|
# Enable Rust Caching
|
|
- uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
|
|
with:
|
|
# Use a custom prefix-key to force a fresh start. This is sometimes needed with bigger changes.
|
|
# Like changing the build host from Ubuntu 20.04 to 22.04 for example.
|
|
# Only update when really needed! Use a <year>.<month>[.<inc>] format.
|
|
prefix-key: "v2023.07-rust"
|
|
# End Enable Rust Caching
|
|
|
|
# Run cargo tests
|
|
# First test all features together, afterwards test them separately.
|
|
- name: "test features: sqlite,mysql,postgresql,enable_mimalloc"
|
|
id: test_sqlite_mysql_postgresql_mimalloc
|
|
if: $${{ always() }}
|
|
run: |
|
|
cargo test --features sqlite,mysql,postgresql,enable_mimalloc
|
|
|
|
- name: "test features: sqlite,mysql,postgresql"
|
|
id: test_sqlite_mysql_postgresql
|
|
if: $${{ always() }}
|
|
run: |
|
|
cargo test --features sqlite,mysql,postgresql
|
|
|
|
- name: "test features: sqlite"
|
|
id: test_sqlite
|
|
if: $${{ always() }}
|
|
run: |
|
|
cargo test --features sqlite
|
|
|
|
- name: "test features: mysql"
|
|
id: test_mysql
|
|
if: $${{ always() }}
|
|
run: |
|
|
cargo test --features mysql
|
|
|
|
- name: "test features: postgresql"
|
|
id: test_postgresql
|
|
if: $${{ always() }}
|
|
run: |
|
|
cargo test --features postgresql
|
|
# End Run cargo tests
|
|
|
|
|
|
# Run cargo clippy, and fail on warnings
|
|
- name: "clippy features: sqlite,mysql,postgresql,enable_mimalloc"
|
|
id: clippy
|
|
if: ${{ always() && matrix.channel == 'rust-toolchain' }}
|
|
run: |
|
|
cargo clippy --features sqlite,mysql,postgresql,enable_mimalloc -- -D warnings
|
|
# End Run cargo clippy
|
|
|
|
|
|
# Run cargo fmt (Only run on rust-toolchain defined version)
|
|
- name: "check formatting"
|
|
id: formatting
|
|
if: ${{ always() && matrix.channel == 'rust-toolchain' }}
|
|
run: |
|
|
cargo fmt --all -- --check
|
|
# End Run cargo fmt
|
|
|
|
|
|
# Check for any previous failures, if there are stop, else continue.
|
|
# This is useful so all test/clippy/fmt actions are done, and they can all be addressed
|
|
- name: "Some checks failed"
|
|
if: ${{ failure() }}
|
|
run: |
|
|
echo "### :x: Checks Failed!" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "|Job|Status|" >> $GITHUB_STEP_SUMMARY
|
|
echo "|---|------|" >> $GITHUB_STEP_SUMMARY
|
|
echo "|test (sqlite,mysql,postgresql,enable_mimalloc)|${{ steps.test_sqlite_mysql_postgresql_mimalloc.outcome }}|" >> $GITHUB_STEP_SUMMARY
|
|
echo "|test (sqlite,mysql,postgresql)|${{ steps.test_sqlite_mysql_postgresql.outcome }}|" >> $GITHUB_STEP_SUMMARY
|
|
echo "|test (sqlite)|${{ steps.test_sqlite.outcome }}|" >> $GITHUB_STEP_SUMMARY
|
|
echo "|test (mysql)|${{ steps.test_mysql.outcome }}|" >> $GITHUB_STEP_SUMMARY
|
|
echo "|test (postgresql)|${{ steps.test_postgresql.outcome }}|" >> $GITHUB_STEP_SUMMARY
|
|
echo "|clippy (sqlite,mysql,postgresql,enable_mimalloc)|${{ steps.clippy.outcome }}|" >> $GITHUB_STEP_SUMMARY
|
|
echo "|fmt|${{ steps.formatting.outcome }}|" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "Please check the failed jobs and fix where needed." >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
exit 1
|
|
|
|
|
|
# Check for any previous failures, if there are stop, else continue.
|
|
# This is useful so all test/clippy/fmt actions are done, and they can all be addressed
|
|
- name: "All checks passed"
|
|
if: ${{ success() }}
|
|
run: |
|
|
echo "### :tada: Checks Passed!" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|