Skip to content

Commit

Permalink
Build mac-arm64 and push to docker hub (#6617)
Browse files Browse the repository at this point in the history
## Motivation
Build and push mac-arm64 image
  • Loading branch information
andres-spacemesh committed Jan 17, 2025
1 parent ab6fb64 commit 35c94cd
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 11 deletions.
67 changes: 62 additions & 5 deletions .github/workflows/dockerhub.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,15 @@ on:
description: 'A custom image tag'
default: ''
jobs:
dockerpush:
runs-on: ubuntu-22.04
dockerpush-images:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-22.04
outname_sufix: "linux-amd64"
- os: ubuntu-latest-arm-8-cores
outname_sufix: "linux-arm64"
steps:
- name: checkout
uses: actions/checkout@v4
Expand All @@ -33,32 +40,82 @@ jobs:
username: ${{ secrets.GH_ACTION_TOKEN_USER }}
password: ${{ secrets.GH_ACTION_TOKEN }}
if: vars.GOPRIVATE

- name: get tag sufix arm64
if: ${{ runner.arch == 'arm64' }}
run: |
echo "SUFIX=-arm64" >> $GITHUB_ENV
- name: get tag sufix amd64
if: ${{ runner.arch != 'arm64' }}
run: |
echo "SUFIX=-amd64" >> $GITHUB_ENV
- name: Build docker images
run: |
export VERSION="${{ github.ref_name }}"
export VERSION="${{ github.ref_name }}" TAG_SUFIX=$SUFIX
make dockerbuild-go
make dockerbuild-bs
- name: Push docker images to dockerhub
run: |
export TAG_SUFIX=$SUFIX
make dockerpush-only
make dockerpush-bs-only
- name: Push docker images to dockerhub
if: inputs.custom_image_tag
run: |
export DOCKER_IMAGE_VERSION="${{ inputs.custom_image_tag }}"
export DOCKER_IMAGE_VERSION="${{ inputs.custom_image_tag }}" TAG_SUFIX=$SUFIX
make dockerpush-only
make dockerpush-bs-only
- name: Push docker images with version tag to dockerhub
if: startsWith(github.ref, 'refs/tags/')
run: |
export DOCKER_IMAGE_VERSION="${{ github.ref_name }}"
export DOCKER_IMAGE_VERSION="${{ github.ref_name }}" TAG_SUFIX=$SUFIX
make dockerpush-only
make dockerpush-bs-only
export DOCKER_IMAGE_REPO="go-spacemesh"
make dockerpush-only
make dockerpush-bs-only
dockerpush-manifest:
needs: [dockerpush-images]
runs-on: ubuntu-22.04
steps:
- name: checkout
uses: actions/checkout@v4
with:
ssh-key: ${{ secrets.GH_ACTION_PRIVATE_KEY }}

- uses: extractions/netrc@v2
with:
machine: github.com
username: ${{ secrets.GH_ACTION_TOKEN_USER }}
password: ${{ secrets.GH_ACTION_TOKEN }}
if: vars.GOPRIVATE

- name: Push docker manifest to dockerhub
run: |
make dockerpush-go-manifest
make dockerpush-bs-manifest
- name: Push docker manifest to dockerhub
if: inputs.custom_image_tag
run: |
export DOCKER_IMAGE_VERSION="${{ inputs.custom_image_tag }}"
make dockerpush-go-manifest
make dockerpush-bs-manifest
- name: Push docker manifest with version tag to dockerhub
if: startsWith(github.ref, 'refs/tags/')
run: |
export DOCKER_IMAGE_VERSION="${{ github.ref_name }}"
make dockerpush-go-manifest
make dockerpush-bs-manifest
export DOCKER_IMAGE_REPO="go-spacemesh"
make dockerpush-go-manifest
make dockerpush-bs-manifest
34 changes: 28 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ GOTESTSUM_VERSION := v1.12.0
GOSCALE_VERSION := v1.2.0
MOCKGEN_VERSION := v0.5.0

TAG_SUFIX ?= ""

# Add an indicator to the branch name if dirty and use commithash if running in detached mode
ifeq ($(BRANCH),HEAD)
BRANCH = $(SHA)
Expand Down Expand Up @@ -156,7 +158,7 @@ dockerbuild-go:
--secret id=mynetrc,src=$(HOME)/.netrc \
--build-arg VERSION=${VERSION} \
-t go-spacemesh:$(SHA) \
-t $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION) \
-t $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION)$(TAG_SUFIX) \
.
.PHONY: dockerbuild-go

Expand All @@ -167,15 +169,15 @@ dockerpush-only:
ifneq ($(DOCKER_USERNAME):$(DOCKER_PASSWORD),:)
echo "$(DOCKER_PASSWORD)" | docker login -u "$(DOCKER_USERNAME)" --password-stdin
endif
docker tag go-spacemesh:$(SHA) $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION)
docker push $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION)
docker tag go-spacemesh:$(SHA) $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION)$(TAG_SUFIX)
docker push $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION)$(TAG_SUFIX)
.PHONY: dockerpush-only

dockerbuild-bs:
DOCKER_BUILDKIT=1 docker build \
--secret id=mynetrc,src=$(HOME)/.netrc \
-t go-spacemesh-bs:$(SHA) \
-t $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION) \
-t $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION)$(TAG_SUFIX) \
-f ./bootstrap.Dockerfile \
.
.PHONY: dockerbuild-bs
Expand All @@ -187,10 +189,30 @@ dockerpush-bs-only:
ifneq ($(DOCKER_USERNAME):$(DOCKER_PASSWORD),:)
echo "$(DOCKER_PASSWORD)" | docker login -u "$(DOCKER_USERNAME)" --password-stdin
endif
docker tag go-spacemesh-bs:$(SHA) $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION)
docker push $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION)
docker tag go-spacemesh-bs:$(SHA) $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION)$(TAG_SUFIX)
docker push $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION)$(TAG_SUFIX)
.PHONY: dockerpush-bs-only

dockerpush-go-manifest:
ifneq ($(DOCKER_USERNAME):$(DOCKER_PASSWORD),:)
@echo "$(DOCKER_PASSWORD)" | docker login -u "$(DOCKER_USERNAME)" --password-stdin
endif
docker manifest create $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION) --amend $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION)-amd64 $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION)-arm64
docker manifest annotate $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION) $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION)-amd64 --os linux --arch amd64
docker manifest annotate $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION) $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION)-arm64 --os linux --arch arm64
docker manifest push $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO):$(DOCKER_IMAGE_VERSION)
.PHONY: dockerpush-go-manifest

dockerpush-bs-manifest:
ifneq ($(DOCKER_USERNAME):$(DOCKER_PASSWORD),:)
@echo "$(DOCKER_PASSWORD)" | docker login -u "$(DOCKER_USERNAME)" --password-stdin
endif
docker manifest create $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION) --amend $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION)-amd64 $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION)-arm64
docker manifest annotate $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION) $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION)-amd64 --os linux --arch amd64
docker manifest annotate $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION) $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION)-arm64 --os linux --arch arm64
docker manifest push $(DOCKER_HUB)/$(DOCKER_IMAGE_REPO)-bs:$(DOCKER_IMAGE_VERSION)
.PHONY: dockerpush-bs-manifest

fuzz:
@$(ULIMIT) CGO_LDFLAGS="$(CGO_TEST_LDFLAGS)" ./scripts/fuzz.sh $(FUZZTIME)
.PHONY: fuzz

0 comments on commit 35c94cd

Please sign in to comment.