Skip to content

Commit 3c56516

Browse files
committed
feat: release signer alongside node workflow
1 parent 04f6fc4 commit 3c56516

File tree

4 files changed

+122
-275
lines changed

4 files changed

+122
-275
lines changed

.github/workflows/ci.yml

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,16 @@ jobs:
5858
- rustfmt
5959
runs-on: ubuntu-latest
6060
outputs:
61-
tag: ${{ steps.check_release.outputs.tag }}
62-
docker_tag: ${{ steps.check_release.outputs.docker_tag }}
63-
is_release: ${{ steps.check_release.outputs.is_release }}
61+
node_tag: ${{ steps.check_release.outputs.node_tag }}
62+
node_docker_tag: ${{ steps.check_release.outputs.node_docker_tag }}
63+
signer_tag: ${{ steps.check_release.outputs.signer_tag }}
64+
signer_docker_tag: ${{ steps.check_release.outputs.signer_docker_tag }}
65+
is_node_release: ${{ steps.check_release.outputs.is_node_release }}
66+
is_signer_release: ${{ steps.check_release.outputs.is_signer_release }}
6467
steps:
6568
- name: Check Release
6669
id: check_release
67-
uses: stacks-network/actions/stacks-core/check-release@main
70+
uses: stacks-network/actions/stacks-core/release/check-release@feat/release-signer-alongside-node
6871
with:
6972
tag: ${{ github.ref_name }}
7073

@@ -75,15 +78,20 @@ jobs:
7578
## - it is a release run
7679
create-release:
7780
if: |
78-
needs.check-release.outputs.is_release == 'true'
79-
name: Create Release
81+
needs.check-release.outputs.is_node_release == 'true' ||
82+
needs.check-release.outputs.is_signer_release == 'true'
83+
name: Create Release(s)
8084
needs:
8185
- rustfmt
8286
- check-release
8387
uses: ./.github/workflows/github-release.yml
8488
with:
85-
tag: ${{ needs.check-release.outputs.tag }}
86-
docker_tag: ${{ needs.check-release.outputs.docker_tag }}
89+
node_tag: ${{ needs.check-release.outputs.node_tag }}
90+
node_docker_tag: ${{ needs.check-release.outputs.node_docker_tag }}
91+
signer_tag: ${{ needs.check-release.outputs.signer_tag }}
92+
signer_docker_tag: ${{ needs.check-release.outputs.signer_docker_tag }}
93+
is_node_release: ${{ needs.check-release.outputs.is_node_release }}
94+
is_signer_release: ${{ needs.check-release.outputs.is_signer_release }}
8795
secrets: inherit
8896

8997
## Build and push Debian image built from source
@@ -92,7 +100,7 @@ jobs:
92100
## - it is not a release run
93101
docker-image:
94102
if: |
95-
needs.check-release.outputs.is_release != 'true'
103+
needs.check-release.outputs.is_signer_release != 'true'
96104
name: Docker Image (Source)
97105
uses: ./.github/workflows/image-build-source.yml
98106
needs:
@@ -109,10 +117,10 @@ jobs:
109117
## and any of:
110118
## - this workflow is called manually
111119
## - PR is opened
112-
## - commit to either (development, master) branch
120+
## - PR added to merge queue
113121
create-cache:
114122
if: |
115-
needs.check-release.outputs.is_release == 'true' ||
123+
needs.check-release.outputs.is_node_release == 'true' ||
116124
github.event_name == 'workflow_dispatch' ||
117125
github.event_name == 'pull_request' ||
118126
github.event_name == 'merge_group'
@@ -132,9 +140,9 @@ jobs:
132140
## - this workflow is called manually
133141
## - PR is opened
134142
## - PR added to merge queue
135-
## - commit to either (development, next, master) branch
136143
stacks-core-tests:
137144
if: |
145+
needs.check-release.outputs.is_signer_release == 'true' ||
138146
github.event_name == 'workflow_dispatch' ||
139147
github.event_name == 'pull_request' ||
140148
github.event_name == 'merge_group'
@@ -155,9 +163,9 @@ jobs:
155163
## - this workflow is called manually
156164
## - PR is opened
157165
## - PR added to merge queue
158-
## - commit to either (development, next, master) branch
159166
stacks-core-build-tests:
160167
if: |
168+
needs.check-release.outputs.is_signer_release == 'true' ||
161169
github.event_name == 'workflow_dispatch' ||
162170
github.event_name == 'pull_request' ||
163171
github.event_name == 'merge_group'
@@ -169,6 +177,7 @@ jobs:
169177

