File tree Expand file tree Collapse file tree 3 files changed +91
-1
lines changed Expand file tree Collapse file tree 3 files changed +91
-1
lines changed Original file line number Diff line number Diff line change
1
+ name : go-verdiff
2
+ on :
3
+ pull_request :
4
+ paths :
5
+ - ' **.mod'
6
+ branches :
7
+ - main
8
+ jobs :
9
+ go-verdiff :
10
+ runs-on : ubuntu-latest
11
+ steps :
12
+ - uses : actions/checkout@v4
13
+ with :
14
+ fetch-depth : 0
15
+ - name : Check golang version
16
+ run : hack/tools/check-go-version.sh "${{ github.event.pull_request.base.sha }}"
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ SHELL := /usr/bin/env bash -o pipefail
7
7
.SHELLFLAGS := -ec
8
8
export ROOT_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST ) ) ) )
9
9
10
+ GOLANG_VERSION := $(shell sed -En 's/^go (.* ) $$/\1/p' "go.mod")
10
11
# Image URL to use all building/pushing image targets
11
12
ifeq ($(origin IMAGE_REPO ) , undefined)
12
13
IMAGE_REPO := quay.io/operator-framework/operator-controller
@@ -95,7 +96,8 @@ lint: $(GOLANGCI_LINT) #HELP Run golangci linter.
95
96
96
97
.PHONY : tidy
97
98
tidy : # HELP Update dependencies.
98
- $(Q ) go mod tidy
99
+ # Force tidy to use the version already in go.mod
100
+ $(Q ) go mod tidy -go=$(GOLANG_VERSION )
99
101
100
102
.PHONY : manifests
101
103
manifests : $(CONTROLLER_GEN ) # EXHELP Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
Original file line number Diff line number Diff line change
1
+ #! /bin/bash
2
+
3
+ BASE_REF=${1:- main}
4
+ GO_VER=$( sed -En ' s/^go (.*)$/\1/p' " go.mod" )
5
+ OLDIFS=" ${IFS} "
6
+ IFS=' .' MAX_VER=(${GO_VER} )
7
+ IFS=" ${OLDIFS} "
8
+
9
+ if [ ${# MAX_VER[*]} -ne 3 -a ${# MAX_VER[*]} -ne 2 ]; then
10
+ echo " Invalid go version: ${GO_VER} "
11
+ exit 1
12
+ fi
13
+
14
+ GO_MAJOR=${MAX_VER[0]}
15
+ GO_MINOR=${MAX_VER[1]}
16
+ GO_PATCH=${MAX_VER[2]}
17
+
18
+ RETCODE=0
19
+
20
+ check_version () {
21
+ local whole=$1
22
+ local file=$2
23
+ OLDIFS=" ${IFS} "
24
+ IFS=' .' ver=(${whole} )
25
+ IFS=" ${OLDIFS} "
26
+
27
+ if [ ${ver[0]} -gt ${GO_MAJOR} ]; then
28
+ echo " ${file} : ${whole} : Bad golang version (expected ${GO_VER} or less)"
29
+ return 1
30
+ fi
31
+ if [ ${ver[1]} -gt ${GO_MINOR} ]; then
32
+ echo " ${file} : ${whole} : Bad golang version (expected ${GO_VER} or less)"
33
+ return 1
34
+ fi
35
+
36
+ if [ ${# ver[*]} -eq 2 ] ; then
37
+ return 0
38
+ fi
39
+ if [ ${# ver[*]} -ne 3 ] ; then
40
+ echo " ${file} : ${whole} : Badly formatted golang version"
41
+ return 1
42
+ fi
43
+
44
+ if [ ${ver[1]} -eq ${GO_MINOR} -a ${ver[2]} -gt ${GO_PATCH} ]; then
45
+ echo " ${file} : ${whole} : Bad golang version (expected ${GO_VER} or less)"
46
+ return 1
47
+ fi
48
+ return 0
49
+ }
50
+
51
+ echo " Found golang version: ${GO_VER} "
52
+
53
+ for f in $( find . -name " *.mod" ) ; do
54
+ v=$( sed -En ' s/^go (.*)$/\1/p' ${f} )
55
+ if [ -z ${v} ]; then
56
+ echo " ${f} : Skipping, no version found"
57
+ continue
58
+ fi
59
+ if ! check_version ${v} ${f} ; then
60
+ RETCODE=1
61
+ fi
62
+ old=$( git grep -ohP ' ^go .*$' " ${BASE_REF} " -- " ${f} " )
63
+ old=${old# go }
64
+ new=$( git grep -ohP ' ^go .*$' " ${f} " )
65
+ new=${new# go }
66
+ if [ " ${new} " != " ${old} " ]; then
67
+ echo " ${f} : ${v} : Updated golang version from ${old} "
68
+ RETCODE=1
69
+ fi
70
+ done
71
+
72
+ exit ${RETCODE}
You can’t perform that action at this time.
0 commit comments