mirror of
https://github.com/replicatedhq/troubleshoot.git
synced 2026-02-14 18:29:53 +00:00
137 lines
3.5 KiB
YAML
137 lines
3.5 KiB
YAML
name: build
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, reopened, synchronize, ready_for_review]
|
|
branches: [main]
|
|
push:
|
|
branches: [main]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
# Detect changes to optimize test execution
|
|
changes:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
go-files: ${{ steps.filter.outputs.go-files }}
|
|
preflight: ${{ steps.filter.outputs.preflight }}
|
|
support-bundle: ${{ steps.filter.outputs.support-bundle }}
|
|
examples: ${{ steps.filter.outputs.examples }}
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: dorny/paths-filter@v3
|
|
id: filter
|
|
with:
|
|
filters: |
|
|
go-files:
|
|
- '**/*.go'
|
|
- 'go.{mod,sum}'
|
|
- 'Makefile'
|
|
preflight:
|
|
- 'cmd/preflight/**'
|
|
- 'pkg/preflight/**'
|
|
support-bundle:
|
|
- 'cmd/troubleshoot/**'
|
|
- 'pkg/supportbundle/**'
|
|
|
|
# Lint
|
|
lint:
|
|
if: needs.changes.outputs.go-files == 'true'
|
|
needs: changes
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: ./.github/actions/setup-go
|
|
|
|
- name: Cache Go build and modules
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
|
|
- name: Go mod download
|
|
run: go mod download
|
|
|
|
- name: Check go mod tidy
|
|
run: |
|
|
go mod tidy
|
|
git diff --exit-code go.mod go.sum || {
|
|
echo "::error::Please run 'go mod tidy' and commit changes"
|
|
exit 1
|
|
}
|
|
|
|
- name: Format and vet
|
|
run: |
|
|
make fmt
|
|
git diff --exit-code || {
|
|
echo "::error::Please run 'make fmt' and commit changes"
|
|
exit 1
|
|
}
|
|
make vet
|
|
|
|
# Unit and integration tests
|
|
# (moved to push-full-tests.yml)
|
|
|
|
# Build binaries
|
|
build:
|
|
if: needs.changes.outputs.go-files == 'true'
|
|
needs: [changes, lint]
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: ./.github/actions/setup-go
|
|
|
|
- name: Cache Go build and modules
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
|
|
- name: Go mod download
|
|
run: go mod download
|
|
- run: make build
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: binaries
|
|
path: bin/
|
|
retention-days: 1
|
|
|
|
# (moved to push-full-tests.yml)
|
|
|
|
# Success summary
|
|
success:
|
|
if: always()
|
|
needs: [lint, build]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check results
|
|
run: |
|
|
# Check if any required jobs failed
|
|
if [[ "${{ needs.lint.result }}" == "failure" ]] || \
|
|
[[ "${{ needs.build.result }}" == "failure" ]]; then
|
|
echo "::error::Some jobs failed or were cancelled"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if any required jobs were cancelled
|
|
if [[ "${{ needs.lint.result }}" == "cancelled" ]] || \
|
|
[[ "${{ needs.build.result }}" == "cancelled" ]]; then
|
|
echo "::error::Some jobs failed or were cancelled"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ All tests passed!"
|