name: Integration
on:
workflow_dispatch:
pull_request:
branches:
- "**"
paths:
- "Cargo.toml"
- "Cargo.lock"
- "src/**"
- "tests/**"
- ".github/workflows/integration.yml"
push:
branches:
- main
paths:
- "Cargo.toml"
- "Cargo.lock"
- "src/**"
- "tests/**"
- ".github/workflows/integration.yml"
schedule:
- cron: "0 6 * * 1"
jobs:
smoke:
runs-on: big
timeout-minutes: 30
env:
INFRAHUB_VERSION: 1.8.2
INFRAHUB_URL: http://localhost:8000
INFRAHUB_ADMIN_PASSWORD: ci-admin-password
INFRAHUB_ADMIN_TOKEN: ci-admin-token
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Download Infrahub docker compose
run: |
curl -sSfL \
"https://raw.githubusercontent.com/opsmill/infrahub/infrahub-v${INFRAHUB_VERSION}/docker-compose.yml" \
-o /tmp/infrahub-compose.yml
- name: Start Infrahub
env:
VERSION: ${{ env.INFRAHUB_VERSION }}
INFRAHUB_IMAGE_TAG: ${{ env.INFRAHUB_VERSION }}
INFRAHUB_INITIAL_ADMIN_PASSWORD: ${{ env.INFRAHUB_ADMIN_PASSWORD }}
INFRAHUB_INITIAL_ADMIN_TOKEN: ${{ env.INFRAHUB_ADMIN_TOKEN }}
run: docker compose -f /tmp/infrahub-compose.yml up -d
- name: Wait for Infrahub readiness
run: |
set -euo pipefail
for i in $(seq 1 180); do
if curl -fsS "${INFRAHUB_URL}/api/config" >/dev/null 2>&1; then
echo "Infrahub is ready after ${i} checks"
exit 0
fi
sleep 5
done
echo "Infrahub failed readiness checks; dumping logs"
docker compose -f /tmp/infrahub-compose.yml logs --tail 200 || true
exit 1
- name: Run smoke tests
env:
INFRAHUB_TOKEN: ${{ env.INFRAHUB_ADMIN_TOKEN }}
run: cargo test -p infrahub --test smoke_query