name: docker on: push: pull_request: jobs: lint: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements-dev.txt - name: Run lint run: | ruff check src tests ruff format --check src tests black --check src tests mypy src test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements-dev.txt - name: Run tests run: pytest --cov=aegis_gitea_mcp --cov-report=term-missing --cov-fail-under=80 docker-build: runs-on: ubuntu-latest needs: [lint, test] env: IMAGE_NAME: aegis-gitea-mcp steps: - name: Checkout uses: actions/checkout@v4 - name: Build image tagged with commit SHA run: | SHA_TAG="${GITHUB_SHA:-${CI_COMMIT_SHA:-local}}" docker build -f docker/Dockerfile -t ${IMAGE_NAME}:${SHA_TAG} . - name: Tag latest on main run: | REF_NAME="${GITHUB_REF_NAME:-${CI_COMMIT_REF_NAME:-}}" SHA_TAG="${GITHUB_SHA:-${CI_COMMIT_SHA:-local}}" if [ "${REF_NAME}" = "main" ]; then docker tag ${IMAGE_NAME}:${SHA_TAG} ${IMAGE_NAME}:latest fi - name: Optional registry push if: ${{ vars.PUSH_IMAGE == 'true' }} run: | SHA_TAG="${GITHUB_SHA:-${CI_COMMIT_SHA:-local}}" docker push ${IMAGE_NAME}:${SHA_TAG} REF_NAME="${GITHUB_REF_NAME:-${CI_COMMIT_REF_NAME:-}}" if [ "${REF_NAME}" = "main" ]; then docker push ${IMAGE_NAME}:latest fi