Skip to content

Commit

Permalink
Implement oracle and split builds
Browse files Browse the repository at this point in the history
  • Loading branch information
chaseWillden committed Oct 24, 2024
1 parent 8630a3a commit 154aa65
Show file tree
Hide file tree
Showing 26 changed files with 3,006 additions and 22 deletions.
94 changes: 80 additions & 14 deletions .github/workflows/core.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: build
name: build-mysql

on:
push:
Expand All @@ -17,8 +17,8 @@ on:
- "**/website/**"

jobs:
build:
name: build
mysql:
name: mysql
runs-on: ubuntu-latest

services:
Expand Down Expand Up @@ -57,13 +57,7 @@ jobs:
run: cargo clippy --all-targets --all-features

- name: Build Project
run: cargo build --release

- name: Running Unit Tests for SQLite
run: cargo test sqlite

- name: Running Integration Tests for SQLite
run: cargo test --test sqlite_tests
run: cargo build --release --features "mysql"

- name: Wait for MySQL to be ready
run: |
Expand All @@ -74,18 +68,90 @@ jobs:
- name: Set up MySQL schema
env:
MYSQL_PWD: rootpassword
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 Unit Tests for MySQL
run: cargo test mysql

- 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: |
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
161 changes: 156 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ members = [
"njord_derive",
"njord_examples/sqlite",
"njord_examples/mysql",
"njord_examples/oracle",
]

resolver = "2"
Loading

0 comments on commit 154aa65

Please sign in to comment.