CI: add actions/cache steps

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
This commit is contained in:
Manos Pitsidianakis 2024-12-05 14:28:48 +02:00
parent ece6bfc2ce
commit 2257b91b40
No known key found for this signature in database
GPG key ID: 7729C7707F7E09D0
3 changed files with 96 additions and 5 deletions

View file

@ -47,7 +47,21 @@ jobs:
run: |
apt-get update
apt-get install -y libdbus-1-dev pkg-config mandoc libssl-dev make
- name: Cache rustup
id: cache-rustup
uses: actions/cache@v4
with:
path: |
~/.rustup/
~/.cargo/env
~/.cargo/config.toml
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: build-workflow-${{ matrix.build }}-rustup
- id: rustup-setup
if: steps.cache-rustup.outputs.cache-hit != 'true'
name: Install rustup and toolchains
shell: bash
run: |
@ -58,7 +72,14 @@ jobs:
echo "CARGO_HOME=${CARGO_HOME:-$HOME/.cargo}" >> $GITHUB_ENV
rustup toolchain install --profile minimal ${{ matrix.rust }} --target ${{ matrix.target }}
fi
- name: Source .cargo/env
shell: bash
run: |
source "${HOME}/.cargo/env"
echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH
echo "CARGO_HOME=${CARGO_HOME:-$HOME/.cargo}" >> $GITHUB_ENV
- name: Setup Rust target
if: steps.cache-rustup.outputs.cache-hit != 'true'
run: |
mkdir -p "${{ env.CARGO_HOME }}"
cat << EOF > "${{ env.CARGO_HOME }}"/config.toml
@ -66,11 +87,25 @@ jobs:
target = "${{ matrix.target }}"
EOF
- name: Add test dependencies
if: steps.cache-rustup.outputs.cache-hit != 'true'
run: |
cargo install --quiet --version 0.9.54 --target "${{ matrix.target }}" cargo-nextest
- name: Restore build artifacts cache in target dir
id: cache-deps
uses: actions/cache/restore@v4
with:
path: target/
key: workflow-${{ matrix.build }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: cargo-check
run: |
make -f ./.gitea/Makefile.build cargo-check
- if: steps.cache-deps.outputs.cache-hit != 'true'
name: Save build artifacts in target dir
id: save-cache-deps
uses: actions/cache/save@v4
with:
path: target/
key: workflow-${{ matrix.build }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: cargo-test-compiles
if: success() || failure()
run: |

View file

@ -45,7 +45,21 @@ jobs:
run: |
echo MELI_MSRV=$(grep -m1 rust-version meli/Cargo.toml | head -n1 | cut -d'"' -f 2 | head -n1) >> $GITHUB_ENV
printf "Rust MSRV is %s\n" $(grep -m1 rust-version meli/Cargo.toml | head -n1 | cut -d'"' -f 2 | head -n1)
- name: Cache rustup
id: cache-rustup
uses: actions/cache@v4
with:
path: |
~/.rustup/
~/.cargo/env
~/.cargo/config.toml
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: lints-workflow-${{ matrix.build }}-rustup
- id: rustup-setup
if: steps.cache-rustup.outputs.cache-hit != 'true'
name: Install Rustup and toolchains
shell: bash
run: |
@ -60,7 +74,14 @@ jobs:
rustup component add rustfmt --toolchain ${{ matrix.rust }}-${{ matrix.target }}
rustup default ${{ matrix.rust }}
fi
- name: Source .cargo/env
shell: bash
run: |
source "${HOME}/.cargo/env"
echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH
echo "CARGO_HOME=${CARGO_HOME:-$HOME/.cargo}" >> $GITHUB_ENV
- name: Setup Rust target
if: steps.cache-rustup.outputs.cache-hit != 'true'
run: |
mkdir -p "${{ env.CARGO_HOME }}"
cat << EOF > "${{ env.CARGO_HOME }}"/config.toml
@ -68,11 +89,30 @@ jobs:
target = "${{ matrix.target }}"
EOF
- name: Add lint dependencies
if: steps.cache-rustup.outputs.cache-hit != 'true'
shell: bash
run: |
cargo install --version 0.15.1 --target "${{ matrix.target }}" cargo-msrv
# "This package is currently implemented using rust-analyzer internals, so cannot be published on crates.io."
RUSTFLAGS="" cargo install --locked --target "${{ matrix.target }}" --git https://github.com/dcchut/cargo-derivefmt --rev 95da8eee343de4adb25850893873b979258aed7f --bin cargo-derivefmt
- name: Restore build artifacts cache in target dir
id: cache-deps
uses: actions/cache/restore@v4
with:
path: target/
key: workflow-${{ matrix.build }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: clippy
if: success() || failure()
run: |
source "${HOME}/.cargo/env"
make -f .gitea/Makefile.lint clippy
- if: steps.cache-deps.outputs.cache-hit != 'true'
name: Save build artifacts in target dir
id: save-cache-deps
uses: actions/cache/save@v4
with:
path: target/
key: workflow-${{ matrix.build }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: cargo-msrv verify melib MSRV
if: success() || failure()
run: |
@ -83,11 +123,6 @@ jobs:
run: |
source "${HOME}/.cargo/env"
make -f .gitea/Makefile.lint rustfmt
- name: clippy
if: success() || failure()
run: |
source "${HOME}/.cargo/env"
make -f .gitea/Makefile.lint clippy
- name: cargo-derivefmt melib
if: success() || failure()
run: |

View file

@ -42,6 +42,19 @@ jobs:
run: |
apt-get update
apt-get install -y mandoc
- name: Cache rustup
id: cache-rustup
uses: actions/cache@v4
with:
path: |
~/.rustup/
~/.cargo/env
~/.cargo/config.toml
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: manifest_lints-workflow-${{ matrix.build }}-rustup
- id: rustup-setup
name: Install Rustup and toolchains
shell: bash
@ -55,7 +68,14 @@ jobs:
rustup component add rustfmt --toolchain ${{ matrix.rust }}-${{ matrix.target }}
rustup default ${{ matrix.rust }}
fi
- name: Source .cargo/env
shell: bash
run: |
source "${HOME}/.cargo/env"
echo "${CARGO_HOME:-$HOME/.cargo}/bin" >> $GITHUB_PATH
echo "CARGO_HOME=${CARGO_HOME:-$HOME/.cargo}" >> $GITHUB_ENV
- name: Setup Rust target
if: steps.cache-rustup.outputs.cache-hit != 'true'
run: |
mkdir -p "${{ env.CARGO_HOME }}"
cat << EOF > "${{ env.CARGO_HOME }}"/config.toml
@ -63,6 +83,7 @@ jobs:
target = "${{ matrix.target }}"
EOF
- name: Add manifest lint dependencies
if: steps.cache-rustup.outputs.cache-hit != 'true'
run: |
source "${HOME}/.cargo/env"
cargo install --quiet --version 1.0.9 --target "${{ matrix.target }}" cargo-sort