Skip to content

Add Bulk Update for postgres #9

Add Bulk Update for postgres

Add Bulk Update for postgres #9

Workflow file for this run

on:
pull_request:
types: [opened, synchronize, reopened]
push:
branches:
- master
- '0.[0-9]+.x'
- '1.[0-9]+.x'
name: CI Tests
jobs:
check_and_test:
name: Check
strategy:
fail-fast: false
matrix:
rust: ["stable", "beta", "nightly"]
backend: ["postgres", "sqlite", "mysql"]
os: [ubuntu-18.04, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Cache cargo registry
uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-${{ matrix.backend }}-cargo-${{ hashFiles('**/Cargo.toml') }}
- name: Set environment variables
shell: bash
if: matrix.backend == 'mysql'
run: |
echo 'RUST_TEST_THREADS=1' >> $GITHUB_ENV
- name: Set environment variables
shell: bash
run: |
echo 'RUSTFLAGS=--cap-lints=warn' >> $GITHUB_ENV
- name: Install postgres (Linux)
if: runner.os == 'Linux' && matrix.backend == 'postgres'
run: |
sudo apt-get update
sudo apt-get install -y libpq-dev postgresql
echo "host all all 127.0.0.1/32 md5" > sudo tee -a /etc/postgresql/10/main/pg_hba.conf
sudo service postgresql restart && sleep 3
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
sudo service postgresql restart && sleep 3
echo 'PG_DATABASE_URL=postgres://postgres:postgres@localhost/' >> $GITHUB_ENV
echo 'PG_EXAMPLE_DATABASE_URL=postgres://postgres:postgres@localhost/diesel_example' >> $GITHUB_ENV
- name: Install sqlite (Linux)
if: runner.os == 'Linux' && matrix.backend == 'sqlite'
run: |
sudo apt-get update
sudo apt-get -y install libsqlite3-dev
echo 'SQLITE_DATABASE_URL=/tmp/test.db' >> $GITHUB_ENV
- name: Install mysql (Linux)
if: runner.os == 'Linux' && matrix.backend == 'mysql'
run: |
sudo apt-get update
sudo apt-get -y install mysql-server libmysqlclient-dev
sudo /etc/init.d/mysql start
mysql -e "create database diesel_test; create database diesel_unit_test; grant all on \`diesel_%\`.* to 'root'@'localhost';" -uroot -proot
echo 'MYSQL_DATABASE_URL=mysql://root:root@localhost/diesel_test' >> $GITHUB_ENV
echo 'MYSQL_EXAMPLE_DATABASE_URL=mysql://root:root@localhost/diesel_example' >> $GITHUB_ENV
echo 'MYSQL_UNIT_TEST_DATABASE_URL=mysql://root:root@localhost/diesel_unit_test' >> $GITHUB_ENV
- name: Install postgres (MacOS)
if: runner.os == 'macOS' && matrix.backend == 'postgres'
run: |
/usr/local/opt/postgres/bin/pg_ctl -D /usr/local/var/postgres start
sleep 3
/usr/local/opt/postgres/bin/createuser -s postgres
echo 'PG_DATABASE_URL=postgres://postgres@localhost/' >> $GITHUB_ENV
echo 'PG_EXAMPLE_DATABASE_URL=postgres://postgres@localhost/diesel_example' >> $GITHUB_ENV
- name: Install sqlite (MacOS)
if: runner.os == 'macOS' && matrix.backend == 'sqlite'
run: |
brew update
brew install sqlite
echo 'SQLITE_DATABASE_URL=/tmp/test.db' >> $GITHUB_ENV
- name: Install mysql (MacOS)
if: runner.os == 'macOS' && matrix.backend == 'mysql'
run: |
brew update &&
brew install [email protected] &&
brew services start [email protected] &&
brew services stop [email protected];sleep 3;brew services start [email protected] &&
sleep 2 &&
/usr/local/Cellar/[email protected]/5.7.35/bin/mysql -e "create database diesel_test; create database diesel_unit_test; grant all on \`diesel_%\`.* to 'root'@'localhost';" -uroot
echo 'MYSQL_DATABASE_URL=mysql://root@localhost/diesel_test' >> $GITHUB_ENV
echo 'MYSQL_EXAMPLE_DATABASE_URL=mysql://root@localhost/diesel_example' >> $GITHUB_ENV
echo 'MYSQL_UNIT_TEST_DATABASE_URL=mysql://root@localhost/diesel_unit_test' >> $GITHUB_ENV
echo 'MYSQLCLIENT_LIB_DIR=/usr/local/opt/[email protected]/lib' >> $GITHUB_ENV
echo 'PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"' >> $GITHUB_ENV
- name: Install sqlite (Windows)
if: runner.os == 'Windows' && matrix.backend == 'sqlite'
shell: cmd
run: |
choco install sqlite
cd /D C:\ProgramData\chocolatey\lib\SQLite\tools
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
lib /machine:x64 /def:sqlite3.def /out:sqlite3.lib
- name: Set variables for sqlite (Windows)
if: runner.os == 'Windows' && matrix.backend == 'sqlite'
shell: bash
run: |
echo "C:\ProgramData\chocolatey\lib\SQLite\tools" >> $GITHUB_PATH
echo "SQLITE3_LIB_DIR=C:\ProgramData\chocolatey\lib\SQLite\tools" >> $GITHUB_ENV
echo "SQLITE_DATABASE_URL=C:\test.db" >> $GITHUB_ENV
- name: Install postgres (Windows)
if: runner.os == 'Windows' && matrix.backend == 'postgres'
shell: bash
run: |
choco install postgresql12 --force --params '/Password:postgres'
echo 'C:\Program Files\PostgreSQL\12\bin' >> $GITHUB_PATH
echo 'C:\Program Files\PostgreSQL\12\lib' >> $GITHUB_PATH
echo 'PQ_LIB_DIR=C:\Program Files\PostgreSQL\12\lib' >> $GITHUB_ENV
echo 'PG_DATABASE_URL=postgres://postgres:postgres@localhost/' >> $GITHUB_ENV
echo 'PG_EXAMPLE_DATABASE_URL=postgres://postgres:postgres@localhost/diesel_example' >> $GITHUB_ENV
- name: Install mysql (Windows)
if: runner.os == 'Windows' && matrix.backend == 'mysql'
shell: cmd
run: |
choco install mysql
"C:\tools\mysql\current\bin\mysql" -e "create database diesel_test; create database diesel_unit_test; grant all on `diesel_%`.* to 'root'@'localhost';" -uroot
- name: Set variables for mysql (Windows)
if: runner.os == 'Windows' && matrix.backend == 'mysql'
shell: bash
run: |
echo "MYSQL_DATABASE_URL=mysql://root@localhost/diesel_test" >> $GITHUB_ENV
echo "MYSQL_EXAMPLE_DATABASE_URL=mysql://root@localhost/diesel_example" >> $GITHUB_ENV
echo "MYSQL_UNIT_TEST_DATABASE_URL=mysql://root@localhost/diesel_unit_test" >> $GITHUB_ENV
echo "MYSQLCLIENT_LIB_DIR=C:\tools\mysql\current\lib" >> $GITHUB_ENV
- name: Update Rustup (temporary workaround)
run: rustup self update
shell: bash
if: startsWith(matrix.os, 'windows')
- name: Install rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
- name: Rust version check
uses: actions-rs/cargo@v1
with:
command: version
- name: Test diesel (nightly)
if: matrix.rust == 'nightly'
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel/Cargo.toml --no-default-features --features "${{ matrix.backend }} unstable extras"
- name: Test diesel
if: matrix.rust != 'nightly'
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel/Cargo.toml --no-default-features --features "${{ matrix.backend }} extras"
- name: Test diesel (with-deprecated)
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel/Cargo.toml --no-default-features --features "${{ matrix.backend }} extras with-deprecated"
- name: Test diesel-derives (nightly)
if: matrix.rust == 'nightly'
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel_derives/Cargo.toml --no-default-features --features "diesel/${{ matrix.backend }} diesel/unstable"
- name: Test diesel-derives
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel_derives/Cargo.toml --no-default-features --features "diesel/${{ matrix.backend }}"
- name: Test diesel-cli
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel_cli/Cargo.toml --no-default-features --features "${{ matrix.backend }}"
- name: Test diesel examples
shell: bash
run: |
(cd examples/${{ matrix.backend }} && BACKEND=${{ matrix.backend }} ./test_all)
- name: Test migrations-internals
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel_migrations/migrations_internals/Cargo.toml
- name: Test migrations-macros
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel_migrations/migrations_macros/Cargo.toml
- name: Test diesel_migrations
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel_migrations/Cargo.toml --features "${{ matrix.backend }} diesel/${{ matrix.backend }}"
- name: Run diesel_tests (nightly)
if: matrix.run == 'nightly'
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel_tests/Cargo.toml --no-default-features --features "${{ matrix.backend }} unstable"
- name: Run diesel_tests
if: matrix.run != 'nightly'
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel_tests/Cargo.toml --no-default-features --features "${{ matrix.backend }}"
- name: Run rustdoc (nightly)
if: matrix.run == 'nightly'
uses: actions-rs/cargo@v1
with:
command: doc
args: --manifest-path diesel/Cargo.toml --no-deps --no-default-features --features "${{ matrix.backend }} unstable"
- name: Run rustdoc
if: matrix.run != 'nightly'
uses: actions-rs/cargo@v1
with:
command: doc
args: --manifest-path diesel/Cargo.toml --no-deps --no-default-features --features "${{ matrix.backend }}"
compile_tests:
name: Compiletests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly-2018-11-27
profile: minimal
override: true
- name: Cache cargo registry
uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
key: compile_test-cargo-${{ hashFiles('**/Cargo.toml') }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get -y install libsqlite3-dev libpq-dev libmysqlclient-dev
- name: Run compile tests
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel_compile_tests/Cargo.toml
sqlite_bundled:
name: Check sqlite bundled
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
- name: Cache cargo registry
uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
key: sqlite_bundled-cargo-${{ hashFiles('**/Cargo.toml') }}
- name: Setup environment
run: |
echo 'SQLITE_DATABASE_URL=/tmp/test.db' >> $GITHUB_ENV
echo 'RUSTFLAGS=--cap-lints=warn' >> $GITHUB_ENV
- name: Test diesel-cli
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path diesel_cli/Cargo.toml --no-default-features --features "sqlite-bundled"
minimal_rust_version:
name: Check Minimal supported rust version (1.31.0)
runs-on: ubuntu-16.04
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: 1.31.0
profile: minimal
override: true
components: clippy, rustfmt
- name: Cache cargo registry
uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
key: minimal_rust_version-cargo-${{ hashFiles('**/Cargo.toml') }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get -y install libsqlite3-dev libpq-dev libmysqlclient-dev libclang-dev
- name: Fix minimal dependencies
run: |
RUSTC_BOOTSTRAP=1 cargo update -Z minimal-versions
cargo update -p diesel:1.4.0
cargo update -p diesel_derives:1.4.0
cargo update -p rustc-serialize --precise=0.3.20
cargo update -p regex:0.1.0 --precise=0.1.31
cargo update -p cexpr --precise=0.2.2
cargo update -p num-bigint:0.1.36 --precise=0.1.41
cargo update -p num-bigint:0.2.0 --precise=0.1.41
cargo update -p num-integer --precise=0.1.33
cargo update -p syn:0.12.0 --precise=0.12.3
cargo update -p libloading --precise=0.3.1
cargo update -p pq-sys --precise=0.3.1
cargo update -p mysqlclient-sys --precise=0.2.0
- name: Check building with rust 1.31.0
uses: actions-rs/cargo@v1
with:
command: check
args: --manifest-path=diesel/Cargo.toml
- name: Check formating
uses: actions-rs/cargo@v1
with:
command: fmt