Skip to content

Commit

Permalink
split out e2e tests into its own gha file
Browse files Browse the repository at this point in the history
  • Loading branch information
eljohnson92 committed May 2, 2024
1 parent 2f81203 commit 9cce404
Show file tree
Hide file tree
Showing 3 changed files with 146 additions and 92 deletions.
128 changes: 38 additions & 90 deletions .github/workflows/build_test_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,49 @@ on:
push:
branches:
- main
paths-ignore:
- '**/**.md'
- 'docs/**'
pull_request:
branches:
- "*"
paths-ignore:
- '**/**.md'
- 'docs/**'
workflow_dispatch:

permissions:
contents: read
pull-requests: read
actions: read

concurrency:
group: build-test-ci-${{ github.ref }}-1
group: build-test-ci-${{ github.ref }}
cancel-in-progress: true

jobs:
changes:
runs-on: ubuntu-latest
outputs:
# Expose matched filters as job 'src' output variable
src: ${{ steps.filter.outputs.src }}
steps:
- uses: actions/checkout@v4
- name: Harden Runner
uses: step-security/harden-runner@v2
with:
disable-sudo: true
egress-policy: block
allowed-endpoints: >
api.github.com:443
github.com:443
- uses: dorny/paths-filter@v3
id: filter
with:
predicate-quantifier: 'every'
filters: |
src:
- '!**/**.md'
- '!docs/**'
go-build-test:
runs-on: ubuntu-latest
needs: changes
if: ${{ needs.changes.outputs.src == 'true' }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@v2
Expand Down Expand Up @@ -70,91 +90,19 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
slug: linode/cluster-api-provider-linode

e2e-test:
needs: [go-build-test, docker-build]
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false
env:
GITHUB_TOKEN: ${{ secrets.github_token }}
LINODE_TOKEN: ${{ secrets.LINODE_TOKEN }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@v2
with:
disable-sudo: true
egress-policy: block
allowed-endpoints: >
api.linode.com:443
api.github.com:443
github.com:443
gcr.io:443
ghcr.io:443
proxy.golang.org:443
sum.golang.org:443
*.githubusercontent.com:443
docker.io:443
registry-1.docker.io:443
auth.docker.io:443
production.cloudflare.docker.com:443
storage.googleapis.com:443
registry.k8s.io:443
*.pkg.dev:443
*.amazonaws.com:443
*.blob.core.windows.net:443
quay.io:443
*.quay.io:443
api.snapcraft.io:443
cloud.tilt.dev:443
kubernetes-sigs.github.io:443
charts.jetstack.io:443
helm.cilium.io:443
linode.github.io:443
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
check-latest: true

- name: Docker cache
uses: ScribeMD/[email protected]
with:
key: docker-${{ runner.os }}-${{ hashFiles('go.sum') }}

- name: Complete E2E Test
if: github.ref == 'refs/heads/main'
run: make e2etest
env:
E2E_FLAGS: '--assert-timeout 15m0s'
INSTALL_K3S_PROVIDER: true
INSTALL_RKE2_PROVIDER: true
LINODE_REGION: us-sea
LINODE_CONTROL_PLANE_MACHINE_TYPE: g6-standard-2
LINODE_MACHINE_TYPE: g6-standard-2
CLUSTERCTL_CONFIG: /home/runner/work/cluster-api-provider-linode/cluster-api-provider-linode/e2e/gha-clusterctl-config.yaml


- name: Quick E2E Test
if: github.ref != 'refs/heads/main'
run: make e2etest
env:
E2E_FLAGS: '--selector quick'

- name: Copy logs
if: ${{ always() }}
run: docker cp tilt-control-plane:/var/log .logs

- uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: logs
path: .logs/*
overwrite: true
trigger-e2e-test:
needs: changes
if: ${{ github.event.pull_request.draft == false && needs.changes.outputs.src == 'true' }}
uses: ./.github/workflows/e2e-test.yaml
secrets: inherit
with:
e2e-selector: ${{ github.ref == 'refs/heads/main' && 'all' || 'quick' }}
e2e-flags: ${{ github.ref == 'refs/heads/main' && '--assert-timeout 15m0s' }}

docker-build:
runs-on: ubuntu-latest
needs: changes
if: ${{ needs.changes.outputs.src == 'true' }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@v2
Expand Down
106 changes: 106 additions & 0 deletions .github/workflows/e2e-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Run e2e tests

on:
workflow_call:
inputs:
e2e-selector:
default: quick
description: "Selector for which tests to run, defaults to 'quick'"
type: string
e2e-flags:
type: string
description: "Flags to pass to chainsaw when running e2e tests"
workflow_dispatch:
inputs:
e2e-selector:
default: quick
description: "Selector for which tests to run, defaults to 'quick'"
type: string
e2e-flags:
type: string
description: "Flags to pass to chainsaw when running e2e tests"

permissions:
contents: read
pull-requests: read
actions: read

concurrency:
group: e2e-${{ github.ref }}
cancel-in-progress: true

jobs:
e2e-test:
timeout-minutes: 1200
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.github_token }}
LINODE_TOKEN: ${{ secrets.LINODE_TOKEN }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@v2
with:
disable-sudo: true
egress-policy: block
allowed-endpoints: >
api.linode.com:443
api.github.com:443
github.com:443
gcr.io:443
ghcr.io:443
proxy.golang.org:443
sum.golang.org:443
*.githubusercontent.com:443
docker.io:443
registry-1.docker.io:443
auth.docker.io:443
production.cloudflare.docker.com:443
storage.googleapis.com:443
registry.k8s.io:443
*.pkg.dev:443
*.amazonaws.com:443
*.blob.core.windows.net:443
quay.io:443
*.quay.io:443
api.snapcraft.io:443
cloud.tilt.dev:443
kubernetes-sigs.github.io:443
charts.jetstack.io:443
helm.cilium.io:443
linode.github.io:443
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
check-latest: true

- name: Docker cache
uses: ScribeMD/[email protected]
with:
key: docker-${{ runner.os }}-${{ hashFiles('go.sum') }}

- name: Run E2E Test
env:
E2E_FLAGS: ${{ inputs.e2e-selector }}
E2E_SELECTOR: ${{ inputs.e2e-selector }}
INSTALL_K3S_PROVIDER: true
INSTALL_RKE2_PROVIDER: true
LINODE_REGION: us-sea
LINODE_CONTROL_PLANE_MACHINE_TYPE: g6-standard-2
LINODE_MACHINE_TYPE: g6-standard-2
CLUSTERCTL_CONFIG: /home/runner/work/cluster-api-provider-linode/cluster-api-provider-linode/e2e/gha-clusterctl-config.yaml
run: make e2etest

- name: Copy logs
if: ${{ always() }}
run: docker cp tilt-control-plane:/var/log .logs

- uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: logs
path: .logs/*
overwrite: true
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ gosec: ## Run gosec against code.

.PHONY: lint
lint: ## Run lint against code.
docker run --rm -w /workdir -v $(PWD):/workdir golangci/golangci-lint:v1.57.2 golangci-lint run -c .golangci.yml
docker run --rm -w /workdir -v $(PWD):/workdir golangci/golangci-lint:v1.57.2 golangci-lint run -c .golangci.yml --fix

.PHONY: nilcheck
nilcheck: nilaway ## Run nil check against code.
Expand Down Expand Up @@ -147,7 +147,7 @@ test: generate fmt vet envtest ## Run tests.

.PHONY: e2etest
e2etest: generate local-release local-deploy chainsaw
GIT_REF=$(GIT_REF) $(CHAINSAW) test ./e2e $(E2E_FLAGS)
GIT_REF=$(GIT_REF) $(CHAINSAW) test ./e2e --selector $(E2E_SELECTOR) $(E2E_FLAGS)

local-deploy: kind ctlptl tilt kustomize clusterctl
@echo -n "LINODE_TOKEN=$(LINODE_TOKEN)" > config/default/.env.linode
Expand Down

0 comments on commit 9cce404

Please sign in to comment.