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 ./...