Skip to content

Commit

Permalink
Create GH release (#3)
Browse files Browse the repository at this point in the history
* debug ci
* update docker img tag
  • Loading branch information
haobibo authored Sep 14, 2024
1 parent 859b018 commit e02cdc1
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 37 deletions.
73 changes: 55 additions & 18 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
name: CI
name: Build Go

on:
push:
branches: [ main ]
paths-ignore:
- "*.md"
tags: [ "v*" ]

pull_request:
branches: [ main ]
paths-ignore:
- "*.md"
branches: [ "main" ]
paths-ignore: [ "*.md" ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
workflow_dispatch: # Allows you to run this workflow manually from the Actions tab

env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -30,28 +27,68 @@ jobs:
build_docker_image:
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.22
- uses: actions/checkout@v4

- name: Build Docker
run: |
source ./tool.sh && build_image supervisord latest src/supervisord.Dockerfile && push_image
source ./tool.sh
VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX};
build_image_no_tag supervisord "ubuntu-${VER}" src/supervisord.Dockerfile --build-arg "BASE_NAMESPACE=library" --build-arg "BUILD_IMG=golang:alpine" --build-arg "BASE_IMG=alpine"
build_image_no_tag supervisord "alpine-${VER}" src/supervisord.Dockerfile --build-arg "BASE_NAMESPACE=qpod" --build-arg "BUILD_IMG=go:latest" --build-arg "BASE_IMG=ubuntu"
docker tag "${IMG_PREFIX}/supervisord:ubuntu-${VER}" "${IMG_PREFIX}/supervisord:latest" ;
push_image supervisord
build_binary:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.22
- name: Build Binary
run: |
set -eux
pwd && ls -alh *
mkdir -pv build && mv src/etc src/webgui ./build/
cd src/supervisord
go mod tidy
go test -v
go mod tidy && go test -v
go build -v -o ../../build/
cd ../../
mv src/etc src/webgui ./build/
cd ../../
ls -alh build
build_goreleaser:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.22

- name: Install cross-compiler for linux/arm64, UPX
env:
VER_UPX: "4.2.4"
run: |
sudo apt-get update -q && sudo apt-get -y install gcc-aarch64-linux-gnu ;
URL_UPX="https://github.com/upx/upx/releases/download/v${VER_UPX}/upx-${VER_UPX}-amd64_linux.tar.xz" ;
echo "Installing upx ${VER_UPX} from: ${URL_UPX}" ;
curl -o /tmp/TMP.txz -sL $URL_UPX && tar -C /opt/ -xJf /tmp/TMP.txz && rm /tmp/TMP.txz ;
ln -sf /opt/upx-${VER_UPX}-amd64_linux /opt/upx
export PATH="/opt/upx/:${PATH}"
upx --version | grep -E '^upx'
cd src/supervisord && go mod tidy -e
- if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
# if not on a `tags/v*` git push, add `--snapshot` to flags
run: echo "flags=--snapshot" >> $GITHUB_ENV

- uses: goreleaser/goreleaser-action@v6
env:
GITHUB_TOKEN: ${{ secrets.GA_TOKEN }}
with:
distribution: goreleaser
version: latest
args: release --verbose --clean ${{ env.flags }}
workdir: src/supervisord
4 changes: 1 addition & 3 deletions .github/.goreleaser.yml → src/.goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ env:

before:
hooks:
- go mod tidy
- go mod tidy -e

builds:
- id: dynamic
Expand Down Expand Up @@ -46,7 +46,6 @@ builds:
goarch: amd64
env:
- CC=gcc

- goos: linux
goarch: arm64
env:
Expand All @@ -56,7 +55,6 @@ builds:
- cmd: upx "{{ .Path }}"

archives:

- id: archive_multi
builds: [dynamic]
name_template: >-
Expand Down
28 changes: 22 additions & 6 deletions src/supervisord.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,24 @@
FROM golang:alpine AS base
RUN apk add --no-cache --update git gcc rust
# Distributed under the terms of the Modified BSD License.

ARG BASE_NAMESPACE
ARG BUILD_IMG="golang:latest"
ARG BASE_IMG="ubuntu:latest"

FROM base AS builder
COPY . /tmp/src
WORKDIR /tmp/src
FROM ${BASE_NAMESPACE:+$BASE_NAMESPACE/}${BUILD_IMG} AS builder

RUN if command -v apt-get >/dev/null 2>&1; then \
echo "Detected Debian/Ubuntu environment. Installing packages using apt-get..." ; \
apt-get update && apt-get install -y gcc ; \
elif command -v apk >/dev/null 2>&1; then \
echo "Detected Alpine environment. Installing packages using apk..." ; \
apk add --no-cache gcc musl-dev ; \
else \
echo "Unsupported environment. Neither apt-get nor apk found." ; \
return 1 ; \
fi

COPY ./src /tmp/src
WORKDIR /tmp/src
RUN set -eux && pwd && ls -alh \
&& mkdir -pv /opt/supervisord && mv webgui etc /opt/supervisord/ \
&& cd supervisord \
Expand All @@ -13,7 +27,9 @@ RUN set -eux && pwd && ls -alh \
&& /opt/supervisord/supervisord version


FROM busybox
ARG BASE_IMG="atom"
FROM ${BASE_IMG}
LABEL maintainer="[email protected]"
COPY --from=builder /opt/supervisord /opt/supervisord
EXPOSE 9001
WORKDIR /opt/supervisord/
Expand Down
20 changes: 10 additions & 10 deletions tool.sh
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
#!/bin/bash
set -xu

CI_PROJECT_NAME=${GITHUB_REPOSITORY:-"QPod/lab-dev"}
CI_PROJECT_NAME=${CI_PROJECT_NAME:-$GITHUB_REPOSITORY}
CI_PROJECT_BRANCH=${GITHUB_HEAD_REF:-"main"}
CI_PROJECT_SPACE=$(echo "${CI_PROJECT_BRANCH}" | cut -f1 -d'/')

if [ "${CI_PROJECT_BRANCH}" = "main" ] ; then
# If on the main branch, docker images namespace will be same as CI_PROJECT_NAME's name space
export CI_PROJECT_NAMESPACE="$(dirname ${CI_PROJECT_NAME})" ;
else
# not main branch, docker namespace = {CI_PROJECT_NAME's name space} + "0" + {1st substr before / in CI_PROJECT_SPACE}
# not main branch, docker namespace = {CI_PROJECT_NAME's name space} + "-" + {1st substr before / in CI_PROJECT_SPACE}
export CI_PROJECT_NAMESPACE="$(dirname ${CI_PROJECT_NAME})0${CI_PROJECT_SPACE}" ;
fi

export SRC_NAMESPACE="${REGISTRY_SRC:-docker.io}"
export IMG_NAMESPACE=$(echo "${CI_PROJECT_NAMESPACE}" | awk '{print tolower($0)}')
export IMG_PREFIX=$(echo "${REGISTRY_URL:-"docker.io"}/${IMG_NAMESPACE}" | awk '{print tolower($0)}')
export TAG_SUFFIX="-$(git rev-parse --short HEAD)"

echo "--------> CI_PROJECT_NAMESPACE=${CI_PROJECT_NAMESPACE}"
echo "--------> CI_PROJECT_NAMESPACE=${CI_PROJECT_NAMESPACE}" # use different namespace for dev/prd
echo "--------> DOCKER_IMG_NAMESPACE=${IMG_NAMESPACE}"
echo "--------> DOCKER_IMG_PREFIX=${IMG_PREFIX}"
echo "--------> DOCKER_TAG_SUFFIX=${TAG_SUFFIX}"
Expand All @@ -31,21 +32,21 @@ docker info

build_image() {
echo "$@" ;
IMG=$1; TAG=$2; FILE=$3; shift 3; VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX}; WORKDIR="$(dirname $FILE)";
docker build --compress --force-rm=true -t "${IMG_PREFIX}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX}" "$@" "${WORKDIR}" ;
IMG=$1; TAG=$2; FILE=$3; shift 3; VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX}; WORKDIR="$(pwd)";
docker build --compress --force-rm=true -t "${IMG_PREFIX}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${SRC_NAMESPACE}" "$@" "${WORKDIR}" ;
docker tag "${IMG_PREFIX}/${IMG}:${TAG}" "${IMG_PREFIX}/${IMG}:${VER}" ;
}

