Adding more planned databases (#185) #205
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 | |
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 }}/njord/db/test/oracle | |
# 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: 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 |