From 89eec088ae4683342342f46a4b664e4fde4cddc9 Mon Sep 17 00:00:00 2001 From: pgoslatara Date: Sat, 29 Jun 2024 23:03:31 +0200 Subject: [PATCH] Adding e2e test --- .github/workflows/ci_pipeline.yml | 84 +++++++++++++++++++++++++++++-- 1 file changed, 81 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml index 783c2bac..f5f000e6 100644 --- a/.github/workflows/ci_pipeline.yml +++ b/.github/workflows/ci_pipeline.yml @@ -6,12 +6,17 @@ on: branches: - main +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + env: + IMAGE_NAME: ${{ github.repository }} POETRY_VERSION: "1.7.1" + REGISTRY: ghcr.io jobs: pre-commit: - name: Run pre-commit runs-on: ubuntu-latest steps: - name: Checkout @@ -51,8 +56,7 @@ jobs: - name: Run pre-commit run: poetry run pre-commit run - ci_pipeline: - name: CI Pipeline + unit-tests: needs: [pre-commit] runs-on: ubuntu-latest permissions: @@ -116,3 +120,77 @@ jobs: title: Coverage Report badge-title: Coverage junitxml-path: ./coverage.xml + + e2e-tests: + needs: [pre-commit] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Python + id: setup-python + uses: actions/setup-python@v5 + + - name: Load cached Poetry installation + id: cached-poetry + uses: actions/cache@v4 + with: + path: /home/runner/.local + key: poetry-cache-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ env.POETRY_VERSION }} + + - name: Install Poetry + if: steps.cached-poetry.outputs.cache-hit != 'true' + uses: snok/install-poetry@v1 + with: + installer-parallel: true + version: ${{ env.POETRY_VERSION }} + virtualenvs-create: true + virtualenvs-in-project: true + + - name: Load cached venv + id: cached-poetry-dependencies + uses: actions/cache@v4 + with: + path: .venv + key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }} + + - name: Install dependencies + if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' + run: poetry install --no-interaction --no-ansi + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=ci + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Determine python version + id: python-version + run: | + export PYTHON_VERSION=$(cat .python-version) + echo "PYTHON_VERSION: $PYTHON_VERSION" + echo "PYTHON_VERSION=$PYTHON_VERSION" >> $GITHUB_OUTPUT + + - name: Build and push image + id: push + uses: docker/build-push-action@v5 + with: + build-args: PYTHON_VERSION=${{ steps.python-version.outputs.PYTHON_VERSION }} + cache-from: type=gha + cache-to: type=gha,mode=max + context: . + load: true + push: false + + - name: Run e2e test + run: | + docker run --rm \ + --volume "$PWD/dbt_project":/app/dbt_project \ + dbt_bouncer:ci \ + poetry run dbt_bouncer --dbt-project-dir dbt_project