Skip to content

feat: e2e test

feat: e2e test #24

Workflow file for this run

name: CI
on:
push:
env:
SKAFFOLD_VERSION: 2.14.1
jobs:
image-build:
name: Image Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64,linux/arm64
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build images
uses: hiberbee/[email protected]
with:
skaffold-version: ${{ env.SKAFFOLD_VERSION }}
command: build
file-output: images.json
- name: Archive image tags
uses: actions/upload-artifact@v4
with:
name: images
path: images.json
verify:
name: Verify
runs-on: ubuntu-latest
env:
CODECOV_FILE: build/coverage.xml
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
- name: Generate
run: make generate format
- name: No changed files
run: git diff --name-status --exit-code
- name: Lint
run: make lint
- name: Integration test
run: make integration-test coverage
- name: Archive coverage report
uses: actions/upload-artifact@v4
with:
name: coverage
path: ${{ env.CODECOV_FILE }}
e2e:
name: E2E Test
needs:
- verify
- image-build
runs-on: ubuntu-latest
env:
CODECOV_FILE: build/coverage.e2e.xml
SKAFFOLD_NAMESPACE: sandbox
SKAFFOLD_RUN_ID: e2e-test
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download image tags
uses: actions/download-artifact@v4
with:
name: images
- name: Create Kind cluster
uses: helm/kind-action@v1
- name: Bootstrap
run: |
kustomize build --enable-helm config/bootstrap | kubectl apply -f -
kubectl --namespace cert-manager wait --for=condition=Available deployment/cert-manager
kubectl get namespace sandbox || kubectl create namespace sandbox
- name: Deploy
uses: hiberbee/[email protected]
with:
skaffold-version: ${{ env.SKAFFOLD_VERSION }}
command: deploy
images: images.json
profile: e2e
- name: Run e2e tests
uses: hiberbee/[email protected]
with:
skaffold-version: ${{ env.SKAFFOLD_VERSION }}
command: verify
images: images.json
profile: e2e
- name: Fetch coverage
run: make fetch-coverage
- name: Archive coverage report
uses: actions/upload-artifact@v4
with:
name: coverage
path: ${{ env.CODECOV_FILE }}
coverage:
name: Coverage Report
needs:
- verify
- e2e
runs-on: ubuntu-latest
steps:
- name: Download coverage reports
uses: actions/download-artifact@v4
with:
name: coverage
- name: Generate
uses: irongut/[email protected]
with:
filename: build/coverage.xml,build/coverage.e2e.xml
badge: true
format: markdown
output: both