diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..f98ae7127e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,49 @@ +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 override set stable + 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