Switch printlns to log crate statements (#197) #242
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 | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
paths-ignore: | |
- "**/README.md" | |
- "**/LICENSE" | |
- "**/SECURITY.md" | |
- "**/.gitignore" | |
- "**/resources/**" | |
- "**/.github/ISSUE_TEMPLATE/**" | |
- "**/website/**" | |
jobs: | |
# Splitting out into separate jobs for linting on all targets/features | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- 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 | |
sqlite: | |
name: sqlite | |
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: Build Project | |
run: | | |
cd njord | |
cargo build --release --features "sqlite" | |
- name: Running Integration Tests for SQLite | |
run: | | |
cd njord | |
cargo test --features "sqlite" --test sqlite_tests | |
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: Build Project | |
run: | | |
cd njord | |
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: | | |
cd njord | |
cargo test --features "mysql" --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: Build Project | |
run: | | |
cd njord | |
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: | | |
cd njord | |
cargo test --features "oracle" --test oracle_tests | |
mssql: | |
name: mssql | |
runs-on: ubuntu-20.04 | |
services: | |
mssql: | |
image: mcr.microsoft.com/mssql/server:2019-latest | |
ports: | |
- 1433:1433 | |
env: | |
ACCEPT_EULA: Y | |
MSSQL_SA_PASSWORD: Njord_passw0rd | |
MSSQL_PID: Developer | |
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: Build Project | |
run: | | |
cd njord | |
cargo build --release --features "mssql" | |
- name: Wait for SQL Server to be ready | |
run: | | |
echo "Waiting for SQL Server to be fully operational..." | |
until /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Njord_passw0rd -Q "SELECT @@VERSION" > /dev/null 2>&1 | |
do | |
echo "SQL Server is still initializing. Waiting..." | |
sleep 5 | |
done | |
echo "SQL Server is now operational." | |
- name: Set up MSSQL schema | |
run: | | |
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Njord_passw0rd -C -i "${{ github.workspace }}/njord/db/test/mssql/setup.sql" | |
- name: Running Integration Tests for MSSQL | |
env: | |
MSSQL_DATABASE: NjordDatabase | |
MSSQL_USER: sa | |
MSSQL_PASSWORD: Njord_passw0rd | |
MSSQL_HOST: mssql | |
run: | | |
cd njord | |
cargo test --features "mssql" --test mssql_tests |