Skip to content

Commit 001de36

Browse files
committed
first import
0 parents  commit 001de36

File tree

12 files changed

+1805
-0
lines changed

12 files changed

+1805
-0
lines changed

.github/workflows/release.yaml

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v[0-9]+.[0-9]+.[0-9]+*"
7+
8+
jobs:
9+
create-release-artifacts:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout
14+
uses: actions/checkout@v1
15+
with:
16+
fetch-depth: 0
17+
18+
- name: Install Taskfile
19+
uses: arduino/setup-task@v1
20+
with:
21+
repo-token: ${{ secrets.GITHUB_TOKEN }}
22+
version: 3.x
23+
24+
- name: Build
25+
run: task dist:all
26+
27+
- name: Upload artifacts
28+
uses: actions/upload-artifact@v2
29+
with:
30+
name: dist
31+
path: dist
32+
33+
create-release:
34+
runs-on: ubuntu-latest
35+
needs: create-release-artifacts
36+
37+
steps:
38+
- name: Checkout
39+
uses: actions/checkout@v2
40+
41+
- name: Download artifact
42+
uses: actions/download-artifact@v2
43+
with:
44+
name: dist
45+
# to ensure compatibility with v1
46+
path: dist
47+
48+
- name: Create Github Release
49+
id: create_release
50+
uses: actions/create-release@v1
51+
env:
52+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53+
with:
54+
tag_name: ${{ github.ref }}
55+
release_name: ${{ github.ref }}
56+
body: Release ${{ github.ref }}
57+
draft: false
58+
59+
- name: Upload release files on Github
60+
uses: svenstaro/upload-release-action@v2
61+
with:
62+
repo_token: ${{ secrets.GITHUB_TOKEN }}
63+
file: dist/*
64+
tag: ${{ github.ref }}
65+
file_glob: true
66+
# - name: Upload release files on Arduino downloads servers
67+
# uses: docker://plugins/s3
68+
# env:
69+
# PLUGIN_SOURCE: "dist/*"
70+
# PLUGIN_TARGET: "/discovery/serial-discovery/"
71+
# PLUGIN_STRIP_PREFIX: "dist/"
72+
# PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
73+
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
74+
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

.github/workflows/test.yaml

+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
name: test
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
create-test-artifacts:
9+
runs-on: ubuntu-20.04
10+
11+
steps:
12+
- name: checkout
13+
uses: actions/checkout@v1
14+
with:
15+
fetch-depth: 0
16+
17+
- name: Install Taskfile
18+
uses: arduino/setup-task@v1
19+
with:
20+
repo-token: ${{ secrets.GITHUB_TOKEN }}
21+
version: 3.x
22+
23+
- name: Build
24+
run: |
25+
PACKAGE_NAME_PREFIX="${{ github.workflow }}"
26+
if [ "${{ github.event_name }}" = "pull_request" ]; then
27+
PACKAGE_NAME_PREFIX="$PACKAGE_NAME_PREFIX-${{ github.event.number }}"
28+
fi
29+
PACKAGE_NAME_PREFIX="$PACKAGE_NAME_PREFIX-${{ github.sha }}-"
30+
export PACKAGE_NAME_PREFIX
31+
task dist:all
32+
33+
# Uploads all architectures as separate artifacts
34+
- name: Upload Linux 32 bit artifact
35+
uses: actions/upload-artifact@v2
36+
with:
37+
name: Linux_32bit
38+
path: dist/*Linux_32bit.tar.gz
39+
40+
- name: Upload Linux 64 bit artifact
41+
uses: actions/upload-artifact@v2
42+
with:
43+
name: Linux_64bit
44+
path: dist/*Linux_64bit.tar.gz
45+
46+
- name: Upload Windows 32 bit artifact
47+
uses: actions/upload-artifact@v2
48+
with:
49+
name: Windows_32bit
50+
path: dist/*Windows_32bit.zip
51+
52+
- name: Upload Windows 64 bit artifact
53+
uses: actions/upload-artifact@v2
54+
with:
55+
name: Windows_64bit
56+
path: dist/*Windows_64bit.zip
57+
58+
- name: Upload Linux ARMv6 artifact
59+
uses: actions/upload-artifact@v2
60+
with:
61+
name: Linux_ARMv6
62+
path: dist/*Linux_ARMv6.tar.gz
63+
64+
- name: Upload Linux ARMv7 artifact
65+
uses: actions/upload-artifact@v2
66+
with:
67+
name: Linux_ARMv7
68+
path: dist/*Linux_ARMv7.tar.gz
69+
70+
- name: Upload Linux ARM64 artifact
71+
uses: actions/upload-artifact@v2
72+
with:
73+
name: Linux_ARM64
74+
path: dist/*Linux_ARM64.tar.gz
75+
76+
- name: Upload Linux ARM64 bit artifact
77+
uses: actions/upload-artifact@v2
78+
with:
79+
name: Linux_ARM64
80+
path: dist/*Linux_ARM64.tar.gz
81+
82+
- name: Upload MacOS 64 bit artifact
83+
uses: actions/upload-artifact@v2
84+
with:
85+
name: macOS_64bit
86+
path: dist/*macOS_64bit.tar.gz
87+
88+
- name: Upload checksums
89+
uses: actions/upload-artifact@v2
90+
with:
91+
name: checksums
92+
path: dist/*checksums.txt

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
dist/
2+

DistTasks.yml

+218
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
version: "3"
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+
19+
tasks:
20+
all:
21+
desc: Build for distribution for all platforms
22+
cmds:
23+
- task: Windows_32bit
24+
- task: Windows_64bit
25+
- task: Linux_32bit
26+
- task: Linux_64bit
27+
- task: Linux_ARMv6
28+
- task: Linux_ARMv7
29+
- task: Linux_ARM64
30+
- task: macOS_64bit
31+
- task: checksums
32+
33+
checksums:
34+
desc: Create the checksums file
35+
dir: "{{ .DIST_DIR }}"
36+
cmds:
37+
- sha256sum {{ .PROJECT_NAME }}_{{ .VERSION }}_*.* > {{ .CHECKSUM_FILE }}
38+
39+
Windows_32bit:
40+
desc: Builds Windows 32 bit binaries
41+
dir: "{{ .DIST_DIR }}/{{ .PLATFORM_DIR }}"
42+
cmds:
43+
- |
44+
mkdir -p {{ .PROJECT_NAME }}_{{ .VERSION }}
45+
cp ../../LICENSE.txt {{ .PROJECT_NAME }}_{{ .VERSION }}
46+
docker run -v `pwd`/../..:/home/build -w /home/build \
47+
-e CGO_ENABLED=1 \
48+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
49+
--build-cmd "{{ .BUILD_COMMAND }}" \
50+
-p "{{ .BUILD_PLATFORM }}"
51+
zip -r ../{{ .PACKAGE_NAME}} {{ .PROJECT_NAME }}_{{ .VERSION }}
52+
53+
vars:
54+
PACKAGE_PLATFORM: "Windows_32bit"
55+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}"
56+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}_{{ .VERSION }}/{{ .PROJECT_NAME }}.exe {{ .LDFLAGS }}"
57+
BUILD_PLATFORM: "windows/386"
58+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
59+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.zip"
60+
61+
Windows_64bit:
62+
desc: Builds Windows 64 bit binaries
63+
dir: "{{ .DIST_DIR }}/{{ .PLATFORM_DIR }}"
64+
cmds:
65+
- |
66+
mkdir -p {{ .PROJECT_NAME }}_{{ .VERSION }}
67+
cp ../../LICENSE.txt {{ .PROJECT_NAME }}_{{ .VERSION }}
68+
docker run -v `pwd`/../..:/home/build -w /home/build \
69+
-e CGO_ENABLED=1 \
70+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
71+
--build-cmd "{{ .BUILD_COMMAND }}" \
72+
-p "{{ .BUILD_PLATFORM }}"
73+
zip -r ../{{ .PACKAGE_NAME}} {{ .PROJECT_NAME }}_{{ .VERSION }}
74+
75+
vars:
76+
PACKAGE_PLATFORM: "Windows_64bit"
77+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}"
78+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}_{{ .VERSION }}/{{ .PROJECT_NAME }}.exe {{ .LDFLAGS }}"
79+
BUILD_PLATFORM: "windows/amd64"
80+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
81+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.zip"
82+
83+
Linux_32bit:
84+
desc: Builds Linux 32 bit binaries
85+
dir: "{{ .DIST_DIR }}/{{ .PLATFORM_DIR }}"
86+
cmds:
87+
- |
88+
mkdir -p {{ .PROJECT_NAME }}_{{ .VERSION }}
89+
cp ../../LICENSE.txt {{ .PROJECT_NAME }}_{{ .VERSION }}
90+
docker run -v `pwd`/../..:/home/build -w /home/build \
91+
-e CGO_ENABLED=1 \
92+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
93+
--build-cmd "{{ .BUILD_COMMAND }}" \
94+
-p "{{ .BUILD_PLATFORM }}"
95+
tar cz {{ .PROJECT_NAME }}_{{ .VERSION }} -f ../{{ .PACKAGE_NAME }}
96+
97+
vars:
98+
PACKAGE_PLATFORM: "Linux_32bit"
99+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}"
100+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}_{{ .VERSION }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
101+
BUILD_PLATFORM: "linux/386"
102+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
103+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
104+
105+
Linux_64bit:
106+
desc: Builds Linux 64 bit binaries
107+
dir: "{{ .DIST_DIR }}/{{ .PLATFORM_DIR }}"
108+
cmds:
109+
- |
110+
mkdir -p {{ .PROJECT_NAME }}_{{ .VERSION }}
111+
cp ../../LICENSE.txt {{ .PROJECT_NAME }}_{{ .VERSION }}
112+
docker run -v `pwd`/../..:/home/build -w /home/build \
113+
-e CGO_ENABLED=1 \
114+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
115+
--build-cmd "{{ .BUILD_COMMAND }}" \
116+
-p "{{ .BUILD_PLATFORM }}"
117+
tar cz {{ .PROJECT_NAME }}_{{ .VERSION }} -f ../{{ .PACKAGE_NAME }}
118+
119+
vars:
120+
PACKAGE_PLATFORM: "Linux_64bit"
121+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}"
122+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}_{{ .VERSION }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
123+
BUILD_PLATFORM: "linux/amd64"
124+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
125+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
126+
127+
Linux_ARMv7:
128+
desc: Builds Linux ARMv7 binaries
129+
dir: "{{ .DIST_DIR }}/{{ .PLATFORM_DIR }}"
130+
cmds:
131+
- |
132+
mkdir -p {{ .PROJECT_NAME }}_{{ .VERSION }}
133+
cp ../../LICENSE.txt {{ .PROJECT_NAME }}_{{ .VERSION }}
134+
docker run -v `pwd`/../..:/home/build -w /home/build \
135+
-e CGO_ENABLED=1 \
136+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
137+
--build-cmd "{{ .BUILD_COMMAND }}" \
138+
-p "{{ .BUILD_PLATFORM }}"
139+
tar cz {{ .PROJECT_NAME }}_{{ .VERSION }} -f ../{{ .PACKAGE_NAME }}
140+
141+
vars:
142+
PACKAGE_PLATFORM: "Linux_ARMv7"
143+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}"
144+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}_{{ .VERSION }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
145+
BUILD_PLATFORM: "linux/armv7"
146+
CONTAINER_TAG: "{{ .GO_VERSION }}-arm"
147+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
148+
149+
Linux_ARMv6:
150+
desc: Builds Linux ARMv6 binaries
151+
dir: "{{ .DIST_DIR }}/{{ .PLATFORM_DIR }}"
152+
cmds:
153+
- |
154+
mkdir -p {{ .PROJECT_NAME }}_{{ .VERSION }}
155+
cp ../../LICENSE.txt {{ .PROJECT_NAME }}_{{ .VERSION }}
156+
docker run -v `pwd`/../..:/home/build -w /home/build \
157+
-e CGO_ENABLED=1 \
158+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
159+
--build-cmd "{{ .BUILD_COMMAND }}" \
160+
-p "{{ .BUILD_PLATFORM }}"
161+
tar cz {{ .PROJECT_NAME }}_{{ .VERSION }} -f ../{{ .PACKAGE_NAME }}
162+
163+
vars:
164+
PACKAGE_PLATFORM: "Linux_ARMv6"
165+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}"
166+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}_{{ .VERSION }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
167+
BUILD_PLATFORM: "linux/armv6"
168+
CONTAINER_TAG: "{{ .GO_VERSION }}-arm"
169+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
170+
171+
Linux_ARM64:
172+
desc: Builds Linux ARM64 binaries
173+
dir: "{{ .DIST_DIR }}/{{ .PLATFORM_DIR }}"
174+
cmds:
175+
- |
176+
mkdir -p {{ .PROJECT_NAME }}_{{ .VERSION }}
177+
cp ../../LICENSE.txt {{ .PROJECT_NAME }}_{{ .VERSION }}
178+
docker run -v `pwd`/../..:/home/build -w /home/build \
179+
-e CGO_ENABLED=1 \
180+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
181+
--build-cmd "{{ .BUILD_COMMAND }}" \
182+
-p "{{ .BUILD_PLATFORM }}"
183+
tar cz {{ .PROJECT_NAME }}_{{ .VERSION }} -f ../{{ .PACKAGE_NAME }}
184+
185+
vars:
186+
PACKAGE_PLATFORM: "Linux_ARM64"
187+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}"
188+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}_{{ .VERSION }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
189+
BUILD_PLATFORM: "linux/arm64"
190+
CONTAINER_TAG: "{{ .GO_VERSION }}-arm"
191+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
192+
193+
macOS_64bit:
194+
desc: Builds Mac OS X 64 bit binaries
195+
dir: "{{ .DIST_DIR }}/{{ .PLATFORM_DIR }}"
196+
cmds:
197+
- |
198+
mkdir -p {{ .PROJECT_NAME }}_{{ .VERSION }}
199+
cp ../../LICENSE.txt {{ .PROJECT_NAME }}_{{ .VERSION }}
200+
docker run -v `pwd`/../..:/home/build -w /home/build \
201+
-e CGO_ENABLED=1 \
202+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
203+
--build-cmd "{{ .BUILD_COMMAND }}" \
204+
-p "{{ .BUILD_PLATFORM }}"
205+
tar cz {{ .PROJECT_NAME }}_{{ .VERSION }} -f ../{{ .PACKAGE_NAME }}
206+
207+
vars:
208+
PACKAGE_PLATFORM: "macOS_64bit"
209+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}"
210+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}_{{ .VERSION }}/{{ .PROJECT_NAME }} {{ .LDFLAGS }}"
211+
BUILD_PLATFORM: "darwin/amd64"
212+
CONTAINER_TAG: "{{ .GO_VERSION }}-darwin"
213+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
214+
215+
vars:
216+
CONTAINER: "docker.elastic.co/beats-dev/golang-crossbuild"
217+
GO_VERSION: "1.15.8"
218+
CHECKSUM_FILE: "{{ .PROJECT_NAME }}_{{ .VERSION }}-checksums.txt"

0 commit comments

Comments
 (0)