Skip to content

Commit a45de5f

Browse files
authored
Merge branch 'develop' into fix/signers-verify-reward-cycle
2 parents a0e13b2 + f4db3c9 commit a45de5f

File tree

4 files changed

+128
-277
lines changed

4 files changed

+128
-277
lines changed

.github/workflows/ci.yml

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,30 @@ jobs:
5050
with:
5151
alias: "fmt-stacks"
5252

53-
######################################################################################
54-
## Check if the branch that this workflow is being run against is a release branch
53+
## Check if the head branch of the PR is a release branch
54+
##
55+
## Runs when the following is true:
56+
## - The workflow was triggered by a `workflow_dispatch` action
5557
check-release:
58+
if: |
59+
(
60+
github.event_name == 'workflow_dispatch'
61+
)
5662
name: Check Release
5763
needs:
5864
- rustfmt
5965
runs-on: ubuntu-latest
6066
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 }}
67+
node_tag: ${{ steps.check_release.outputs.node_tag }}
68+
node_docker_tag: ${{ steps.check_release.outputs.node_docker_tag }}
69+
signer_tag: ${{ steps.check_release.outputs.signer_tag }}
70+
signer_docker_tag: ${{ steps.check_release.outputs.signer_docker_tag }}
71+
is_node_release: ${{ steps.check_release.outputs.is_node_release }}
72+
is_signer_release: ${{ steps.check_release.outputs.is_signer_release }}
6473
steps:
6574
- name: Check Release
6675
id: check_release
67-
uses: stacks-network/actions/stacks-core/check-release@main
76+
uses: stacks-network/actions/stacks-core/release/check-release@main
6877
with:
6978
tag: ${{ github.ref_name }}
7079

@@ -75,15 +84,20 @@ jobs:
7584
## - it is a release run
7685
create-release:
7786
if: |
78-
needs.check-release.outputs.is_release == 'true'
79-
name: Create Release
87+
needs.check-release.outputs.is_node_release == 'true' ||
88+
needs.check-release.outputs.is_signer_release == 'true'
89+
name: Create Release(s)
8090
needs:
8191
- rustfmt
8292
- check-release
8393
uses: ./.github/workflows/github-release.yml
8494
with:
85-
tag: ${{ needs.check-release.outputs.tag }}
86-
docker_tag: ${{ needs.check-release.outputs.docker_tag }}
95+
node_tag: ${{ needs.check-release.outputs.node_tag }}
96+
node_docker_tag: ${{ needs.check-release.outputs.node_docker_tag }}
97+
signer_tag: ${{ needs.check-release.outputs.signer_tag }}
98+
signer_docker_tag: ${{ needs.check-release.outputs.signer_docker_tag }}
99+
is_node_release: ${{ needs.check-release.outputs.is_node_release }}
100+
is_signer_release: ${{ needs.check-release.outputs.is_signer_release }}
87101
secrets: inherit
88102

89103
## Build and push Debian image built from source
@@ -92,7 +106,7 @@ jobs:
92106
## - it is not a release run
93107
docker-image:
94108
if: |
95-
needs.check-release.outputs.is_release != 'true'
109+
needs.check-release.outputs.is_signer_release != 'true'
96110
name: Docker Image (Source)
97111
uses: ./.github/workflows/image-build-source.yml
98112
needs:
@@ -112,7 +126,7 @@ jobs:
112126
## - commit to either (development, master) branch
113127
create-cache:
114128
if: |
115-
needs.check-release.outputs.is_release == 'true' || (
129+
needs.check-release.outputs.is_node_release == 'true' || (
116130
github.event_name == 'workflow_dispatch' ||
117131
github.event_name == 'pull_request' ||
118132
github.event_name == 'merge_group' ||
@@ -144,7 +158,7 @@ jobs:
144158
## - commit to either (development, next, master) branch
145159
stacks-core-tests:
146160
if: |
147-
needs.check-release.outputs.is_release == 'true' || (
161+
needs.check-release.outputs.is_signer_release == 'true' || (
148162
github.event_name == 'workflow_dispatch' ||
149163
github.event_name == 'pull_request' ||
150164
github.event_name == 'merge_group' ||
@@ -198,7 +212,7 @@ jobs:
198212

199213
bitcoin-tests:
200214
if: |
201-
needs.check-release.outputs.is_release == 'true' || (
215+
needs.check-release.outputs.is_node_release == 'true' || (
202216
github.event_name == 'workflow_dispatch' ||
203217
github.event_name == 'pull_request' ||
204218
github.event_name == 'merge_group' ||
@@ -221,7 +235,7 @@ jobs:
221235

222236
p2p-tests:
223237
if: |
224-
needs.check-release.outputs.is_release == 'true' || (
238+
needs.check-release.outputs.is_node_release == 'true' || (
225239
github.event_name == 'workflow_dispatch' ||
226240
github.event_name == 'pull_request' ||
227241
github.event_name == 'merge_group' ||
@@ -246,7 +260,7 @@ jobs:
246260
## Runs when:
247261
## - it is a release run
248262
atlas-tests:
249-
if: needs.check-release.outputs.is_release == 'true'
263+
if: needs.check-release.outputs.is_node_release == 'true'
250264
name: Atlas Tests
251265
needs:
252266
- rustfmt
@@ -255,7 +269,7 @@ jobs:
255269
uses: ./.github/workflows/atlas-tests.yml
256270

257271
epoch-tests:
258-
if: needs.check-release.outputs.is_release == 'true'
272+
if: needs.check-release.outputs.is_node_release == 'true'
259273
name: Epoch Tests
260274
needs:
261275
- rustfmt
@@ -264,7 +278,7 @@ jobs:
264278
uses: ./.github/workflows/epoch-tests.yml
265279

266280
slow-tests:
267-
if: needs.check-release.outputs.is_release == 'true'
281+
if: needs.check-release.outputs.is_node_release == 'true'
268282
name: Slow Tests
269283
needs:
270284
- 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@main
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@main
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@main
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)