Merge pull request #1185 from lycheeverse/dependabot/cargo/serde-1.0.176 #920
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: CI | |
on: | |
repository_dispatch: | |
workflow_dispatch: | |
push: | |
branches: | |
- master | |
tags: | |
- "*.*.*" | |
pull_request: | |
types: | |
- opened | |
- synchronize | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: taiki-e/install-action@nextest | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run tests | |
run: make test | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: clippy | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run cargo fmt (check if all code is rustfmt-ed) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
- name: Run cargo clippy (deny warnings) | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
# --all-targets makes it lint tests too | |
args: --all-targets --all-features -- -D warnings | |
publish-check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: cargo fetch | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fetch | |
- name: cargo publish lychee-lib | |
uses: actions-rs/cargo@v1 | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
with: | |
command: publish | |
args: --dry-run --manifest-path lychee-lib/Cargo.toml | |
# Can't check lychee binary as it depends on the lib above | |
# and `--dry-run` doesn't allow unpublished crates yet. | |
# https://github.com/rust-lang/cargo/issues/1169 | |
# `cargo-publish-all` is a solution but it doesn't work with | |
# Rust edition 2021. | |
# Therefore skip the check for now, which is probably fine | |
# because the binary is just a small wrapper around the CLI | |
# anyway. | |
# | |
# - name: cargo publish lychee | |
# uses: actions-rs/cargo@v1 | |
# env: | |
# CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
# with: | |
# command: publish | |
# args: --dry-run --manifest-path lychee-bin/Cargo.toml | |
publish: | |
if: startsWith(github.ref, 'refs/tags/') | |
needs: | |
- test | |
- lint | |
- publish-check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: cargo fetch | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fetch | |
- name: cargo publish lychee-lib | |
uses: actions-rs/cargo@v1 | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
with: | |
command: publish | |
args: --manifest-path lychee-lib/Cargo.toml | |
- name: Wait for crates.io publication | |
run: sleep 60s | |
shell: bash | |
- name: cargo publish lychee | |
uses: actions-rs/cargo@v1 | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
with: | |
command: publish | |
args: --manifest-path lychee-bin/Cargo.toml |