build_image_no_tag() {
echo "$@" ;
IMG=$1; TAG=$2; FILE=$3; shift 3; WORKDIR="$(dirname $FILE)";
docker build --compress --force-rm=true -t "${IMG_PREFIX}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX}" "$@" "${WORKDIR}" ;
IMG=$1; TAG=$2; FILE=$3; shift 3; WORKDIR="$(pwd)";
docker build --compress --force-rm=true -t "${IMG_PREFIX}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${SRC_NAMESPACE}" "$@" "${WORKDIR}" ;
}

build_image_common() {
echo "$@" ;
IMG=$1; TAG=$2; FILE=$3; shift 3; VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX}; WORKDIR="$(dirname $FILE)";
docker build --compress --force-rm=true -t "${IMG_PREFIX}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${IMG_PREFIX}" "$@" "${WORKDIR}" ;
IMG=$1; TAG=$2; FILE=$3; shift 3; VER=$(date +%Y.%m%d.%H%M)${TAG_SUFFIX}; WORKDIR="$(pwd)";
docker build --compress --force-rm=true -t "${IMG_PREFIX}/${IMG}:${TAG}" -f "$FILE" --build-arg "BASE_NAMESPACE=${SRC_NAMESPACE}" "$@" "${WORKDIR}" ;
docker tag "${IMG_PREFIX}/${IMG}:${TAG}" "${IMG_PREFIX}/${IMG}:${VER}" ;
}

Expand Down Expand Up @@ -88,6 +89,5 @@ remove_folder() {
free_diskspace() {
remove_folder /usr/share/dotnet
remove_folder /usr/local/lib/android
# remove_folder /var/lib/docker
df -h
}

0 comments on commit e02cdc1

Please sign in to comment.