Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: enhance ci with test matrix #519

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 31 additions & 3 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,46 @@ on:
jobs:

build-test:
runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
cache: true
- name: Cache Go modules
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: build
run: make build

unit-test:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our go-test does not depend on a working Kubernetes cluster.

So we might split this unit-test into two, unit-test and probably e2e-test:

  • unit-test should not depend on K8s, and simply setting up Go, go cache, and running go test ./... (via make) should do the job.
  • e2e-test should run the e2e tests written in shellscript, which depends on a working Kubernetes cluster.

This way, we won't need a lot of if: ${{ matrix.os == 'ubuntu-latest' }}, because:

  • unit-test should run all the steps against all the supported oses.
  • e2e-test should run all the steps against all the supported oses. (Not sure if kind is able to run on all the managed GHA runners, especially macos and windows, but that's the idea.)

WDYT?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that sounds like an idea that can work: One question I have here is, which tests? are unit and which are e2e they are not listed from what it seems

runs-on: ubuntu-latest
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
fail-fast: false
runs-on: ${{ matrix.os }}
env:
SKIP_TESTS: true
steps:
- name: Create k8s Kind Cluster
if: ${{ matrix.os == 'ubuntu-latest' }} # Only runs on Ubuntu
uses: helm/[email protected]
with:
cluster_name: cluster
- name: Set k8s provider
if: ${{ matrix.os == 'ubuntu-latest' }} # Only runs on Ubuntu
run: |
kubectl create namespace test-namespace
kubectl create secret generic mysecret -n test-namespace --from-literal=key=p4ssw0rd
Expand All @@ -40,5 +59,14 @@ jobs:
with:
go-version-file: 'go.mod'
cache: true
- name: Cache Go modules
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: test
run: make test
run: make test
Loading