1
1
version : " 3"
2
2
3
+ # This taskfile is ideally meant to be project agnostic and could be dropped in
4
+ # on other Go projects with minimal or no changes.
5
+ #
6
+ # To use it simply add the following lines to your main taskfile:
7
+ # includes:
8
+ # dist: ./DistTasks.yml
9
+ #
10
+ # The following variables must be declared in the including taskfile for the
11
+ # build process to work correctly:
12
+ # * DIST_DIR: the folder that will contain the final binaries and packages
13
+ # * PROJECT_NAME: the name of the project, used in package name
14
+ # * VERSION: the version of the project, used in package name and checksum file
15
+ # * LD_FLAGS: flags used at build time
16
+ #
17
+ # The project MUST contain a LICENSE.txt file in the root folder or packaging will fail.
18
+
3
19
tasks :
4
20
all :
5
21
desc : Build for distribution for all platforms
18
34
dir : " {{ .DIST_DIR }}"
19
35
cmds :
20
36
- |
21
- docker run -v `pwd`/..:/home/lint -w /home/lint \
37
+ docker run -v `pwd`/..:/home/build -w /home/build \
22
38
-e CGO_ENABLED=1 \
23
39
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
24
40
--build-cmd "{{ .BUILD_COMMAND }}" \
29
45
30
46
vars :
31
47
PLATFORM_DIR : " {{ .PROJECT_NAME }}_windows_386"
32
- BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe {{ .DIST_LDFLAGS }}"
48
+ BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe {{ .LDFLAGS }}"
33
49
BUILD_PLATFORM : " windows/386"
34
50
CONTAINER_TAG : " {{ .GO_VERSION }}-main"
35
51
PACKAGE_PLATFORM : " Windows_32bit"
40
56
dir : " {{ .DIST_DIR }}"
41
57
cmds :
42
58
- |
43
- docker run -v `pwd`/..:/home/lint -w /home/lint \
59
+ docker run -v `pwd`/..:/home/build -w /home/build \
44
60
-e CGO_ENABLED=1 \
45
61
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
46
62
--build-cmd "{{ .BUILD_COMMAND }}" \
51
67
52
68
vars :
53
69
PLATFORM_DIR : " {{ .PROJECT_NAME }}_windows_amd64"
54
- BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe {{ .DIST_LDFLAGS }}"
70
+ BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe {{ .LDFLAGS }}"
55
71
BUILD_PLATFORM : " windows/amd64"
56
72
CONTAINER_TAG : " {{ .GO_VERSION }}-main"
57
73
PACKAGE_PLATFORM : " Windows_64bit"
62
78
dir : " {{ .DIST_DIR }}"
63
79
cmds :
64
80
- |
65
- docker run -v `pwd`/..:/home/lint -w /home/lint \
81
+ docker run -v `pwd`/..:/home/build -w /home/build \
66
82
-e CGO_ENABLED=1 \
67
83
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
68
84
--build-cmd "{{ .BUILD_COMMAND }}" \
73
89
74
90
vars :
75
91
PLATFORM_DIR : " {{ .PROJECT_NAME }}_linux_amd32"
76
- BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
92
+ BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
77
93
BUILD_PLATFORM : " linux/386"
78
94
CONTAINER_TAG : " {{ .GO_VERSION }}-main"
79
95
PACKAGE_PLATFORM : " Linux_32bit"
@@ -84,7 +100,7 @@ tasks:
84
100
dir : " {{ .DIST_DIR }}"
85
101
cmds :
86
102
- |
87
- docker run -v `pwd`/..:/home/lint -w /home/lint \
103
+ docker run -v `pwd`/..:/home/build -w /home/build \
88
104
-e CGO_ENABLED=1 \
89
105
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
90
106
--build-cmd "{{ .BUILD_COMMAND }}" \
@@ -95,7 +111,7 @@ tasks:
95
111
96
112
vars :
97
113
PLATFORM_DIR : " {{ .PROJECT_NAME }}_linux_amd64"
98
- BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
114
+ BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
99
115
BUILD_PLATFORM : " linux/amd64"
100
116
CONTAINER_TAG : " {{ .GO_VERSION }}-main"
101
117
PACKAGE_PLATFORM : " Linux_64bit"
@@ -106,7 +122,7 @@ tasks:
106
122
dir : " {{ .DIST_DIR }}"
107
123
cmds :
108
124
- |
109
- docker run -v `pwd`/..:/home/lint -w /home/lint \
125
+ docker run -v `pwd`/..:/home/build -w /home/build \
110
126
-e CGO_ENABLED=1 \
111
127
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
112
128
--build-cmd "{{ .BUILD_COMMAND }}" \
@@ -117,7 +133,7 @@ tasks:
117
133
118
134
vars :
119
135
PLATFORM_DIR : " {{ .PROJECT_NAME }}_linux_arm_7"
120
- BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
136
+ BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
121
137
BUILD_PLATFORM : " linux/armv7"
122
138
CONTAINER_TAG : " {{ .GO_VERSION }}-arm"
123
139
PACKAGE_PLATFORM : " Linux_ARMv7"
@@ -128,7 +144,7 @@ tasks:
128
144
dir : " {{ .DIST_DIR }}"
129
145
cmds :
130
146
- |
131
- docker run -v `pwd`/..:/home/lint -w /home/lint \
147
+ docker run -v `pwd`/..:/home/build -w /home/build \
132
148
-e CGO_ENABLED=1 \
133
149
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
134
150
--build-cmd "{{ .BUILD_COMMAND }}" \
@@ -139,7 +155,7 @@ tasks:
139
155
140
156
vars :
141
157
PLATFORM_DIR : " {{ .PROJECT_NAME }}_linux_arm_6"
142
- BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
158
+ BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
143
159
BUILD_PLATFORM : " linux/armv6"
144
160
CONTAINER_TAG : " {{ .GO_VERSION }}-arm"
145
161
PACKAGE_PLATFORM : " Linux_ARMv6"
@@ -150,7 +166,7 @@ tasks:
150
166
dir : " {{ .DIST_DIR }}"
151
167
cmds :
152
168
- |
153
- docker run -v `pwd`/..:/home/lint -w /home/lint \
169
+ docker run -v `pwd`/..:/home/build -w /home/build \
154
170
-e CGO_ENABLED=1 \
155
171
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
156
172
--build-cmd "{{ .BUILD_COMMAND }}" \
@@ -161,7 +177,7 @@ tasks:
161
177
162
178
vars :
163
179
PLATFORM_DIR : " {{ .PROJECT_NAME }}_linux_arm_6"
164
- BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
180
+ BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
165
181
BUILD_PLATFORM : " linux/arm64"
166
182
CONTAINER_TAG : " {{ .GO_VERSION }}-arm"
167
183
PACKAGE_PLATFORM : " Linux_ARM64"
@@ -172,7 +188,7 @@ tasks:
172
188
dir : " {{ .DIST_DIR }}"
173
189
cmds :
174
190
- |
175
- docker run -v `pwd`/..:/home/lint -w /home/lint \
191
+ docker run -v `pwd`/..:/home/build -w /home/build \
176
192
-e CGO_ENABLED=1 \
177
193
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
178
194
--build-cmd "{{ .BUILD_COMMAND }}" \
@@ -183,25 +199,13 @@ tasks:
183
199
184
200
vars :
185
201
PLATFORM_DIR : " {{ .PROJECT_NAME }}_osx_darwin_amd64"
186
- BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
202
+ BUILD_COMMAND : " go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
187
203
BUILD_PLATFORM : " darwin/amd64"
188
204
CONTAINER_TAG : " {{ .GO_VERSION }}-darwin"
189
205
PACKAGE_PLATFORM : " macOS_64bit"
190
206
PACKAGE_NAME : " {{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
191
207
192
208
vars :
193
- TAG :
194
- sh : echo "`git describe --tags --abbrev=0 2> /dev/null`"
195
- TIMESTAMP_SHORT :
196
- sh : echo "{{now | date "20060102"}}"
197
- VERSION : " {{if .CUSTOM_VERSION}}{{.CUSTOM_VERSION}}-{{.TIMESTAMP_SHORT}}{{else}}{{.TAG}}{{end}}"
198
- DIST_LDFLAGS : >-
199
- -ldflags
200
- '
201
- -X {{ .CONFIGURATION_PACKAGE }}.version={{.TAG}}
202
- -X {{ .CONFIGURATION_PACKAGE }}.commit={{.COMMIT}}
203
- -X {{ .CONFIGURATION_PACKAGE }}.buildTimestamp={{.TIMESTAMP}}
204
- '
205
209
CONTAINER : " docker.elastic.co/beats-dev/golang-crossbuild"
206
210
GO_VERSION : " 1.14.7"
207
211
CHECKSUM_FILE : " {{ .VERSION }}-checksums.txt"
0 commit comments