Implements Oracle #192
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" | |
- run: mkdir ${{ github.workspace }}/database-files | |
- uses: gvenzl/setup-oracle-free@v1 | |
with: | |
app-user: njord_user | |
app-user-password: njord_password | |
volume: ${{ github.workspace }}/database-files | |
# startup-scripts: ${{ github.workspace }}/my-scripts | |
# Install Oracle Instant Client | |
- name: Install Oracle Instant Client | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libaio1 | |
wget https://download.oracle.com/otn_software/linux/instantclient/2350000/instantclient-basic-linux.x64-23.5.0.24.07.zip | |
unzip instantclient-basic-linux.x64-23.5.0.24.07.zip | |
sudo mkdir -p /opt/oracle # Create the directory structure if it doesn't exist | |
sudo mv instantclient_23_5 /opt/oracle/instantclient | |
sudo sh -c "echo /opt/oracle/instantclient > /etc/ld.so.conf.d/oracle-instantclient.conf" | |
sudo ldconfig | |
- name: Set Oracle Library Path | |
run: | | |
echo "/opt/oracle/instantclient" | sudo tee -a /etc/ld.so.conf.d/oracle-instantclient.conf | |
sudo ldconfig | |
env: | |
LD_LIBRARY_PATH: "/opt/oracle/instantclient" | |
- name: Check Oracle Client | |
run: | | |
ls /opt/oracle/instantclient | |
ldd /opt/oracle/instantclient/libclntsh.so | |
# - name: Install Oracle Instant Client | |
# run: | | |
# 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 -o instantclient-basiclite-linuxx64.zip | |
# unzip -o instantclient-sqlplus-linuxx64.zip | |
# mkdir -p /opt/oracle/instantclient | |
# mv instantclient_*/* /opt/oracle/instantclient/ | |
# rm -rf instantclient_* | |
# rm -f /opt/oracle/instantclient/*jdbc* /opt/oracle/instantclient/*occi* /opt/oracle/instantclient/*mysql* /opt/oracle/instantclient/*jar /opt/oracle/instantclient/uidrvci /opt/oracle/instantclient/genezi /opt/oracle/instantclient/adrci | |
# echo "/opt/oracle/instantclient" > /etc/ld.so.conf.d/oracle-instantclient.conf | |
# ldconfig | |
# - name: Link sqlplus binary to PATH | |
# run: | | |
# ln -s /opt/oracle/instantclient/sqlplus /usr/bin/sqlplus | |
# - name: Ensure Oracle Instant Client binaries are executable | |
# run: chmod +x /opt/oracle/instantclient/* | |
# - name: Check Oracle container port | |
# run: netstat -an | grep 1521 | |
# - 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 |