name: CI on: [push, pull_request] env: MYSQL_URL: mysql://root:root@localhost/storyteller DATABASE_URL: mysql://root:root@localhost/storyteller REDIS_0_URL: redis://redisd@localhost/0 REDIS_1_URL: redis://redisd@localhost/1 DEBIAN_FRONTEND: noninteractive jobs: setup_build_test: runs-on: ubuntu-20.04 steps: - name: Checkout sources uses: actions/checkout@v3 - name: Cache cargo registry uses: actions/cache@v3 with: path: | ~/.cargo/registry ~/.cargo/git key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }} - name: Setup mysql run: | sudo systemctl start mysql sudo apt-get update sudo apt-get -y install mysql-client libmysqlclient-dev mysql -e "create user 'storyteller'@'localhost' IDENTIFIED BY 'password';" -uroot -proot mysql -e "create database storyteller; grant all on storyteller.* to 'storyteller'@'localhost';" -uroot -proot - name: Setup Redis run: | sudo apt-get -y install redis-server sudo service redis-server start - name: Setup Rust run: | rustup set profile minimal rustup show rustup install 1.66 rustup default 1.66 rustup show cargo install sqlx-cli --features openssl-vendored cargo install diesel_cli - name: Run database migrations run: | # nothing to see here ;) set +e +o pipefail diesel migration run set -e -o pipefail - name: Build run: cargo build --release - name: Test run: cargo test --release