From 1e3a89f146bb2c7c9ee008c409b5471077c2cd60 Mon Sep 17 00:00:00 2001 From: phoenix Date: Thu, 9 Jul 2026 10:41:03 -0400 Subject: [PATCH] Workflow update --- .github/workflows/workflow.yml | 170 ++++++++++++++++++++++----------- 1 file changed, 115 insertions(+), 55 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index a1644b5..c0f4af6 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -10,18 +10,38 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true + jobs: - build: + check: + name: Check + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v6 + - uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: 1.96.1 + - uses: Swatinem/rust-cache@v2 + - run: | + mkdir -p ~/.ssh + echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/icarus_models_deploy_key + chmod 600 ~/.ssh/icarus_models_deploy_key + ssh-keyscan ${{ vars.MYHOST }} >> ~/.ssh/known_hosts + + eval $(ssh-agent -s) + ssh-add -v ~/.ssh/icarus_models_deploy_key + + cargo check + + test: + name: Test Suite runs-on: ubuntu-24.04 services: postgres: - image: postgres:18.3-alpine + image: postgres:18.4-alpine env: - POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} - POSTGRES_USER: ${{ secrets.POSTGRES_USER }} - POSTGRES_DB: ${{ secrets.POSTGRES_DB }} - ports: - - 5432:5432 + 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 @@ -29,56 +49,96 @@ jobs: --health-retries 5 steps: - - uses: actions/checkout@v6 - - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.96.1 - components: clippy, rustfmt - override: true - - - name: Cache dependencies - uses: Swatinem/rust-cache@v2 - - - name: Install libpq - run: | - sudo apt-get update - sudo apt-get install -y libpq-dev postgresql-client - - - name: Setup test database - env: - DATABASE_URL: "postgres://${{ secrets.POSTGRES_USER }}:${{ secrets.POSTGRES_PASSWORD }}@localhost:5432/${{ secrets.POSTGRES_DB }}" - run: | - # Wait for PostgreSQL to be ready - for i in {1..10}; do - pg_isready -U ${{ secrets.POSTGRES_USER }} -d ${{ secrets.POSTGRES_DB }} && break - sleep 2 - done + - uses: actions/checkout@v6 + - uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: 1.96.1 + - 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: 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_KEY: ${{ secrets.TOKEN_SECRET_KEY }} + SSH_AUTH_SOCK: ${{ env.SSH_AUTH_SOCK }} + ROOT_DIRECTORY: "/tmp" + run: | + mkdir -p ~/.ssh + echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/icarus_models_deploy_key + chmod 600 ~/.ssh/icarus_models_deploy_key + ssh-keyscan ${{ vars.MYHOST }} >> ~/.ssh/known_hosts - cargo install sqlx-cli --no-default-features --features native-tls,postgres - sqlx migrate run --database-url $DATABASE_URL + eval $(ssh-agent -s) + ssh-add -v ~/.ssh/icarus_models_deploy_key - - name: Build - run: | - mkdir -p ~/.ssh - echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/gitea_deploy_key - chmod 600 ~/.ssh/gitea_deploy_key - ssh-keyscan ${{ secrets.MYHOST }} >> ~/.ssh/known_hosts - eval $(ssh-agent -s) - ssh-add -v ~/.ssh/gitea_deploy_key - cargo build --verbose --release + cargo test - - name: Run tests - env: - ROOT_DIRECTORY: "/tmp" - DATABASE_URL: "postgres://${{ secrets.POSTGRES_USER }}:${{ secrets.POSTGRES_PASSWORD }}@localhost:5432/${{ secrets.POSTGRES_DB }}" - run: | - cat .env.sample | head -6 > .env - cargo test --verbose -- + fmt: + name: Rustfmt + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v6 + - uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: 1.96.1 + - uses: Swatinem/rust-cache@v2 + - run: rustup component add rustfmt + - run: | + mkdir -p ~/.ssh + echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/icarus_models_deploy_key + chmod 600 ~/.ssh/icarus_models_deploy_key + ssh-keyscan ${{ vars.MYHOST }} >> ~/.ssh/known_hosts - - name: Run clippy - run: cargo clippy -- -D warnings + eval $(ssh-agent -s) + ssh-add -v ~/.ssh/icarus_models_deploy_key + cargo fmt --all -- --check - - name: Run rustfmt - run: 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.96.1 + - uses: Swatinem/rust-cache@v2 + - run: rustup component add clippy + - run: | + mkdir -p ~/.ssh + echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/icarus_models_deploy_key + chmod 600 ~/.ssh/icarus_models_deploy_key + ssh-keyscan ${{ vars.MYHOST }} >> ~/.ssh/known_hosts + + eval $(ssh-agent -s) + ssh-add -v ~/.ssh/icarus_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.96.1 + - uses: Swatinem/rust-cache@v2 + - run: | + mkdir -p ~/.ssh + echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/icarus_models_deploy_key + chmod 600 ~/.ssh/icarus_models_deploy_key + ssh-keyscan ${{ vars.MYHOST }} >> ~/.ssh/known_hosts + + eval $(ssh-agent -s) + ssh-add -v ~/.ssh/icarus_models_deploy_key + cargo build --release