-
Notifications
You must be signed in to change notification settings - Fork 0
123 lines (104 loc) · 3.77 KB
/
pushes.yaml
File metadata and controls
123 lines (104 loc) · 3.77 KB
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
name: Actions CI
# This `name:` is used in the badge.svg rendering in the README.md.
on:
push:
branches-ignore:
- 'exp'
- 'exp/*'
- 'exp-*'
- 'exp_*'
- 'wip'
- 'wip/*'
- 'wip-*'
- 'wip_*'
pull_request:
workflow_dispatch:
permissions: {}
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- go: 'stable'
canonical: true
- go: 'oldstable'
canonical: false
permissions:
contents: read
steps:
- name: Checkout
id: checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# We're not using release process or version stamping which needs Git History in this workflow.
# Thus we do not need to set with.fetch-depth to 0. We can live with a shallow clone.
with:
# security posture improvement:
persist-credentials: false
- name: Set up Go
id: go-setup
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version: ${{ matrix.go }}
- id: go-settings
name: Export Go environment to Actions outputs
run: |
echo >> "$GITHUB_OUTPUT" "arch=$(go env GOARCH)"
echo >> "$GITHUB_OUTPUT" "hostarch=$(go env GOHOSTARCH)"
echo >> "$GITHUB_OUTPUT" "os=$(go env GOOS)"
echo >> "$GITHUB_OUTPUT" "hostos=$(go env GOHOSTOS)"
echo >> "$GITHUB_OUTPUT" "go-version=$(go env GOVERSION)"
# Use with:
# ${{ steps.go-settings.outputs.go-version }}
# which will look like `go1.17.1` if matrix `1.17.x` matches `1.17.1`.
# These are independent of how the matrix is setup, or if a matrix is even used.
# We now rely upon actions/setup-go setting up the module download cache for us,
# and do not bother with a build cache.
- name: Download all Go dependencies
id: go-dependencies
# nb: `go mod download` is heavyweight and extends beyond the actual dependencies
run: |
go list all
- name: Basic Go integrity checks
id: go-integrity
run: |
t="$(gofmt -s -l .)"
if [ ".$t" != "." ]; then printf 'gofmt would modify files:\n%s\n' "$t"; exit 1; fi
go vet ./...
t="$(go list -m -retracted -f '{{if .Retracted}}::error file=go.mod::{{.Path}} is retracted{{end}}' all)"
if [ ".$t" != "." ]; then printf '%s\n' "$t"; exit 1; fi
if: matrix.canonical
# This doesn't actually invoke static checks unless in a pull-request
# Leaving present-but-commented-out as an easy reference.
# - name: Go static checks
# uses: reviewdog/action-staticcheck@v1
# with:
# filter_mode: nofilter
# fail_on_error: true
# if: matrix.canonical
- name: Go build & test
id: build
run: |
go build ./...
go test -v -coverprofile=${{ runner.temp }}/profile.cov -coverpkg ./... ./...
- name: Send coverage
id: coverage
uses: shogo82148/actions-goveralls@e6875f831db61e6abffbd8df91a2eb6cd24b46c9 # v1.9.1
with:
path-to-profile: ${{ runner.temp }}/profile.cov
flag-name: ${{ steps.go-settings.outputs.go-version }}
parallel: true
finish:
needs: test
runs-on: ubuntu-latest
steps:
- name: coveralls.io completion notification
id: coverage
uses: shogo82148/actions-goveralls@e6875f831db61e6abffbd8df91a2eb6cd24b46c9 # v1.9.1
with:
parallel-finished: true
- name: Notify PT Slack
id: slack
uses: rtCamp/action-slack-notify@e31e87e03dd19038e411e38ae27cbad084a90661 # v2.3.3
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_PT_AUTOBUILDS }}