-
Notifications
You must be signed in to change notification settings - Fork 43
135 lines (108 loc) · 3.19 KB
/
test.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
135
name: test
on: [pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: golangci-lint
uses: golangci/[email protected]
with:
skip-pkg-cache: true
skip-build-cache: true
args: --timeout=10m
unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- run: go mod download
- name: Test
run: go test -race -covermode=atomic -coverprofile=coverage.txt ./...
- uses: actions/upload-artifact@v4
with:
name: unit-coverage
path: coverage.txt
acceptance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- run: go mod download
- name: Set up services
env:
COMPOSE_FILE: ./integration/docker-compose.yml
run: |
docker-compose build
docker-compose up -d --force-recreate jenkins
while [ "$(docker inspect jenkins-provider-acc --format '{{ .State.Health.Status }}')" != "healthy" ]; do echo "Waiting for Jenkins to start..."; sleep 3; done
- name: Run Acceptance Tests
env:
TF_ACC: "1"
JENKINS_URL: "http://localhost:8080"
JENKINS_USERNAME: "admin"
JENKINS_PASSWORD: "admin"
run: go test -v -covermode=atomic -coverprofile=coverage.txt ./...
- uses: actions/upload-artifact@v4
with:
name: acceptance-coverage
path: coverage.txt
integration:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: Build binary
run: go install
- name: Set up terraform
uses: hashicorp/setup-terraform@v3
- name: Add terraformrc override
run: |
cat << EOF > ~/.terraformrc
provider_installation {
dev_overrides {
"taiidani/jenkins" = "$(go env GOPATH)/bin"
}
direct {}
}
EOF
- name: Init integration
working-directory: integration/
run: terraform init
- name: Run integration
working-directory: integration/
run: terraform test
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true
- name: Generate Docs
run: make generate
- name: Verify directory is clean
run: test -z "$(git status --porcelain)"
- name: Error message
if: failure()
run: |
echo ':warning: Generated docs differs from committed docs. Did you forget to run `make generate`?' >> $GITHUB_STEP_SUMMARY