Skip to content

Commit

Permalink
Workflow pipeline with unit tests
Browse files Browse the repository at this point in the history
This adds a unit test workflow and restructures the github workflows
so that we run golangci-lint and unit tests first. Only when they have
succeded will the pipeline continue with e2e tests.
The goal is to conserve resources and avoid running pointless jobs.

Signed-off-by: Lennart Jern <[email protected]>
  • Loading branch information
lentzi90 committed Jun 5, 2024
1 parent a53ead8 commit 2494719
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 29 deletions.
21 changes: 3 additions & 18 deletions .github/workflows/e2e-fixture-test.yml
Original file line number Diff line number Diff line change
@@ -1,30 +1,15 @@
name: E2E Fixture Test

on:
pull_request:
branches:
- 'main'
- 'release-*'
paths-ignore:
- '**/*.md'
- 'docs/**'
- '.gitignore'
- 'hack/*.sh'
- 'LICENSE'
- 'SECURITY_CONTACTS'
- 'DCO'
- 'OWNERS'
workflow_call:

permissions: {}

jobs:
test:
name: e2e test
name: E2E fixture test
runs-on: ubuntu-latest

permissions:
contents: read

steps:
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4

Expand Down Expand Up @@ -52,7 +37,7 @@ jobs:
- name: Upload artifacts
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
with:
name: artifacts.tar.gz
name: artifacts-fixture.tar.gz
path: test/e2e/_artifacts
if-no-files-found: error
overwrite: false
5 changes: 1 addition & 4 deletions .github/workflows/e2e-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,9 @@ permissions: {}

jobs:
test:
name: e2e test
name: E2E test
runs-on: ${{ inputs.runner }}

permissions:
contents: read

steps:
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
with:
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
name: golangci-lint

on:
pull_request:
types: [opened, edited, synchronize, reopened]
workflow_call:

# Remove all permissions from GITHUB_TOKEN except metadata.
permissions: {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: E2E Test
name: E2E Test pipeline

on:
pull_request:
Expand All @@ -9,7 +9,6 @@ on:
- '**/*.md'
- 'docs/**'
- '.gitignore'
- 'hack/*.sh'
- 'LICENSE'
- 'SECURITY_CONTACTS'
- 'DCO'
Expand All @@ -18,15 +17,25 @@ on:
permissions: {}

jobs:
golangci-lint:
uses: ./.github/workflows/golangci-lint.yml

unit:
uses: ./.github/workflows/unit.yml

e2e-fixture-test:
needs: [golangci-lint, unit]
uses: ./.github/workflows/e2e-fixture-test.yml

e2e-test:
needs: [golangci-lint, unit]
strategy:
fail-fast: false
# Avoid wasting CI resources
fail-fast: true
matrix:
bmc-protocol:
- redfish-virtualmedia
- ipmi
uses: ./.github/workflows/e2e-test.yml
with:
bmc-protocol: ${{ matrix.bmc-protocol }}
permissions:
contents: read
25 changes: 25 additions & 0 deletions .github/workflows/unit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: unit

on:
workflow_call:

# Remove all permissions from GITHUB_TOKEN except metadata.
permissions: {}

jobs:
golangci:
name: unit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
- name: Calculate go version
id: vars
run: echo "go_version=$(make go-version)" >> $GITHUB_OUTPUT
- name: Set up Go
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version: ${{ steps.vars.outputs.go_version }}
- name: Run unit tests
run: make -e unit-cover
env:
TEST_FLAGS: "-v"

0 comments on commit 2494719

Please sign in to comment.