mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
github workflow: run arm64 tests on every push
Use a template to consolidate arm64 and amd64 test workflows. Enable running armd64 tests on every push and pull request. Signed-off-by: Ivan Valdes <ivan@vald.es>
This commit is contained in:
parent
e300c6f0e3
commit
c3641d34b8
18
.github/workflows/tests-arm64-nightly.yaml
vendored
18
.github/workflows/tests-arm64-nightly.yaml
vendored
@ -1,18 +0,0 @@
|
||||
---
|
||||
name: Integration Arm64 Nightly
|
||||
permissions: read-all
|
||||
on:
|
||||
# schedules always run against the main branch, hence we have to create separate jobs
|
||||
# with individual checkout actions for each of the active release branches
|
||||
schedule:
|
||||
- cron: '30 2 * * *' # runs daily at 2:30 am.
|
||||
jobs:
|
||||
main-arm64:
|
||||
uses: ./.github/workflows/tests-arm64-template.yaml
|
||||
with:
|
||||
etcdBranch: main
|
||||
release-35-arm64:
|
||||
uses: ./.github/workflows/tests-arm64-template.yaml
|
||||
with:
|
||||
etcdBranch: release-3.5
|
||||
gofailMake: "no"
|
69
.github/workflows/tests-arm64-template.yaml
vendored
69
.github/workflows/tests-arm64-template.yaml
vendored
@ -1,69 +0,0 @@
|
||||
---
|
||||
name: Reusable Arm64 Integration Workflow
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
etcdBranch:
|
||||
required: true
|
||||
type: string
|
||||
gofailMake:
|
||||
required: false
|
||||
type: string
|
||||
default: "yes"
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
test:
|
||||
# this is to prevent the job to run at forked projects
|
||||
if: github.repository == 'etcd-io/etcd'
|
||||
runs-on: actuated-arm64-8cpu-32gb
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target:
|
||||
- linux-arm64-integration-1-cpu
|
||||
- linux-arm64-integration-2-cpu
|
||||
- linux-arm64-integration-4-cpu
|
||||
- linux-arm64-unit-4-cpu
|
||||
steps:
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
ref: "${{ inputs.etcdBranch }}"
|
||||
- id: goversion
|
||||
run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT"
|
||||
- uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
|
||||
with:
|
||||
go-version: ${{ steps.goversion.outputs.goversion }}
|
||||
- env:
|
||||
TARGET: ${{ matrix.target }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
go clean -testcache
|
||||
|
||||
mkdir "${TARGET}"
|
||||
export JUNIT_REPORT_DIR=$(realpath ${TARGET})
|
||||
case "${TARGET}" in
|
||||
linux-arm64-integration-1-cpu)
|
||||
if [ "${{ inputs.gofailMake }}" == "yes" ]; then make gofail-enable; fi
|
||||
GOOS=linux GOARCH=arm64 CPU=1 make test-integration
|
||||
;;
|
||||
linux-arm64-integration-2-cpu)
|
||||
if [ "${{ inputs.gofailMake }}" == "yes" ]; then make gofail-enable; fi
|
||||
GOOS=linux GOARCH=arm64 CPU=2 make test-integration
|
||||
;;
|
||||
linux-arm64-integration-4-cpu)
|
||||
if [ "${{ inputs.gofailMake }}" == "yes" ]; then make gofail-enable; fi
|
||||
GOOS=linux GOARCH=arm64 CPU=4 make test-integration
|
||||
;;
|
||||
linux-arm64-unit-4-cpu)
|
||||
GOOS=linux GOARCH=arm64 CPU=4 GO_TEST_FLAGS='-p=2' make test-unit
|
||||
;;
|
||||
*)
|
||||
echo "Failed to find target"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
if: always()
|
||||
with:
|
||||
path: ./**/junit_*.xml
|
72
.github/workflows/tests-template.yaml
vendored
Normal file
72
.github/workflows/tests-template.yaml
vendored
Normal file
@ -0,0 +1,72 @@
|
||||
---
|
||||
name: Reusable Tests Workflow
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
arch:
|
||||
required: true
|
||||
type: string
|
||||
runs-on:
|
||||
required: true
|
||||
type: string
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ${{ inputs.runs-on }}
|
||||
# this is to prevent arm64 jobs from running at forked projects
|
||||
if: inputs.arch == 'amd64' || github.repository == 'etcd-io/etcd'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target:
|
||||
- linux-${{ inputs.arch }}-integration-1-cpu
|
||||
- linux-${{ inputs.arch }}-integration-2-cpu
|
||||
- linux-${{ inputs.arch }}-integration-4-cpu
|
||||
- linux-${{ inputs.arch }}-unit-4-cpu
|
||||
- linux-386-unit-1-cpu
|
||||
steps:
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- id: goversion
|
||||
run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT"
|
||||
- uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
|
||||
with:
|
||||
go-version: ${{ steps.goversion.outputs.goversion }}
|
||||
- env:
|
||||
TARGET: ${{ matrix.target }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
go clean -testcache
|
||||
|
||||
mkdir "${TARGET}"
|
||||
export JUNIT_REPORT_DIR=$(realpath ${TARGET})
|
||||
case "${TARGET}" in
|
||||
linux-${{ inputs.arch }}-integration-1-cpu)
|
||||
make gofail-enable
|
||||
GOOS=linux GOARCH=${{ inputs.arch }} CPU=1 make test-integration
|
||||
;;
|
||||
linux-${{ inputs.arch }}-integration-2-cpu)
|
||||
make gofail-enable
|
||||
GOOS=linux GOARCH=${{ inputs.arch }} CPU=2 make test-integration
|
||||
;;
|
||||
linux-${{ inputs.arch }}-integration-4-cpu)
|
||||
make gofail-enable
|
||||
GOOS=linux GOARCH=${{ inputs.arch }} CPU=4 make test-integration
|
||||
;;
|
||||
linux-${{ inputs.arch }}-unit-4-cpu)
|
||||
GOOS=linux GOARCH=${{ inputs.arch }} CPU=4 GO_TEST_FLAGS='-p=2' make test-unit
|
||||
;;
|
||||
linux-386-unit-1-cpu)
|
||||
# skip running single-threaded 386 unit tests only if arch is arm64
|
||||
if [ "${{ inputs.arch }}" == "arm64" ]; then exit; fi
|
||||
GOOS=linux GOARCH=386 CPU=1 GO_TEST_FLAGS='-p=4' make test-unit
|
||||
;;
|
||||
*)
|
||||
echo "Failed to find target"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
if: always()
|
||||
with:
|
||||
path: ./**/junit_*.xml
|
64
.github/workflows/tests.yaml
vendored
64
.github/workflows/tests.yaml
vendored
@ -3,57 +3,13 @@ name: Tests
|
||||
on: [push, pull_request]
|
||||
permissions: read-all
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target:
|
||||
- linux-amd64-integration-1-cpu
|
||||
- linux-amd64-integration-2-cpu
|
||||
- linux-amd64-integration-4-cpu
|
||||
- linux-amd64-unit-4-cpu
|
||||
- linux-386-unit-1-cpu
|
||||
steps:
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- id: goversion
|
||||
run: echo "goversion=$(cat .go-version)" >> "$GITHUB_OUTPUT"
|
||||
- uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0
|
||||
with:
|
||||
go-version: ${{ steps.goversion.outputs.goversion }}
|
||||
- env:
|
||||
TARGET: ${{ matrix.target }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
go clean -testcache
|
||||
|
||||
mkdir "${TARGET}"
|
||||
export JUNIT_REPORT_DIR=$(realpath ${TARGET})
|
||||
case "${TARGET}" in
|
||||
linux-amd64-integration-1-cpu)
|
||||
make gofail-enable
|
||||
GOOS=linux GOARCH=amd64 CPU=1 make test-integration
|
||||
;;
|
||||
linux-amd64-integration-2-cpu)
|
||||
make gofail-enable
|
||||
GOOS=linux GOARCH=amd64 CPU=2 make test-integration
|
||||
;;
|
||||
linux-amd64-integration-4-cpu)
|
||||
make gofail-enable
|
||||
GOOS=linux GOARCH=amd64 CPU=4 make test-integration
|
||||
;;
|
||||
linux-amd64-unit-4-cpu)
|
||||
GOOS=linux GOARCH=amd64 CPU=4 GO_TEST_FLAGS='-p=2' make test-unit
|
||||
;;
|
||||
linux-386-unit-1-cpu)
|
||||
GOOS=linux GOARCH=386 CPU=1 GO_TEST_FLAGS='-p=4' make test-unit
|
||||
;;
|
||||
*)
|
||||
echo "Failed to find target"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
if: always()
|
||||
with:
|
||||
path: ./**/junit_*.xml
|
||||
amd64:
|
||||
uses: ./.github/workflows/tests-template.yaml
|
||||
with:
|
||||
arch: amd64
|
||||
runs-on: ubuntu-latest
|
||||
arm64:
|
||||
uses: ./.github/workflows/tests-template.yaml
|
||||
with:
|
||||
arch: arm64
|
||||
runs-on: actuated-arm64-8cpu-32gb
|
||||
|
Loading…
x
Reference in New Issue
Block a user