Implements Oracle #184
Workflow file for this run
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: build-mysql | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
paths-ignore: | |
- "**/README.md" | |
- "**/LICENSE" | |
- "**/SECURITY.md" | |
- "**/.gitignore" | |
- "**/resources/**" | |
- "**/.github/ISSUE_TEMPLATE/**" | |
- "**/website/**" | |
jobs: | |
mysql: | |
name: mysql | |
runs-on: ubuntu-latest | |
services: | |
mysql: | |
image: mysql:latest | |
options: >- | |
--health-cmd="mysqladmin ping --silent" | |
--health-interval=10s | |
--health-timeout=5s | |
--health-retries=3 | |
ports: | |
- 3306:3306 | |
env: | |
MYSQL_ROOT_PASSWORD: njord_rootpwd | |
MYSQL_DATABASE: njord_db | |
MYSQL_USER: njord_user | |
MYSQL_PASSWORD: njord_password | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
- name: Cache Cargo Dependencies | |
uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Run Clippy | |
run: cargo clippy --all-targets --all-features | |
- name: Build Project | |
run: cargo build --release --features "mysql" | |
- name: Wait for MySQL to be ready | |
run: | | |
until mysqladmin ping -h 127.0.0.1 --silent; do | |
echo "Waiting for MySQL to be ready..." | |
sleep 5 | |
done | |
- name: Set up MySQL schema | |
env: | |
MYSQL_PWD: njord_rootpwd | |
run: | | |
echo "Injecting schema and data into MySQL..." | |
mysql -h 127.0.0.1 -u njord_user -pnjord_password njord_db < njord/db/test/mysql.sql | |
- name: Running Integration Tests for MySQL | |
env: | |
MYSQL_DATABASE: njord_db | |
MYSQL_USER: njord_user | |
MYSQL_PASSWORD: njord_password | |
MYSQL_HOST: 127.0.0.1 | |
run: cargo test --test mysql_tests | |
oracle: | |
name: oracle | |
runs-on: ubuntu-latest | |
services: | |
oracle: | |
image: gvenzl/oracle-free:latest | |
options: >- | |
--health-cmd="healthcheck.sh" | |
--health-interval=10s | |
--health-timeout=5s | |
--health-retries=10 | |
ports: | |
- 1521:1521 | |
- 5500:5500 | |
env: | |
ORACLE_PASSWORD: njord_password | |
APP_USER: test | |
APP_USER_PASSWORD: test | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
- name: Cache Cargo Dependencies | |
uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Run Clippy | |
run: cargo clippy --all-targets --all-features | |
- name: Build Project | |
run: cargo build --release --features "oracle" | |
- name: Install Oracle Instant Client | |
run: | | |
bash -c "\ | |
wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip && \ | |
wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-sqlplus-linuxx64.zip && \ | |
unzip instantclient-basiclite-linuxx64.zip && \ | |
unzip instantclient-sqlplus-linuxx64.zip && \ | |
rm -f instantclient-basiclite-linuxx64.zip instantclient-sqlplus-linuxx64.zip && \ | |
cd instantclient* && \ | |
rm -f *jdbc* *occi* *mysql* *jar uidrvci genezi adrci && \ | |
echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf && \ | |
ldconfig" | |
- name: Wait for Oracle to be ready | |
run: | | |
echo "Waiting for Oracle to be ready..." | |
until echo "exit" | sqlplus test/test@//127.0.0.1:1521/FREEPDB1; do | |
echo "Waiting for Oracle to be ready..." | |
sleep 10 | |
done | |
- name: Set up Oracle schema | |
run: | | |
echo "Injecting schema and data into Oracle..." | |
sqlplus test/test@//127.0.0.1:1521/FREEPDB1 @njord/db/test/oracle/2_setup.sql | |
- name: Running Integration Tests for Oracle | |
env: | |
ORACLE_DATABASE: FREEPDB1 | |
APP_USER: test | |
APP_USER_PASSWORD: test | |
ORACLE_HOST: 127.0.0.1 | |
run: cargo test --test oracle_tests |