Skip to content

Bump docker/setup-qemu-action from 2 to 3 (#3832) #12

Bump docker/setup-qemu-action from 2 to 3 (#3832)

Bump docker/setup-qemu-action from 2 to 3 (#3832) #12

name: build-and-test
on:
push:
branches:
- main
pull_request:
paths:
- '.github/workflows/build-and-test.yml'
- 'cmd/**'
- 'internal/**'
- 'pkg/**'
- 'tests/**'
- 'Makefile'
- 'Makefile.common'
- 'go.mod'
- 'go.sum'
- '!**.md'
- '!internal/buildscripts/packaging/**'
concurrency:
group: build-and-test-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
GO_VERSION: 1.20.10
jobs:
setup-environment:
name: setup-environment
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
runs-on: ubuntu-20.04
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: '**/go.sum'
- name: Installing dependency
run: |
make install-tools
tidy:
name: tidy
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
runs-on: ubuntu-20.04
needs: [setup-environment]
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: '**/go.sum'
- name: tidy
run: |
make install-tools
make for-all CMD="make tidy"
if ! git diff --exit-code; then
echo "One or more Go files are not tidied. Run 'make for-all CMD="make tidy"' and push the changes."
exit 1
fi
gofmt:
name: gofmt
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
runs-on: ubuntu-20.04
needs: [setup-environment]
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: '**/go.sum'
- name: gofmt
run: |
make install-tools
make fmt
if ! git diff --exit-code; then
echo "One or more Go files are not formatted correctly. Run 'make fmt' and push the changes."
exit 1
fi
generate-metrics:
name: generate-metrics
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
runs-on: ubuntu-20.04
needs: [setup-environment]
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: '**/go.sum'
- name: install-tools
run: make install-tools
- name: generate-metrics
run: |
make generate-metrics
if ! git diff --exit-code; then
echo "Generated code is out of date. Run 'make generate-metrics' and push the changes."
exit 1
fi
lint:
name: lint
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
runs-on: ubuntu-20.04
needs: [setup-environment]
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: '**/go.sum'
- run: echo "GOLANGCI_LINT_CACHE=${HOME}/.cache/golangci-lint" >> $GITHUB_ENV
- uses: actions/cache@v3
with:
path: ${{ env.GOLANGCI_LINT_CACHE }}
key: golangci-lint-${{ hashFiles('**/.golangci.yml', '**/*.go', '**/go.sum') }}
- name: Lint
run: |
make install-tools
make for-all CMD="make lint"
test:
name: test
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
runs-on: ubuntu-20.04
needs: [setup-environment]
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: '**/go.sum'
- name: Unit tests
run: |
set -o pipefail
make install-tools
mkdir -p unit-test-results/junit
trap "go-junit-report -set-exit-code < unit-test-results/go-unit-tests.out > unit-test-results/junit/results.xml" EXIT
make for-all CMD="make test" | tee unit-test-results/go-unit-tests.out
- name: Uploading artifacts
uses: actions/upload-artifact@v3
with:
name: unit-test-results
path: ./unit-test-results
coverage:
name: coverage
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
runs-on: ubuntu-20.04
needs: [setup-environment]
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: '**/go.sum'
- name: Coverage tests
run: |
make install-tools
make test-with-cover
- name: Uploading artifacts
uses: actions/upload-artifact@v3
with:
name: coverage-results
path: ./coverage.html
# DISABLE CODECOV UNTIL THE SCRIPT IS AUDITED AND WE ARE CERTAIN IT IS OK TO TO EXECUTE IT.
# - name: Code coverage
# run: |
# bash <(curl -s https://codecov.io/bash)
cross-compile:
name: cross-compile
# Use 20.04.5 until https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/16450 is resolved
runs-on: ubuntu-20.04
needs: [setup-environment]
strategy:
matrix:
SYS_BINARIES: [ "binaries-darwin_amd64", "binaries-darwin_arm64", "binaries-linux_amd64", "binaries-linux_arm64", "binaries-windows_amd64", "binaries-linux_ppc64le" ]
steps:
- name: Check out the codebase.
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: '**/go.sum'
- name: Build Collector
run: |
make ${{ matrix.SYS_BINARIES }}
- name: Uploading binaries
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.SYS_BINARIES }}
path: |
./bin/*