170178
bitcoin-tests:
171179
if: |
180+
needs.check-release.outputs.is_node_release == 'true' ||
172181
github.event_name == 'workflow_dispatch' ||
173182
github.event_name == 'pull_request' ||
174183
github.event_name == 'merge_group'
@@ -181,6 +190,7 @@ jobs:
181190

182191
p2p-tests:
183192
if: |
193+
needs.check-release.outputs.is_node_release == 'true' ||
184194
github.event_name == 'workflow_dispatch' ||
185195
github.event_name == 'pull_request' ||
186196
github.event_name == 'merge_group'
@@ -196,7 +206,7 @@ jobs:
196206
## Runs when:
197207
## - it is a release run
198208
atlas-tests:
199-
if: needs.check-release.outputs.is_release == 'true'
209+
if: needs.check-release.outputs.is_node_release == 'true'
200210
name: Atlas Tests
201211
needs:
202212
- rustfmt
@@ -205,7 +215,7 @@ jobs:
205215
uses: ./.github/workflows/atlas-tests.yml
206216

207217
epoch-tests:
208-
if: needs.check-release.outputs.is_release == 'true'
218+
if: needs.check-release.outputs.is_node_release == 'true'
209219
name: Epoch Tests
210220
needs:
211221
- rustfmt
@@ -214,7 +224,7 @@ jobs:
214224
uses: ./.github/workflows/epoch-tests.yml
215225

216226
slow-tests:
217-
if: needs.check-release.outputs.is_release == 'true'
227+
if: needs.check-release.outputs.is_node_release == 'true'
218228
name: Slow Tests
219229
needs:
220230
- rustfmt

.github/workflows/create-source-binary.yml

Lines changed: 0 additions & 60 deletions
This file was deleted.

.github/workflows/github-release.yml

Lines changed: 96 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,28 @@ name: Github Release
55
on:
66
workflow_call:
77
inputs:
8-
tag:
9-
description: "Release Tag"
8+
node_tag:
9+
description: "Node Release Tag"
1010
required: true
1111
type: string
12-
docker_tag:
13-
description: "Docker Release Tag"
12+
node_docker_tag:
13+
description: "Node Docker Release Tag"
14+
required: true
15+
type: string
16+
signer_tag:
17+
description: "Signer Release Tag"
18+
required: true
19+
type: string
20+
signer_docker_tag:
21+
description: "Signer Docker Release Tag"
22+
required: true
23+
type: string
24+
is_node_release:
25+
description: "True if it is a node release"
26+
required: true
27+
type: string
28+
is_signer_release:
29+
description: "True if it is a signer release"
1430
required: true
1531
type: string
1632
secrets:
@@ -22,81 +38,107 @@ concurrency:
2238
## Always cancel duplicate jobs
2339
cancel-in-progress: true
2440

25-
run-name: ${{ inputs.tag }}
41+
run-name: ${{ inputs.node_tag || inputs.signer_tag }}
2642

2743
jobs:
2844
## Build arch dependent binaries from source
2945
##
3046
## Runs when the following is true:
31-
## - tag is provided
47+
## - either node or signer tag is provided
3248
build-binaries:
3349
if: |
34-
inputs.tag != ''
50+
inputs.node_tag != '' ||
51+
inputs.signer_tag != ''
3552
name: Build Binaries
36-
uses: ./.github/workflows/create-source-binary.yml
37-
with:
38-
tag: ${{ inputs.tag }}
39-
secrets: inherit
53+
runs-on: ubuntu-latest
54+
strategy:
55+
## Run a maximum of 10 builds concurrently, using the matrix defined in inputs.arch
56+
max-parallel: 10
57+
matrix:
58+
arch:
59+
- linux-musl
60+
- linux-glibc
61+
- macos
62+
- windows
63+
cpu:
64+
- arm64
65+
- armv7
66+
- x86-64 ## defaults to x86-64-v3 variant - intel haswell (2013) and newer
67+
# - x86-64-v2 ## intel nehalem (2008) and newer
68+
# - x86-64-v3 ## intel haswell (2013) and newer
69+
# - x86-64-v4 ## intel skylake (2017) and newer
70+
exclude:
71+
- arch: windows # excludes windows-arm64
72+
cpu: arm64
73+
- arch: windows # excludes windows-armv7
74+
cpu: armv7
75+
- arch: macos # excludes macos-armv7
76+
cpu: armv7
77+
steps:
78+
- name: Build Binary (${{ matrix.arch }}_${{ matrix.cpu }})
79+
uses: stacks-network/actions/stacks-core/release/create-source-binary@feat/release-signer-alongside-node
80+
with:
81+
arch: ${{ matrix.arch }}
82+
cpu: ${{ matrix.cpu }}
83+
node_tag: ${{ inputs.node_tag }}
84+
signer_tag: ${{ inputs.signer_tag }}
85+
signer_docker_tag: ${{ inputs.signer_docker_tag }}
86+
is_node_release: ${{ inputs.is_node_release }}
4087

