mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-18 05:52:51 +00:00
# Which Problems Are Solved Login integration tests are not executed in the pipeline # How the Problems Are Solved The login integration tests are fixed and added as a pipeline workflow. It tests against the built login docker image. On pipeline failures, developers are guided on how to fix them using a dev container configured for this purpose. # Additional Changes - email domains are replaced by example.com. In case the tests were accidentally run against a cloud instance, it wouldn't cause bounces. - pnpm is upgraded, because the --filter argument doesn't work for the install command on the old version. - The login Dockerfile is optimized for docker image builds # Additional Changes From Review for https://github.com/zitadel/zitadel/pull/10305 These changes were requested from @peintnermax - The base dev container starts without any services besides the database and the dev container itself - CONTRIBUTING.md is restructured - To reproduce pipeline checks, only the devcontainer CLI and Docker are needed. This is described in the CONTRIBUTING.md - The convenience npm script "generate" is added # Additional Context - Follow-up for PR https://github.com/zitadel/zitadel/pull/10305 - Base for https://github.com/zitadel/zitadel/issues/10277
59 lines
2.5 KiB
YAML
59 lines
2.5 KiB
YAML
name: Integration test core
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
login_build_image:
|
|
required: true
|
|
type: string
|
|
|
|
permissions:
|
|
packages: write
|
|
|
|
jobs:
|
|
login-integration-test:
|
|
name: login-integration-test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Dev Container CLI
|
|
run: npm install -g @devcontainers/[email protected]
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
- name: Pull Login Build Image
|
|
run: docker compose --file .devcontainer/login-integration/docker-compose.yaml pull
|
|
env:
|
|
LOGIN_TAG: ${{ inputs.login_build_image }}
|
|
- name: Run Integration Tests against the Login and a Mocked Zitadel API
|
|
run: npm run devcontainer:integration:login
|
|
env:
|
|
LOGIN_TAG: ${{ inputs.login_build_image }}
|
|
DOCKER_BUILDKIT: 1
|
|
- name: Fix Failures
|
|
if: failure()
|
|
run: |
|
|
echo "Reproduce this check locally:"
|
|
echo "LOGIN_TAG=${{ inputs.login_build_image }} npm run devcontainer:integration:login"
|
|
echo "To fix the failures, open the dev container called \"Login Integration Tests\"."
|
|
echo "You will have the same environment as the pipeline check as well as some guidance on how to fix the errors."
|
|
- name: Show Compose Status
|
|
if: failure()
|
|
run: docker compose --file .devcontainer/base/docker-compose.yaml --file .devcontainer/login-integration-ci/docker-compose.yaml ps
|
|
- name: Print Config
|
|
if: failure()
|
|
run: COMPOSE_BAKE=1 docker compose --file .devcontainer/base/docker-compose.yaml --file .devcontainer/login-integration-ci/docker-compose.yaml config login-integration
|
|
env:
|
|
LOGIN_TAG: ${{ inputs.login_build_image }}
|
|
- name: Show Container Logs
|
|
if: failure()
|
|
run: docker compose --file .devcontainer/base/docker-compose.yaml --file .devcontainer/login-integration-ci/docker-compose.yaml logs --timestamps --no-color --tail 100 login-integration
|
|
- name: Inspect All Failed Containers
|
|
if: failure()
|
|
run: |
|
|
docker ps -a --filter "status=exited" --filter "status=created" --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Image}}"
|
|
for container in $(docker ps -a --filter "status=exited" --filter "status=created" -q); do
|
|
echo "Inspecting container $container"
|
|
docker inspect $container || true
|
|
done
|