update workflows to support building x86-64-v3 binaries, and using glibc-x86-64-v3 arch as default for images

This commit is contained in:
wileyj
2024-02-29 11:47:06 -08:00
parent cef2c2feeb
commit 3a648be073
5 changed files with 83 additions and 45 deletions

View File

@@ -9,12 +9,6 @@ on:
description: "Tag name of this release (x.y.z)"
required: true
type: string
arch:
description: "Stringified JSON object listing of platform matrix"
required: false
type: string
default: >-
["linux-glibc-arm64", "linux-glibc-armv7", "linux-musl-arm64", "linux-musl-armv7"]
## change the display name to the tag being built
run-name: ${{ inputs.tag }}
@@ -30,7 +24,7 @@ jobs:
## - workflow is building default branch (master)
artifact:
if: |
inputs.tag != '' &&
inputs.tag != '' &&
github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
name: Build Binaries
runs-on: ubuntu-latest
@@ -38,33 +32,79 @@ jobs:
## Run a maximum of 10 builds concurrently, using the matrix defined in inputs.arch
max-parallel: 10
matrix:
platform: ${{ fromJson(inputs.arch) }}
arch:
- linux-musl
- linux-glibc
- macos
- windows
cpu:
- arm64
- armv7
- x86-64
- x86-64-v3
exclude:
- arch: windows # excludes windows-arm64
cpu: arm64
- arch: windows # excludes windows-armv7
cpu: armv7
- arch: macos # excludes macos-armv7
cpu: armv7
steps:
## Setup Docker for the builds
- name: Docker setup
id: docker_setup
uses: stacks-network/actions/docker@main
- name: Set Local env vars
id: set_envars
run: |
case ${{ matrix.cpu }} in
x86-64)
TARGET_CPU="${{ matrix.cpu }}"
DOCKERFILE_CPU="x64"
ARCHIVE_NAME="x64"
;;
x86-64-v3)
TARGET_CPU="${{ matrix.cpu }}"
DOCKERFILE_CPU="x64"
ARCHIVE_NAME="x64-v3"
;;
*)
TARGET_CPU=""
DOCKERFILE_CPU="${{ matrix.cpu }}"
ARCHIVE_NAME="${{ matrix.cpu }}"
;;
esac
echo "DOCKERFILE=Dockerfile.${{ matrix.arch }}-${DOCKERFILE_CPU}" >> "$GITHUB_ENV"
echo "ZIPFILE=${{ matrix.arch }}-${ARCHIVE_NAME}" >> "$GITHUB_ENV"
echo "TARGET_CPU=${TARGET_CPU}" >> "$GITHUB_ENV"
echo "DOCKERFILE: ${DOCKERFILE}"
echo "ZIPFILE: ${ZIPFILE}"
echo "TARGET_CPU: ${TARGET_CPU}"
## Build the binaries using defined dockerfiles
- name: Build Binary (${{ matrix.platform }})
- name: Build Binary (${{ matrix.arch }}_${{ matrix.cpu }})
id: build_binaries
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # 5.0.0
with:
file: build-scripts/Dockerfile.${{ matrix.platform }}
outputs: type=local,dest=./release/${{ matrix.platform }}
file: build-scripts/${{ env.DOCKERFILE }}
outputs: type=local,dest=./release/${{ matrix.arch }}
build-args: |
STACKS_NODE_VERSION=${{ inputs.tag || env.GITHUB_SHA_SHORT }}
OS_ARCH=${{ matrix.platform }}
OS_ARCH=${{ matrix.arch }}
TARGET_CPU=${{ env.TARGET_CPU }}
GIT_BRANCH=${{ env.GITHUB_REF_SHORT }}
GIT_COMMIT=${{ env.GITHUB_SHA_SHORT }}
## Compress the binary artifact
- name: Compress artifact
id: compress_artifact
run: zip --junk-paths ${{ matrix.platform }} ./release/${{ matrix.platform }}/*
run: zip --junk-paths ${{ env.ZIPFILE }} ./release/${{ matrix.arch }}/*
## Upload the binary artifact to the github action (used in `github-release.yml` to create a release)
- name: Upload artifact
id: upload_artifact
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
path: ${{ matrix.platform }}.zip
path: ${{ env.ZIPFILE }}.zip

View File

@@ -36,21 +36,6 @@ jobs:
tag: ${{ inputs.tag }}
secrets: inherit
## Build x86_64 binaries from source
##
## Runs when the following is true:
## - tag is provided
## - workflow is building default branch (master)
build-binaries-x64:
if: |
inputs.tag != '' &&
github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
name: Build Binaries (x64_64)
uses: ./.github/workflows/create-source-binary-x64.yml
with:
tag: ${{ inputs.tag }}
secrets: inherit
## Runs when the following is true:
## - tag is provided
## - workflow is building default branch (master)
@@ -62,7 +47,6 @@ jobs:
runs-on: ubuntu-latest
needs:
- build-binaries
- build-binaries-x64
steps:
## Downloads the artifacts built in `create-source-binary.yml`
- name: Download Artifacts
@@ -111,7 +95,6 @@ jobs:
uses: ./.github/workflows/image-build-binary.yml
needs:
- build-binaries
- build-binaries-x64
- create-release
with:
tag: ${{ inputs.tag }}

View File

@@ -8,12 +8,7 @@ on:
tag:
required: true
type: string
description: "Version tag for alpine images"
docker-org:
required: false
type: string
description: "Docker repo org for uploading images (defaults to github org)"
default: "${GITHUB_REPOSITORY_OWNER}"
description: "Version tag for docker images"
## Define which docker arch to build for
env:
@@ -48,14 +43,24 @@ jobs:
steps:
## Setup Docker for the builds
- name: Docker setup
id: docker_setup
uses: stacks-network/actions/docker@main
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
## if the repo owner is not `stacks-network`, default to a docker-org of the repo owner (i.e. github user id)
## this allows forks to run the docker push workflows without having to hardcode a dockerhub org (but it does require docker hub user to match github username)
- name: Set Local env vars
id: set_envars
if: |
github.repository_owner != 'stacks-network'
run: |
echo "docker-org=${{ github.repository_owner }}" >> "$GITHUB_ENV"
## Set docker metatdata
## - depending on the matrix.dist, different tags will be enabled
## ex. alpine will have this tag: `type=ref,event=tag,enable=${{ matrix.dist == 'alpine' }}`
## ex. debian will have this tag: `type=ref,event=tag,enable=${{ matrix.dist == 'debian' }}`
- name: Docker Metadata ( ${{matrix.dist}} )
id: docker_metadata
uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 #v5.0.0
@@ -64,12 +69,12 @@ jobs:
${{env.docker-org}}/${{ github.event.repository.name }}
${{env.docker-org}}/stacks-blockchain
tags: |
type=raw,value=latest,enable=${{ inputs.tag != '' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) ) && matrix.dist == 'alpine' }}
type=raw,value=${{ inputs.tag }}-${{ matrix.dist }},enable=${{ inputs.tag != '' && matrix.dist == 'alpine'}}
type=raw,value=${{ inputs.tag }},enable=${{ inputs.tag != '' && matrix.dist == 'alpine' }}
type=ref,event=tag,enable=${{ matrix.dist == 'alpine' }}
type=raw,value=latest-${{ matrix.dist }},enable=${{ inputs.tag != '' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) ) && matrix.dist == 'debian' }}
type=raw,value=${{ inputs.tag }}-${{ matrix.dist }},enable=${{ inputs.tag != '' && matrix.dist == 'debian' }}
type=raw,value=latest,enable=${{ inputs.tag != '' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) ) && matrix.dist == 'debian' }}
type=raw,value=${{ inputs.tag }}-${{ matrix.dist }},enable=${{ inputs.tag != '' && matrix.dist == 'debian'}}
type=raw,value=${{ inputs.tag }},enable=${{ inputs.tag != '' && matrix.dist == 'debian' }}
type=ref,event=tag,enable=${{ matrix.dist == 'debian' }}
type=raw,value=latest-${{ matrix.dist }},enable=${{ inputs.tag != '' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) ) && matrix.dist == 'alpine' }}
type=raw,value=${{ inputs.tag }}-${{ matrix.dist }},enable=${{ inputs.tag != '' && matrix.dist == 'alpine' }}
## Build docker image for release
- name: Build and Push ( ${{matrix.dist}} )

View File

@@ -31,11 +31,21 @@ jobs:
steps:
## Setup Docker for the builds
- name: Docker setup
id: docker_setup
uses: stacks-network/actions/docker@main
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
## if the repo owner is not `stacks-network`, default to a docker-org of the repo owner (i.e. github user id)
## this allows forks to run the docker push workflows without having to hardcode a dockerhub org (but it does require docker hub user to match github username)
- name: Set Local env vars
id: set_envars
if: |
github.repository_owner != 'stacks-network'
run: |
echo "docker-org=${{ github.repository_owner }}" >> "$GITHUB_ENV"
## Set docker metatdata
- name: Docker Metadata ( ${{matrix.dist}} )
id: docker_metadata
@@ -62,4 +72,5 @@ jobs:
STACKS_NODE_VERSION=${{ env.GITHUB_SHA_SHORT }}
GIT_BRANCH=${{ env.GITHUB_REF_SHORT }}
GIT_COMMIT=${{ env.GITHUB_SHA_SHORT }}
TARGET_CPU=x86-64-v3
push: ${{ env.DOCKER_PUSH }}

View File

@@ -166,7 +166,6 @@ jobs:
# Core contract tests on Clarinet v1
# Check for false positives/negatives
# https://github.com/stacks-network/stacks-blockchain/pull/4031#pullrequestreview-1713341208
core-contracts-clarinet-test-clarinet-v1:
name: Core Contracts Test Clarinet V1
runs-on: ubuntu-latest