github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/Taskfile.yml (about) 1 version: "3" 2 3 vars: 4 BIN_NAME: gdg 5 VERSION: { sh: grep "const Version " internal/version/version.go | sed -E 's/.*"(.+)"$$/\1/' } 6 GIT_COMMIT: { sh: git rev-parse HEAD } 7 GIT_DIRTY: { sh: test -n "`git status --porcelain`" && echo "+CHANGES" || true } 8 BUILD_DATE: { sh: date '+%Y-%m-%d-%H:%M:%S' } 9 IMAGE_NAME: "esnet/gdg" 10 LD_FLAGS: "-s -w -X github.com/esnet/gdg/internal/version.GitCommit={{ .GIT_COMMIT}}{{ .GIT_DIRTY}} -X github.com/esnet/gdg/internal/version.BuildDate={{ .BUILD_DATE }} " 11 LEFTHOOK_VERSION: "v1.6.7" 12 MOCKERY_VERSION: "v2.42.0" 13 RELEASER_VERSION: "v1.24.0" 14 15 dotenv: [ '.env' ] 16 17 tasks: 18 default: 19 cmds: 20 - task: build_all 21 install_tools: 22 desc: "Install required Dev tools by GDG" 23 cmds: 24 - go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest 25 - go install github.com/client9/misspell/cmd/misspell@latest 26 - go install github.com/securego/gosec/v2/cmd/gosec@master 27 - go install golang.org/x/vuln/cmd/govulncheck@latest 28 - go install github.com/vektra/mockery/v2@{{ .MOCKERY_VERSION}} 29 - go install github.com/goreleaser/goreleaser@{{ .RELEASER_VERSION }} 30 - go install github.com/evilmartians/lefthook@{{ .LEFTHOOK_VERSION }} 31 - lefthook install 32 33 security: 34 desc: "Run security scan" 35 cmds: 36 - gosec --exclude=G402,G304 ./... 37 lint: 38 desc: "Lint project, skipping test files." 39 cmds: 40 - golangci-lint run --timeout=30m --skip-dirs "(^|/)test($|/)" --skip-files "_test.go" ./... 41 spellcheck: 42 desc: "Check Spelling across code" 43 cmds: 44 - misspell . | grep -v "website" 45 lint_tests: 46 desc: "Lint project, including test files." 47 cmds: 48 - golangci-lint run ./... 49 authors: 50 desc: "Building GDG" 51 cmds: 52 - echo "Authors\n=======\n" > AUTHORS.md 53 - "git log --raw | grep \"^Author: \" | sort | uniq | cut -d ' ' -f2 | sed 's/^/- /' >> AUTHORS.md" 54 silent: false 55 mocks: 56 desc: "Re-generate Mocks" 57 cmds: 58 - rm -fr internal/service/mocks 59 - mockery 60 linux: 61 desc: "Build linux binary" 62 cmds: 63 - env GOOS='linux' GOARCH='amd64' go build -ldflags "{{ .LD_FLAGS }}" -o bin/{{ .BIN_NAME }}_linux cmd/gdg/main.go 64 build_all: 65 desc: "Buiding All binaries" 66 cmds: 67 - task: build 68 - task: build_generate 69 build: 70 desc: "Buiding {{ .BIN_NAME }} {{ .VERSION }}" 71 cmds: 72 - echo "GOPATH=${GOPATH}" 73 - go build -ldflags "{{ .LD_FLAGS }}" -o bin/{{ .BIN_NAME }} cmd/gdg/main.go 74 build_generate: 75 desc: "Buiding {{ .BIN_NAME }}-generate {{ .VERSION }}" 76 cmds: 77 - echo "GOPATH=${GOPATH}" 78 - go build -ldflags "{{ .LD_FLAGS }}" -o bin/{{ .BIN_NAME }}-generate cmd/gdg-generate/main.go 79 install: 80 desc: "installing {{ .BIN_NAME }} {{ .VERSION }}" 81 cmds: 82 - echo "GOPATH=${GOPATH}" 83 - go install -ldflags "{{ .LD_FLAGS}}" cmd/gdg/main.go 84 silent: false 85 push: 86 desc: "Pushing docker image to registry: latest {{ .VERSION }} {{ .GIT_COMMIT }}" 87 deps: [ tag ] 88 cmds: 89 - docker push $(IMAGE_NAME):{{ .GIT_COMMIT }} 90 - docker push $(IMAGE_NAME):{{ .VERSION }} 91 - docker push $(IMAGE_NAME):latest 92 clean: 93 desc: "clean up data" 94 cmds: 95 - "test ! -e bin/{{ .BIN_NAME }} || rm bin/{{ .BIN_NAME }}" 96 - "rm -fr dist/" 97 release-snapshot: 98 deps: [ clean ] 99 desc: "Release Snapshot" 100 cmds: 101 - goreleaser build --snapshot 102 release: 103 deps: [ clean ] 104 desc: "TEST Release of GDG, no validation, no publish" 105 cmds: 106 - goreleaser release --skip=publish,validate 107 108 test: 109 desc: "test check" 110 cmds: 111 - go test -v -coverpkg=./... -covermode=atomic -coverprofile=coverage.out ./... 112 - go tool cover -html=coverage.out 113 env: 114 GRAFANA_INTEGRATION: "1" 115 TEST_TOKEN_CONFIG: "0" 116 test_tokens: 117 desc: "test Token Based Only" 118 cmds: 119 - go test -v -coverpkg=./... -covermode=atomic -coverprofile=coverage.out ./... 120 - go tool cover -html=coverage.out 121 env: 122 GRAFANA_INTEGRATION: "1" 123 TEST_TOKEN_CONFIG: "1" 124 125 vuln_check: 126 desc: "Vulnerability check" 127 cmds: 128 - govulncheck ./...