-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DistTasks.yml
56 lines (50 loc) · 2.2 KB
/
DistTasks.yml
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
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/release-go-task/DistTasks.yml
version: "3"
# This taskfile is ideally meant to be project agnostic and could be dropped in
# on other Go projects with minimal or no changes.
#
# To use it simply add the following lines to your main taskfile:
# includes:
# dist: ./DistTasks.yml
#
# The following variables must be declared in the including taskfile for the
# build process to work correctly:
# * DIST_DIR: the folder that will contain the final binaries and packages
# * PROJECT_NAME: the name of the project, used in package name
# * VERSION: the version of the project, used in package name and checksum file
# * LD_FLAGS: flags used at build time
# * PROVISIONING_BINARIES_FOLDER: provisioning binaries folder. Remember to REMOVE binaries folder as soon as it is removed from the project
#
# The project MUST contain a LICENSE.txt file in the root folder or packaging will fail.
vars:
CONTAINER: "docker.elastic.co/beats-dev/golang-crossbuild"
GO_VERSION: "1.22.6"
CHECKSUM_FILE: "{{.VERSION}}-checksums.txt"
tasks:
all:
desc: Build for distribution for all platforms
cmds:
- task: Linux_64bit
Linux_64bit:
desc: Builds Linux 64 bit binaries
dir: "{{.DIST_DIR}}"
cmds:
- |
docker run -v `pwd`/..:/home/build -w /home/build \
-e CGO_ENABLED=0 \
{{.CONTAINER}}:{{.CONTAINER_TAG}} \
--build-cmd "{{.BUILD_COMMAND}}" \
-p "{{.BUILD_PLATFORM}}"
cp {{.PLATFORM_DIR}}/bootstrap bootstrap
cp ../LICENSE LICENSE
zip {{.PACKAGE_NAME}} bootstrap LICENSE
rm bootstrap LICENSE
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
cp ../deployment/cloud-formation-template/deployment.yaml {{.PROJECT_NAME}}-cloud-formation-template.yaml
vars:
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_amd64"
BUILD_COMMAND: "GOOS=linux CGO_ENABLED=0 go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/bootstrap -tags lambda.norpc lambda.go"
BUILD_PLATFORM: "linux/amd64"
CONTAINER_TAG: "{{.GO_VERSION}}-main"
PACKAGE_PLATFORM: "Linux_64bit"
PACKAGE_NAME: "{{.PROJECT_NAME}}_{{.VERSION}}_{{.PACKAGE_PLATFORM}}.zip"