forked from devfile/devworkspace-operator
-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (125 loc) · 3.72 KB
/
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
name: Validate PRs
on:
pull_request:
branches: [ main ]
jobs:
go:
name: Check sources
runs-on: ubuntu-20.04
env:
OPERATOR_SDK_VERSION: v1.8.0
steps:
-
name: Set up Go 1.x
uses: actions/setup-go@v4
with:
go-version: 1.19.10
-
name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: 3.11
-
name: Check out code into the Go module directory
uses: actions/checkout@v3
-
name: Cache Operator SDK ${{ env.OPERATOR_SDK_VERSION }}
uses: actions/cache@v3
id: cache-operator-sdk
with:
path: ~/cache
key: operator-sdk-${{ env.OPERATOR_SDK_VERSION }}
-
name: Download Operator SDK ${{ env.OPERATOR_SDK_VERSION }}
if: steps.cache-operator-sdk.outputs.cache-hit != 'true'
run: |
mkdir -p ~/cache
wget https://github.com/operator-framework/operator-sdk/releases/download/${OPERATOR_SDK_VERSION}/operator-sdk_linux_amd64 -O ~/cache/operator-sdk-${OPERATOR_SDK_VERSION} > /dev/null -O ~/cache/operator-sdk-${OPERATOR_SDK_VERSION} > /dev/null
chmod +x ~/cache/operator-sdk-${OPERATOR_SDK_VERSION}
-
name: Install Operator SDK ${{ env.OPERATOR_SDK_VERSION }}
run: |
mkdir -p ~/bin
cp ~/cache/operator-sdk-${OPERATOR_SDK_VERSION} ~/bin/operator-sdk
echo "$HOME/bin" >> $GITHUB_PATH
-
name: Cache go modules
id: cache-mod
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
-
name: Download dependencies
run: go mod download
if: steps.cache-mod.outputs.cache-hit != 'true'
-
name: Check go mod status
run: |
go mod tidy
if [[ ! -z $(git status -s) ]]
then
echo "Go mod state is not clean:"
git --no-pager diff
exit 1
fi
-
name: Check format
run: |
go install github.com/google/addlicense@latest
go install golang.org/x/tools/cmd/goimports@latest
if ! make check_fmt; then
echo "not well formatted sources are found:"
git --no-pager diff
exit 1
fi
-
name: Check manifests
run: |
pip install yq
# Note: fmt is necessary after generate since generated sources will
# fail format check by default.
make generate fmt manifests
if [[ ! -z $(git status -s) ]]
then
echo "generated sources are not up to date:"
git --no-pager diff
exit 1
fi
-
name: Check deployment files
run: |
make generate_default_deployment generate_olm_bundle_yaml
if [[ ! -z $(git status -s) ]]; then
echo "Generated deployment files are out of date; run 'make generate_default_deployment generate_olm_bundle_yaml'."
git status
echo "Diff: "
git --no-pager diff
exit 1
fi
-
name: Run Go Tests
run: |
python -m pip install --upgrade pip yq
go install github.com/onsi/ginkgo/v2/[email protected]
make test
-
name: Build Codecov report
uses: codecov/codecov-action@v3
with:
files: ./cover.out,./controller.cover.out
docker:
name: Check docker build
runs-on: ubuntu-latest
steps:
-
name: Check out code into the Go module directory
uses: actions/checkout@v3
-
name: Check if dockerimage build is working
run: docker build -f ./build/Dockerfile .
-
name: Check if project-clone dockerimage build is working
run: docker build -f ./project-clone/Dockerfile .