name: soaricarus_api CI on: push: branches: [ "main" ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: check: name: Check runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: 1.97 - uses: Swatinem/rust-cache@v2 - run: | mkdir -p ~/.ssh echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/soaricarus_models_deploy_key chmod 600 ~/.ssh/soaricarus_models_deploy_key ssh-keyscan ${{ secrets.MYHOST }} >> ~/.ssh/known_hosts eval $(ssh-agent -s) ssh-add -v ~/.ssh/soaricarus_models_deploy_key cargo check test: name: Test Suite runs-on: ubuntu-24.04 timeout-minutes: 20 services: postgres: image: postgres:18.4-alpine env: POSTGRES_USER: ${{ secrets.DB_TEST_USER || 'testuser' }} POSTGRES_PASSWORD: ${{ secrets.DB_TEST_PASSWORD || 'testpassword' }} POSTGRES_DB: ${{ secrets.DB_TEST_NAME || 'testdb' }} options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: 1.97 - uses: Swatinem/rust-cache@v2 - name: Verify Docker Environment run: | echo "Runner User Info:" id echo "Checking Docker Version:" docker --version echo "Checking Docker Daemon Status (info):" docker info echo "Checking Docker Daemon Status (ps):" docker ps -a echo "Docker environment check complete." - name: Setup S3 env: GARAGE_DEFAULT_ACCESS_KEY: "${{ secrets.GARAGE_KEY_ID }}" GARAGE_DEFAULT_SECRET_KEY: "${{ secrets.GARAGE_SECRET }}" GARAGE_DEFAULT_BUCKET: "soaricarus-ci-bucket" AWS_ACCESS_KEY_ID: "${{ secrets.GARAGE_KEY_ID }}" AWS_SECRET_ACCESS_KEY: "${{ secrets.GARAGE_SECRET }}" AWS_DEFAULT_REGION: us-east-1 run: | sudo apt update sudo apt install curl unzip -y curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install aws --version # curl -v ${{ secrets.S3_CI_ENDPOINT_URL }} # Create bucket aws --endpoint-url=${{ secrets.S3_CI_ENDPOINT_URL }} s3 mb s3://soaricarus-ci-bucket --region us-east-1 - name: Run tests env: # Define DATABASE_URL for tests to use DATABASE_URL: postgresql://${{ secrets.DB_TEST_USER || 'testuser' }}:${{ secrets.DB_TEST_PASSWORD || 'testpassword' }}@postgres:5432/${{ secrets.DB_TEST_NAME || 'testdb' }} RUST_LOG: info # Optional: configure test log level SECRET_MAIN_KEY: ${{ secrets.TOKEN_SECRET_KEY }} SSH_AUTH_SOCK: ${{ env.SSH_AUTH_SOCK }} ROOT_DIRECTORY: "/tmp" AWS_ACCESS_KEY_ID: ${{ secrets.GARAGE_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.GARAGE_SECRET }} AWS_DEFAULT_REGION: us-east-1 GARAGE_DEFAULT_ACCESS_KEY: ${{ secrets.GARAGE_KEY_ID }} GARAGE_DEFAULT_SECRET_KEY: ${{ secrets.GARAGE_SECRET }} GARAGE_S3_REGION: us-east-1 S3_BUCKET_NAME: "soaricarus-ci-bucket" S3_ENDPOINT_URL: "http://localhost:3900" AWS_S3_FORCE_PATH_STYLE: "true" run: | mkdir -p ~/.ssh echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/soaricarus_models_deploy_key chmod 600 ~/.ssh/soaricarus_models_deploy_key ssh-keyscan ${{ secrets.MYHOST }} >> ~/.ssh/known_hosts eval $(ssh-agent -s) ssh-add -v ~/.ssh/soaricarus_models_deploy_key cargo test - name: Cleanup if: always() run: | aws --endpoint-url=${{ secrets.S3_CI_ENDPOINT_URL }} \ s3 rb s3://soaricarus-ci-bucket --force \ --region us-east-1 env: AWS_ACCESS_KEY_ID: "${{ secrets.GARAGE_KEY_ID }}" AWS_SECRET_ACCESS_KEY: "${{ secrets.GARAGE_SECRET }}" AWS_DEFAULT_REGION: us-east-1 continue-on-error: true fmt: name: Rustfmt runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: 1.97 - uses: Swatinem/rust-cache@v2 - run: rustup component add rustfmt - run: | mkdir -p ~/.ssh echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/soaricarus_models_deploy_key chmod 600 ~/.ssh/soaricarus_models_deploy_key ssh-keyscan ${{ secrets.MYHOST }} >> ~/.ssh/known_hosts eval $(ssh-agent -s) ssh-add -v ~/.ssh/soaricarus_models_deploy_key cargo fmt --all -- --check clippy: name: Clippy runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: 1.97 - uses: Swatinem/rust-cache@v2 - run: rustup component add clippy - run: | mkdir -p ~/.ssh echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/soaricarus_models_deploy_key chmod 600 ~/.ssh/soaricarus_models_deploy_key ssh-keyscan ${{ secrets.MYHOST }} >> ~/.ssh/known_hosts eval $(ssh-agent -s) ssh-add -v ~/.ssh/soaricarus_models_deploy_key cargo clippy -- -D warnings build: name: build runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: 1.97 - uses: Swatinem/rust-cache@v2 - run: | mkdir -p ~/.ssh echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/soaricarus_models_deploy_key chmod 600 ~/.ssh/soaricarus_models_deploy_key ssh-keyscan ${{ secrets.MYHOST }} >> ~/.ssh/known_hosts eval $(ssh-agent -s) ssh-add -v ~/.ssh/soaricarus_models_deploy_key cargo build --release