Implement EKS E2E Testing Workflow #2275
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. | |
# SPDX-License-Identifier: MIT | |
name: PR Build | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: | |
- main* | |
- feature* | |
types: | |
- opened | |
- synchronize | |
- reopened | |
- ready_for_review | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref_name }} | |
cancel-in-progress: true | |
jobs: | |
changes: | |
name: Check changes | |
runs-on: ubuntu-latest | |
outputs: | |
build: ${{ steps.filter.outputs.build }} | |
lint: ${{ steps.filter.outputs.lint }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dorny/paths-filter@v2 | |
id: filter | |
with: | |
list-files: shell | |
filters: .github/config/file-filters.yml | |
- name: List all updated files | |
run: | | |
for file in ${{ steps.filter.outputs.build_files }}; do | |
echo "$file" | |
done | |
lint: | |
needs: [changes] | |
name: Check lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Go 1.x | |
if: needs.changes.outputs.lint == 'true' | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ~1.22.2 | |
cache: false | |
- name: Check out code | |
if: needs.changes.outputs.lint == 'true' | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Check format | |
if: needs.changes.outputs.lint == 'true' | |
run: | | |
make fmt fmt-sh | |
if [ ! -z "`git status --porcelain`" ]; then | |
echo "make fmt changed files" | |
git status | |
exit 1 | |
fi | |
- name: Check license and imports | |
if: needs.changes.outputs.lint == 'true' | |
run: make lint | |
build: | |
needs: [lint, changes] | |
name: Build ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-2019, windows-latest, macos-13] | |
include: | |
- os: ubuntu-latest | |
family: linux | |
cache-path: | | |
~/.cache/go-build | |
~/go/pkg/mod | |
- os: macos-13 | |
family: darwin | |
cache-path: | | |
~/Library/Caches/go-build | |
~/go/pkg/mod | |
- os: windows-2019 | |
family: windows | |
cache-path: | | |
~\AppData\Local\go-build | |
~\go\pkg\mod | |
- os: windows-latest | |
family: windows | |
cache-path: | | |
~\AppData\Local\go-build | |
~\go\pkg\mod | |
steps: | |
- name: Set up Go 1.x | |
if: needs.changes.outputs.build == 'true' | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ~1.22.2 | |
cache: false | |
- name: Check out code | |
if: needs.changes.outputs.build == 'true' | |
uses: actions/checkout@v3 | |
- name: Cache binaries | |
id: cached_binaries | |
if: needs.changes.outputs.build == 'true' | |
uses: actions/cache@v3 | |
with: | |
key: "cached-binaries-${{ matrix.os }}-${{ github.sha }}" | |
path: go.mod | |
- name: Cache build output | |
if: steps.cached_binaries.outputs.cache-hit != 'true' && needs.changes.outputs.build == 'true' | |
uses: actions/cache@v3 | |
with: | |
path: ${{ matrix.cache-path }} | |
key: v1-go-pkg-mod-${{ matrix.os }}-${{ hashFiles('**/go.sum') }} | |
- name: Install make | |
if: matrix.family == 'windows' && steps.cached_binaries.outputs.cache-hit != 'true' && needs.changes.outputs.build == 'true' | |
run: choco install make | |
- name: Unit Test | |
if: steps.cached_binaries.outputs.cache-hit != 'true' && needs.changes.outputs.build == 'true' | |
run: make test | |
- name: Build | |
if: steps.cached_binaries.outputs.cache-hit != 'true' && needs.changes.outputs.build == 'true' | |
run: make amazon-cloudwatch-agent-${{ matrix.family }} | |
test-data-race: | |
needs: [lint, changes] | |
name: Test data race | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Go 1.x | |
if: needs.changes.outputs.build == 'true' | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ~1.22.2 | |
cache: false | |
- name: Check out code | |
if: needs.changes.outputs.build == 'true' | |
uses: actions/checkout@v3 | |
- name: Test data race | |
if: needs.changes.outputs.build == 'true' | |
run: make test-data-race |