1- name : Release binaries
1+ name : Release database
22
33on :
4- push :
5- tags :
6- - " v*"
4+ schedule :
5+ - cron : " 17 3 * * *"
76 workflow_dispatch :
8- inputs :
9- tag :
10- description : " Release tag, for example v0.1.0"
11- required : true
12- type : string
13- prerelease :
14- description : " Mark release as prerelease"
15- required : false
16- default : false
17- type : boolean
187
198permissions :
209 contents : write
2110
2211jobs :
23- build :
24- name : Build ${{ matrix.goos }}-${{ matrix.goarch }}
25- runs-on : ubuntu-latest
26- strategy :
27- fail-fast : false
28- matrix :
29- include :
30- - goos : linux
31- goarch : amd64
32- - goos : linux
33- goarch : arm64
34- - goos : darwin
35- goarch : amd64
36- - goos : darwin
37- goarch : arm64
38- - goos : windows
39- goarch : amd64
40- steps :
41- - uses : actions/checkout@v4
42-
43- - uses : actions/setup-go@v5
44- with :
45- go-version-file : go.mod
46- cache : true
47-
48- - name : Resolve version
49- id : version
50- run : |
51- if [ "${GITHUB_EVENT_NAME}" = "workflow_dispatch" ]; then
52- echo "value=${{ inputs.tag }}" >> "$GITHUB_OUTPUT"
53- else
54- echo "value=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
55- fi
56-
57- - name : Build binary
58- env :
59- GOOS : ${{ matrix.goos }}
60- GOARCH : ${{ matrix.goarch }}
61- CGO_ENABLED : " 0"
62- VERSION : ${{ steps.version.outputs.value }}
63- run : |
64- set -euo pipefail
65- mkdir -p dist
66- name="blackroute_${VERSION}_${GOOS}_${GOARCH}"
67- binary="blackroute"
68- if [ "$GOOS" = "windows" ]; then
69- binary="blackroute.exe"
70- fi
71- go build -trimpath -ldflags="-s -w" -o "dist/${binary}" ./cmd/collector
72- cp README.md LICENSE configs/feeds.yaml dist/
73- if [ "$GOOS" = "windows" ]; then
74- (cd dist && zip -q "../${name}.zip" "$binary" README.md LICENSE feeds.yaml)
75- else
76- tar -czf "${name}.tar.gz" -C dist "$binary" README.md LICENSE feeds.yaml
77- fi
78-
79- - uses : actions/upload-artifact@v4
80- with :
81- name : blackroute-${{ steps.version.outputs.value }}-${{ matrix.goos }}-${{ matrix.goarch }}
82- path : |
83- blackroute_*.tar.gz
84- blackroute_*.zip
85- if-no-files-found : error
86-
8712 database :
88- name : Build database artifacts
13+ name : Build and publish database
8914 runs-on : ubuntu-latest
9015 steps :
9116 - uses : actions/checkout@v4
@@ -95,20 +20,20 @@ jobs:
9520 go-version-file : go.mod
9621 cache : true
9722
98- - name : Resolve version
99- id : version
23+ - name : Resolve release tag
24+ id : release
10025 run : |
101- if [ "${GITHUB_EVENT_NAME}" = "workflow_dispatch" ]; then
102- echo "value=${{ inputs.tag }}" >> "$GITHUB_OUTPUT"
103- else
104- echo "value=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
105- fi
26+ day="$(date -u +'%Y.%m.%d')"
27+ echo "tag=$day" >> "$GITHUB_OUTPUT"
28+ echo "name=Blackroute $day" >> "$GITHUB_OUTPUT"
10629
10730 - name : Build Blackroute database
10831 env :
109- VERSION : ${{ steps.version .outputs.value }}
32+ VERSION : ${{ steps.release .outputs.tag }}
11033 run : |
11134 set -euo pipefail
35+ mkdir -p dist
36+
11237 go build -trimpath -ldflags="-s -w" -o ./bin/blackroute ./cmd/collector
11338 ./bin/blackroute --feeds=configs/feeds.yaml --output=release
11439
@@ -117,46 +42,10 @@ jobs:
11742 test -s release/blackroute.jsonl
11843 test -s release/run_stats.json
11944
120- cp release/blackroute.mmdb "blackroute_${VERSION}_database.mmdb"
121- cp release/blackroute.csv "blackroute_${VERSION}_records.csv"
122- cp release/blackroute.jsonl "blackroute_${VERSION}_records.jsonl"
123- cp release/run_stats.json "blackroute_${VERSION}_run_stats.json"
124- tar -czf "blackroute_${VERSION}_database.tar.gz" -C release \
125- blackroute.mmdb blackroute.csv blackroute.jsonl run_stats.json
126-
127- - uses : actions/upload-artifact@v4
128- with :
129- name : blackroute-${{ steps.version.outputs.value }}-database
130- path : |
131- blackroute_*_database.tar.gz
132- blackroute_*_database.mmdb
133- blackroute_*_records.csv
134- blackroute_*_records.jsonl
135- blackroute_*_run_stats.json
136- if-no-files-found : error
137-
138- publish :
139- name : Publish GitHub release
140- needs :
141- - build
142- - database
143- runs-on : ubuntu-latest
144- steps :
145- - uses : actions/download-artifact@v4
146- with :
147- path : dist
148- merge-multiple : true
149-
150- - name : Resolve release tag
151- id : release
152- run : |
153- if [ "${GITHUB_EVENT_NAME}" = "workflow_dispatch" ]; then
154- echo "tag=${{ inputs.tag }}" >> "$GITHUB_OUTPUT"
155- echo "prerelease=${{ inputs.prerelease }}" >> "$GITHUB_OUTPUT"
156- else
157- echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
158- echo "prerelease=false" >> "$GITHUB_OUTPUT"
159- fi
45+ cp release/blackroute.mmdb "dist/blackroute_${VERSION}.mmdb"
46+ cp release/run_stats.json "dist/blackroute_${VERSION}_run_stats.json"
47+ tar -czf "dist/blackroute_${VERSION}_exports.tar.gz" -C release \
48+ blackroute.csv blackroute.jsonl run_stats.json
16049
16150 - name : Checksums
16251 run : |
@@ -169,8 +58,19 @@ jobs:
16958 uses : softprops/action-gh-release@v2
17059 with :
17160 tag_name : ${{ steps.release.outputs.tag }}
172- name : Blackroute ${{ steps.release.outputs.tag }}
173- prerelease : ${{ steps.release.outputs.prerelease }}
174- generate_release_notes : true
61+ name : ${{ steps.release.outputs.name }}
62+ prerelease : false
63+ make_latest : true
64+ body : |
65+ Daily Blackroute database build.
66+
67+ Assets:
68+ - `blackroute_${{ steps.release.outputs.tag }}.mmdb`
69+ - `blackroute_${{ steps.release.outputs.tag }}_exports.tar.gz`
70+ - `blackroute_${{ steps.release.outputs.tag }}_run_stats.json`
71+ - `checksums.txt`
17572 files : |
176- dist/*
73+ dist/blackroute_*.mmdb
74+ dist/blackroute_*_exports.tar.gz
75+ dist/blackroute_*_run_stats.json
76+ dist/checksums.txt
0 commit comments