4188
## Runs when the following is true:
42-
## - tag is provided
43-
## - workflow is building default branch (master)
89+
## - either node or signer tag is provided
4490
create-release:
4591
if: |
46-
inputs.tag != ''
92+
inputs.node_tag != '' ||
93+
inputs.signer_tag != ''
4794
name: Create Release
4895
runs-on: ubuntu-latest
4996
needs:
5097
- build-binaries
5198
steps:
52-
## Downloads the artifacts built in `create-source-binary.yml`
53-
- name: Download Artifacts
54-
id: download_artifacts
55-
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
99+
## Creates releases
100+
- name: Create Release
101+
uses: stacks-network/actions/stacks-core/release/create-github-releases@feat/release-signer-alongside-node
56102
with:
57-
pattern: ${{ inputs.tag }}-binary-build-*
58-
path: release
59-
merge-multiple: true
60-
61-
## Generate a checksums file to be added to the release page
62-
- name: Generate Checksums
63-
id: generate_checksum
64-
uses: stacks-network/actions/generate-checksum@main
65-
with:
66-
artifact_download_pattern: "${{ inputs.tag }}-binary-build-*"
67-
68-
## Upload the release archives with the checksums file
69-
- name: Upload Release
70-
id: upload_release
71-
uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 #v2.0.5
72-
env:
73-
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
74-
with:
75-
name: Release ${{ inputs.tag || github.ref }}
76-
tag_name: ${{ inputs.tag || github.ref }}
77-
draft: false
78-
prerelease: true
79-
fail_on_unmatched_files: true
80-
target_commitish: ${{ github.sha }}
81-
generate_release_notes: true
82-
files: |
83-
release/*.zip
84-
CHECKSUMS.txt
103+
node_tag: ${{ inputs.node_tag }}
104+
node_docker_tag: ${{ inputs.node_docker_tag }}
105+
signer_tag: ${{ inputs.signer_tag }}
106+
signer_docker_tag: ${{ inputs.signer_docker_tag }}
107+
is_node_release: ${{ inputs.is_node_release }}
108+
is_signer_release: ${{ inputs.is_signer_release }}
109+
GH_TOKEN: ${{ secrets.GH_TOKEN }}
85110

86111
## Builds arch dependent Docker images from binaries
87112
##
88113
## Runs when the following is true:
89-
## - tag is provided
90-
## - workflow is building default branch (master)
114+
## - either node or signer tag is provided
91115
docker-image:
92116
if: |
93-
inputs.tag != ''
117+
inputs.node_tag != '' ||
118+
inputs.signer_tag != ''
94119
name: Docker Image (Binary)
95-
uses: ./.github/workflows/image-build-binary.yml
120+
runs-on: ubuntu-latest
96121
needs:
97122
- build-binaries
98123
- create-release
99-
with:
100-
tag: ${{ inputs.tag }}
101-
docker_tag: ${{ inputs.docker_tag }}
102-
secrets: inherit
124+
strategy:
125+
fail-fast: false
126+
## Build a maximum of 2 images concurrently based on matrix.dist
127+
max-parallel: 2
128+
matrix:
129+
dist:
130+
- alpine
131+
- debian
132+
steps:
133+
- name: Create Docker Image
134+
uses: stacks-network/actions/stacks-core/release/create-docker-images@feat/release-signer-alongside-node
135+
with:
136+
node_tag: ${{ inputs.node_tag }}
137+
node_docker_tag: ${{ inputs.node_docker_tag }}
138+
signer_tag: ${{ inputs.signer_tag }}
139+
signer_docker_tag: ${{ inputs.signer_docker_tag }}
140+
is_node_release: ${{ inputs.is_node_release }}
141+
is_signer_release: ${{ inputs.is_signer_release }}
142+
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
143+
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
144+
dist: ${{ matrix.dist }}

0 commit comments

Comments
 (0)