CI #5760
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: | |
push: | |
branches: | |
- master | |
pull_request: | |
schedule: | |
- cron: "0 0 * * *" | |
env: | |
RUST_BACKTRACE: 1 | |
RUST_CACHE_KEY: rust-cache-20240327 | |
DOCSRS_PREFIX: ignored/cratesfyi-prefix | |
DOCSRS_DATABASE_URL: postgresql://cratesfyi:password@localhost:15432 | |
DOCSRS_LOG: docs_rs=debug,rustwide=info | |
AWS_ACCESS_KEY_ID: cratesfyi | |
AWS_SECRET_ACCESS_KEY: secret_key | |
S3_ENDPOINT: http://localhost:9000 | |
DOCSRS_INCLUDE_DEFAULT_TARGETS: false | |
DOCSRS_DOCKER_IMAGE: ghcr.io/rust-lang/crates-build-env/linux-micro | |
SENTRY_ENVIRONMENT: dev | |
jobs: | |
sqlx: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- id: install | |
run: | | |
rustup override set stable | |
rustup update stable | |
- name: install `just` | |
run: sudo snap install --edge --classic just | |
- name: restore build & cargo cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
prefix-key: ${{ env.RUST_CACHE_KEY }} | |
- name: Build | |
run: cargo build --workspace --locked | |
- name: Launch postgres | |
run: | | |
cp .env.sample .env | |
mkdir -p ${DOCSRS_PREFIX}/public-html | |
docker-compose up -d db | |
# Give the database enough time to start up | |
sleep 5 | |
# Make sure the database is actually working | |
psql "${DOCSRS_DATABASE_URL}" | |
- name: run database migrations | |
run: cargo run -- database migrate | |
- name: install SQLX CLI | |
run: cargo install sqlx-cli --no-default-features --features postgres | |
- name: run sqlx prepare --check | |
run: just sqlx-check | |
- name: test reverse migrations | |
run: | | |
# --target 0 means "revert everything" | |
cargo sqlx migrate revert \ | |
--database-url $DOCSRS_DATABASE_URL \ | |
--target-version 0 | |
- name: Clean up the database | |
run: docker-compose down --volumes | |
test: | |
env: | |
SQLX_OFFLINE: 1 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- id: install | |
run: | | |
rustup override set stable | |
rustup update stable | |
- name: restore build & cargo cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
prefix-key: ${{ env.RUST_CACHE_KEY }} | |
- name: Build | |
run: cargo build --workspace --locked | |
- name: Launch postgres and min.io | |
run: | | |
cp .env.sample .env | |
mkdir -p ${DOCSRS_PREFIX}/public-html | |
docker-compose up -d db s3 | |
# Give the database enough time to start up | |
sleep 5 | |
# Make sure the database is actually working | |
psql "${DOCSRS_DATABASE_URL}" | |
- name: run workspace tests | |
run: | | |
cargo test --workspace --locked --no-fail-fast | |
- name: run slow tests | |
env: | |
DOCSRS_INCLUDE_DEFAULT_TARGETS: true | |
run: | | |
cargo test --locked -- --ignored --test-threads=1 | |
- name: Clean up the database | |
run: docker-compose down --volumes | |
GUI_test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- id: install | |
run: | | |
rustup override set stable | |
rustup update stable | |
- name: restore build & cargo cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
prefix-key: ${{ env.RUST_CACHE_KEY }} | |
- name: Launch postgres and min.io | |
run: | | |
cp .env.sample .env | |
mkdir -p ${DOCSRS_PREFIX}/public-html | |
docker-compose up -d db s3 | |
# Give the database enough time to start up | |
sleep 5 | |
# Make sure the database is actually working | |
psql "${DOCSRS_DATABASE_URL}" | |
- name: Run GUI tests | |
run: ./dockerfiles/run-gui-tests.sh | |
- name: Clean up the database | |
run: docker-compose down --volumes | |
fmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- id: install | |
run: | | |
rustup override set stable | |
rustup update stable | |
rustup component add rustfmt | |
- run: cargo fmt -- --check | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- id: install | |
run: | | |
rustup override set stable | |
rustup update stable | |
rustup component add clippy | |
- name: install `just` | |
run: sudo snap install --edge --classic just | |
- name: restore build & cargo cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
prefix-key: ${{ env.RUST_CACHE_KEY }} | |
- run: just lint | |
eslint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
- name: install `just` | |
run: sudo snap install --edge --classic just | |
- run: npm install -g eslint@8 | |
- run: just lint-js |