Skip to content

Implements Oracle

Implements Oracle #181

Workflow file for this run

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
volumes:
- ./njord_examples/oracle/init_scripts:/container-entrypoint-initdb.d
- ./njord/db/test/oracle:/container-entrypoint-initdb.d
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: |
docker exec oracle sh -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