mirror of
https://github.com/aljazceru/ark.git
synced 2026-02-04 02:54:44 +01:00
gha release: split docker and binaries. tag name as VERSION in build-arg (#256)
* client: print version * arkd: add --version * release action refactor
This commit is contained in:
26
.github/workflows/ark.release.yaml
vendored
26
.github/workflows/ark.release.yaml
vendored
@@ -1,18 +1,16 @@
|
||||
name: release
|
||||
name: Release Binaries and Docker Build
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [released]
|
||||
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
jobs:
|
||||
build-and-upload:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
@@ -22,10 +20,11 @@ jobs:
|
||||
with:
|
||||
go-version: 1.21.0
|
||||
|
||||
# Build binaries for all architectures
|
||||
- name: Build binaries
|
||||
run: make build-all
|
||||
|
||||
# Server
|
||||
# Server binary uploads
|
||||
- name: Upload server binary (Linux, AMD64)
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
@@ -66,7 +65,7 @@ jobs:
|
||||
asset_name: arkd-darwin-arm64
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
# CLI
|
||||
# CLI binary uploads
|
||||
- name: Upload client binary (Linux, AMD64)
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
@@ -107,7 +106,7 @@ jobs:
|
||||
asset_name: ark-darwin-arm64
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
# WASM SDK
|
||||
# WASM SDK upload
|
||||
- name: Upload WASM SDK
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
@@ -118,7 +117,12 @@ jobs:
|
||||
asset_name: ark-sdk.wasm
|
||||
asset_content_type: application/wasm
|
||||
|
||||
# Docker
|
||||
docker-build-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build-and-upload
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Docker
|
||||
uses: docker/setup-buildx-action@v1
|
||||
@@ -137,3 +141,5 @@ jobs:
|
||||
push: true
|
||||
tags: ghcr.io/${{ github.repository }}:${{ github.event.release.tag_name }},ghcr.io/${{ github.repository }}:latest
|
||||
platforms: linux/amd64,linux/arm64
|
||||
build-args: |
|
||||
VERSION=${{ github.event.release.tag_name }}
|
||||
@@ -2,8 +2,6 @@
|
||||
FROM golang:1.21.0 AS builder
|
||||
|
||||
ARG VERSION
|
||||
ARG COMMIT
|
||||
ARG DATE
|
||||
ARG TARGETOS
|
||||
ARG TARGETARCH
|
||||
|
||||
@@ -12,8 +10,8 @@ WORKDIR /app
|
||||
COPY . .
|
||||
|
||||
ENV GOPROXY=https://goproxy.io,direct
|
||||
RUN cd server && CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags="-X 'main.Version=${VERSION}' -X 'main.Commit=${COMMIT}' -X 'main.Date=${DATE}}'" -o ../bin/arkd ./cmd/arkd
|
||||
RUN cd client && CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags="-X 'main.Version=${VERSION}}' -X 'main.Commit=${COMMIT}' -X 'main.Date=${DATE}}'" -o ../bin/ark .
|
||||
RUN cd server && CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags="-X 'main.Version=${VERSION}'" -o ../bin/arkd ./cmd/arkd
|
||||
RUN cd client && CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags="-X 'main.Version=${VERSION}}'" -o ../bin/ark .
|
||||
|
||||
# Second image, running the arkd executable
|
||||
FROM alpine:3.12
|
||||
|
||||
@@ -1,99 +0,0 @@
|
||||
builds:
|
||||
- id: "arkd"
|
||||
main: ./cmd/arkd
|
||||
ldflags:
|
||||
- -s -X 'main.version={{.Version}}' -X 'main.commit={{.Commit}}' -X 'main.date={{.Date}}'
|
||||
goos:
|
||||
- linux
|
||||
- darwin
|
||||
goarch:
|
||||
- amd64
|
||||
- arm64
|
||||
binary: arkd
|
||||
|
||||
## flag the semver v**.**.**-<tag>.* as pre-release on Github
|
||||
release:
|
||||
prerelease: auto
|
||||
|
||||
checksum:
|
||||
name_template: "checksums.txt"
|
||||
|
||||
snapshot:
|
||||
name_template: "{{ .Tag }}-next"
|
||||
|
||||
changelog:
|
||||
use: github-native
|
||||
|
||||
archives:
|
||||
- id: arkd
|
||||
format: binary
|
||||
builds:
|
||||
- arkd
|
||||
name_template: "arkd-v{{ .Version }}-{{ .Os }}-{{ .Arch }}"
|
||||
|
||||
dockers:
|
||||
###########################
|
||||
# tag latest & prerelease #
|
||||
###########################
|
||||
|
||||
#amd64
|
||||
- image_templates:
|
||||
- "ghcr.io/ark-network/arkd:{{ .Tag }}-amd64"
|
||||
# push always either release or prerelease with a docker tag with the semver only
|
||||
skip_push: "false"
|
||||
use: buildx
|
||||
ids:
|
||||
- arkd
|
||||
dockerfile: goreleaser.Dockerfile
|
||||
# GOOS of the built binaries/packages that should be used.
|
||||
goos: linux
|
||||
# GOARCH of the built binaries/packages that should be used.
|
||||
goarch: amd64
|
||||
# Template of the docker build flags.
|
||||
build_flag_templates:
|
||||
- "--platform=linux/amd64"
|
||||
- "--pull"
|
||||
- "--label=org.opencontainers.image.created={{.Date}}"
|
||||
- "--label=org.opencontainers.image.title=arkd"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
- "--build-arg=VERSION={{.Version}}"
|
||||
- "--build-arg=COMMIT={{.Commit}}"
|
||||
- "--build-arg=DATE={{.Date}}"
|
||||
- image_templates:
|
||||
- "ghcr.io/ark-network/arkd:{{ .Tag }}-arm64v8"
|
||||
# push always either release or prerelease with a docker tag with the semver only
|
||||
skip_push: "false"
|
||||
use: buildx
|
||||
ids:
|
||||
- arkd
|
||||
dockerfile: goreleaser.Dockerfile
|
||||
# GOOS of the built binaries/packages that should be used.
|
||||
goos: linux
|
||||
# GOARCH of the built binaries/packages that should be used.
|
||||
goarch: arm64
|
||||
# Template of the docker build flags.
|
||||
build_flag_templates:
|
||||
- "--platform=linux/arm64/v8"
|
||||
- "--pull"
|
||||
- "--label=org.opencontainers.image.created={{.Date}}"
|
||||
- "--label=org.opencontainers.image.title=arkd"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
- "--build-arg=VERSION={{.Version}}"
|
||||
- "--build-arg=COMMIT={{.Commit}}"
|
||||
- "--build-arg=DATE={{.Date}}"
|
||||
|
||||
docker_manifests:
|
||||
- name_template: ghcr.io/ark-network/arkd:{{ .Tag }}
|
||||
image_templates:
|
||||
- ghcr.io/ark-network/arkd:{{ .Tag }}-amd64
|
||||
- ghcr.io/ark-network/arkd:{{ .Tag }}-arm64v8
|
||||
skip_push: "false"
|
||||
|
||||
- name_template: ghcr.io/ark-network/arkd:latest
|
||||
image_templates:
|
||||
- ghcr.io/ark-network/arkd:{{ .Tag }}-amd64
|
||||
- ghcr.io/ark-network/arkd:{{ .Tag }}-arm64v8
|
||||
skip_push: auto
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
FROM debian:buster-slim
|
||||
|
||||
ARG TARGETPLATFORM
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN set -ex \
|
||||
&& if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then export TARGETPLATFORM=amd64; fi \
|
||||
&& if [ "${TARGETPLATFORM}" = "linux/arm64" ]; then export TARGETPLATFORM=arm64; fi \
|
||||
&& mv "arkd-linux-$TARGETPLATFORM" /usr/local/bin/arkd
|
||||
|
||||
|
||||
# $USER name, and data $DIR to be used in the 'final' image
|
||||
ARG USER=ark
|
||||
ARG DIR=/home/ark
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates
|
||||
|
||||
# NOTE: Default GID == UID == 1000
|
||||
RUN adduser --disabled-password \
|
||||
--home "$DIR/" \
|
||||
--gecos "" \
|
||||
"$USER"
|
||||
USER $USER
|
||||
|
||||
# Prevents 'VOLUME $DIR/.arkd/' being created as owned by 'root'
|
||||
RUN mkdir -p "$DIR/.arkd/"
|
||||
|
||||
# Expose volume containing all arkd data
|
||||
VOLUME $DIR/.arkd/
|
||||
|
||||
ENTRYPOINT [ "arkd" ]
|
||||
|
||||
Reference in New Issue
Block a user