This file contains hidden or 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: Test and Publish Docker Image | |
| on: | |
| push: | |
| branches: [ main, master ] | |
| tags: [ 'v*' ] | |
| pull_request: | |
| branches: [ main, master ] | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }} | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| version: "latest" | |
| - name: Set up Python | |
| run: uv python install 3.11 | |
| - name: Install dependencies | |
| run: uv sync --extra test | |
| - name: Build Docker image for testing | |
| run: docker build -t bracegreen-test . | |
| - name: Start green agent container | |
| run: | | |
| docker run -d --name green-agent -p 9001:9001 \ | |
| -e OPENAI_API_KEY="${{ secrets.OPENAI_API_KEY }}" \ | |
| -e OPENAI_BASE_URL="${{ secrets.OPENAI_BASE_URL }}" \ | |
| -e DATA_REPO_URL="${{ secrets.DATA_REPO_URL }}" \ | |
| -e DATA_BRANCH="${{ secrets.DATA_BRANCH }}" \ | |
| bracegreen-test | |
| - name: Wait for agent to be ready | |
| run: | | |
| timeout 60 bash -c 'until curl -f http://localhost:9001/ > /dev/null 2>&1; do sleep 2; done' || \ | |
| (docker logs green-agent && exit 1) | |
| - name: Run A2A conformance tests | |
| run: uv run pytest tests/test_agent.py -v --tb=short | |
| - name: Show agent logs on failure | |
| if: failure() | |
| run: docker logs green-agent | |
| - name: Stop containers | |
| if: always() | |
| run: docker stop green-agent && docker rm green-agent | |
| build-and-publish: | |
| needs: test | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'push' | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Log in to Container Registry | |
| if: github.event_name != 'pull_request' | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract metadata | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
| tags: | | |
| type=ref,event=branch | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=semver,pattern={{major}} | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| - name: Build and push Docker image | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |