-
Notifications
You must be signed in to change notification settings - Fork 47
134 lines (126 loc) · 4.25 KB
/
push_pr.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
name: Push/PR pipeline
on:
push:
branches:
- main
- renovate/**
pull_request:
env:
TAG: "v0.0.0" # needed for goreleaser windows builds
REPO_FULL_NAME: ${{ github.event.repository.full_name }}
ORIGINAL_REPO_NAME: "newrelic/nri-prometheus"
DOCKER_LOGIN_AVAILABLE: ${{ secrets.OHAI_DOCKER_HUB_ID }}
jobs:
chart-lint:
name: Helm chart Lint
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
matrix:
kubernetes-version: [ "v1.25.6", "v1.26.0" ]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: helm/[email protected]
- name: Lint charts
run: ct --config .github/ct.yaml lint --debug
- name: Check for changed installable charts
id: list-changed
run: |
changed=$(ct --config .github/ct.yaml list-changed)
if [[ -n "$changed" ]]; then
echo "::set-output name=changed::true"
fi
- name: Run helm unit tests
if: steps.list-changed.outputs.changed == 'true'
run: |
helm plugin install https://github.com/helm-unittest/helm-unittest
for chart in $(ct --config .github/ct.yaml list-changed); do
if [ -d "$chart/tests/" ]; then
helm unittest $chart
else
echo "No unit tests found for $chart"
fi
done
- name: Setup Minikube
uses: manusa/[email protected]
if: steps.list-changed.outputs.changed == 'true'
with:
minikube version: v1.33.1
driver: docker
kubernetes version: ${{ matrix.kubernetes-version }}
github token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-go@v5
if: steps.list-changed.outputs.changed == 'true'
with:
go-version-file: 'go.mod'
- name: Create image for chart testing
if: steps.list-changed.outputs.changed == 'true'
run: |
TAG=test GOOS=linux GOARCH=amd64 make ci/build
sudo cp ./dist/nri-prometheus-nix_linux_amd64/nri-prometheus ./bin/nri-prometheus
DOCKER_BUILDKIT=1 docker build -t e2e/nri-prometheus:test . -f Dockerfile.dev
minikube image load e2e/nri-prometheus:test
- name: Test install charts
if: steps.list-changed.outputs.changed == 'true'
run: ct install --config .github/ct.yaml --debug
- name: Test upgrade charts
if: steps.list-changed.outputs.changed == 'true'
run: ct install --config .github/ct.yaml --debug --upgrade
static-analysis:
name: Run all static analysis checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
- uses: newrelic/newrelic-infra-checkers@v1
with:
golangci-lint-config: golangci-lint-limited
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
continue-on-error: ${{ github.event_name != 'pull_request' }}
with:
only-new-issues: true
- name: Check if CHANGELOG is valid
uses: newrelic/release-toolkit/validate-markdown@v1
test-nix:
name: Run unit tests on *Nix
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Unit tests
run: make ci/test
test-windows:
name: Run unit tests on Windows
runs-on: windows-latest
env:
GOPATH: ${{ github.workspace }}
defaults:
run:
working-directory: src/github.com/${{ env.ORIGINAL_REPO_NAME }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: src/github.com/${{ env.ORIGINAL_REPO_NAME }}
- name: Install Go
uses: actions/setup-go@v5
with:
go-version-file: 'src/github.com/${{ env.ORIGINAL_REPO_NAME }}/go.mod'
- name: Running unit tests
shell: pwsh
run: |
.\build\windows\unit_tests.ps1
# make sure code build in all platforms
build:
name: Build binary for all platforms:arch
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build all platforms:arch
run: make ci/build
- name: Check if CHANGELOG is valid
uses: newrelic/release-toolkit/validate-markdown@v1