-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTaskfile.yaml
101 lines (98 loc) · 3.51 KB
/
Taskfile.yaml
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
version: 3
vars:
PROJECT_NAME:
sh: pwd | grep -o "[^/]*$"
REPOSITORY_NAME: stuttgart-things
MODULE: github.com/{{ .REPOSITORY_NAME }}/{{ .PROJECT_NAME }}
GIT_COMMIT:
sh: git log -n 1 --format=%h
DATE:
sh: date +"%y.%m%d.%H%M"
REDIS_DEV_SERVER: localhost # redis-pve.labul.sva.de
REDIS_DEV_PORT: 6379
REDIS_DEV_STREAM: "sweatShop:analyze"
UPDATED_TAG:
sh: old_tag=$(git describe --tags --abbrev=0 | cut -d "." -f3 | cut -d "-" -f1); new_tag=$((old_tag+1)); echo $new_tag
UPDATED_TAG_VERSION:
sh: t1=$(git describe --tags --abbrev=0 | cut -f1 -d'.'); t2=$(git describe --tags --abbrev=0 | cut -f2 -d'.'); echo $t1.$t2.{{ .UPDATED_TAG }}
BRANCH:
sh: if [ $(git rev-parse --abbrev-ref HEAD) != "main" ]; then echo -$(git rev-parse --abbrev-ref HEAD) ; fi
REGISTRY: eu.gcr.io
tasks:
build:
desc: Build the app
deps: [lint, test]
cmds:
- go install -ldflags="-X {{ .MODULE }}/internal.date={{ .DATE }} -X {{ .MODULE }}/internal.version={{ .UPDATED_TAG_VERSION }} -X {{ .MODULE }}/internal.commit={{ .GIT_COMMIT }}"
build-image:
desc: Build image
deps: [tag]
cmds:
- "{{ .CONTAINER_RUNTIME_CMD }} build -t {{ .REGISTRY }}/{{ .REPOSITORY_NAME }}/{{ lower (.PROJECT_NAME) }}:{{ .DATE }}-{{ .UPDATED_TAG_VERSION }}{{ .BRANCH }} --build-arg VERSION={{ .UPDATED_TAG_VERSION }} --build-arg BUILD_DATE={{ .DATE }} --build-arg COMMIT={{ .GIT_COMMIT }} ."
- "{{ .CONTAINER_RUNTIME_CMD }} push {{ .REGISTRY }}/{{ .REPOSITORY_NAME }}/{{ lower (.PROJECT_NAME) }}:{{ .DATE }}-{{ .UPDATED_TAG_VERSION }}{{ .BRANCH }}"
vars:
CONTAINER_RUNTIME_CMD: sudo nerdctl
run:
desc: Run app
cmds:
- task: build
- |
export REDIS_SERVER={{ .REDIS_DEV_SERVER }}
export REDIS_PORT={{ .REDIS_DEV_PORT }}
export REDIS_STREAM={{ .REDIS_DEV_STREAM }}
echo "Enter REDIS PASSWORD:"
read REDIS_PASSWORD;
export REDIS_PASSWORD=${REDIS_PASSWORD}
{{ .PROJECT_NAME }}
lint:
desc: Lint code
cmds:
- cmd: golangci-lint run
ignore_error: true
test:
desc: Test code
cmds:
- go mod tidy
- go test ./... -v
tag:
desc: Commit, push & tag the module
deps: [lint, test]
cmds:
- task: git-push
- rm -rf dist
- go mod tidy
- git pull --tags
- git tag -a {{ .UPDATED_TAG_VERSION }}{{ .BRANCH }} -m 'updated for stuttgart-things {{ .DATE }} for tag version {{ .UPDATED_TAG_VERSION }}{{ .BRANCH }}'
- git push origin --tags
git-push:
desc: Commit & push the module
cmds:
- go mod tidy
- git pull
- git config advice.addIgnoredFile false
- git add *
- git commit -am 'updated {{ .PROJECT_NAME }} {{ .DATE }} for tag version {{ .UPDATED_TAG_VERSION }}{{ .BRANCH }}'
- git push
project-init-go:
desc: Bootstrap project
cmds:
- go mod init {{ .Module }}
- go mod tidy
- goreleaser init
- git add *
- git add .goreleaser.yaml
- git commit -am 'initialized go module {{ .Module }} on {{ .DATE }}'
- git push
- git tag -a v0.1.1 -m 'initialized go module {{ .Module }} on {{ .DATE }}'
- git push origin --tags
run-test:
desc: Run test-producer
cmds:
- |
export REDIS_SERVER={{ .REDIS_DEV_SERVER }}
export REDIS_PORT={{ .REDIS_DEV_PORT }}
export REDIS_STREAM={{ .REDIS_DEV_STREAM }}
echo "Enter REDIS PASSWORD:"
read REDIS_PASSWORD;
export REDIS_PASSWORD=${REDIS_PASSWORD}
go run ./tests/test-producer.go