Skip to content

Commit

Permalink
ci: change to use GitHub actions
Browse files Browse the repository at this point in the history
Signed-off-by: PoAn Yang <[email protected]>
(cherry picked from commit 8df21c2)
  • Loading branch information
FrankYang0529 authored and innobead committed Jun 17, 2024
1 parent 9724096 commit eeca155
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 28 deletions.
92 changes: 92 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: build
on:
push:
branches:
- master
- v*
tags:
- v*
pull_request:
jobs:
build:
name: Build binaries
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

# Build binaries
- name: Run ci
run: make ci

- uses: codecov/codecov-action@v4
with:
files: ./coverage.out
flags: unittests
token: ${{ secrets.CODECOV_TOKEN }}

- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: binaries_artifact
path: ./bin/*

build_push_image:
name: Build and push image
runs-on: ubuntu-latest
needs: build
if: ${{ startsWith(github.ref, 'refs/heads/') || startsWith(github.ref, 'refs/tags/') }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Download binaries
uses: actions/download-artifact@v4
with:
name: binaries_artifact
path: ./bin/

- name: Add executable permission
run: |
chmod +x ./bin/*
- name: Copy bin folder to package
run: |
cp -r ./bin ./package/
# For multi-platform support
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Declare branch
run: |
echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> "$GITHUB_ENV"
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

# longhornio/backing-image-manager image
- name: docker-publish
if: ${{ startsWith(github.ref, 'refs/heads/') }}
uses: docker/build-push-action@v5
with:
context: ./
push: true
platforms: linux/amd64,linux/arm64
tags: longhornio/backing-image-manager:${{ env.branch }}-head
file: package/Dockerfile

- name: docker-publish-with-tag
if: ${{ startsWith(github.ref, 'refs/tags/') }}
uses: docker/build-push-action@v5
with:
context: ./
push: true
platforms: linux/amd64,linux/arm64
tags: longhornio/backing-image-manager:${{ github.ref_name }}
file: package/Dockerfile
5 changes: 5 additions & 0 deletions Dockerfile.dapper
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ ENV GOLANG_ARCH_amd64=amd64 GOLANG_ARCH_arm64=arm64 GOLANG_ARCH_s390x=s390x GOLA
RUN wget -O - https://storage.googleapis.com/golang/go1.21.3.linux-${!GOLANG_ARCH}.tar.gz | tar -xzf - -C /usr/local
RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.55.2

# The docker version in dapper is too old to have buildx. Install it manually.
RUN wget https://github.com/docker/buildx/releases/download/v0.13.1/buildx-v0.13.1.linux-${ARCH} && \
chmod +x buildx-v0.13.1.linux-${ARCH} && \
mv buildx-v0.13.1.linux-${ARCH} /usr/local/bin/buildx

VOLUME /tmp
ENV TMPDIR /tmp
ENTRYPOINT ["./scripts/entry"]
Expand Down
18 changes: 13 additions & 5 deletions package/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
FROM registry.suse.com/bci/bci-base:15.5
# syntax=docker/dockerfile:1.7.1

ARG ARCH=amd64
FROM registry.suse.com/bci/bci-base:15.6

ARG TARGETPLATFORM
RUN if [ "$TARGETPLATFORM" != "linux/amd64" ] && [ "$TARGETPLATFORM" != "linux/arm64" ]; then \
echo "Error: Unsupported TARGETPLATFORM: $TARGETPLATFORM" && \
exit 1; \
fi

ENV ARCH ${TARGETPLATFORM#linux/}

RUN zypper -n addrepo --refresh https://download.opensuse.org/repositories/system:/snappy/SLE_15/system:snappy.repo && \
zypper -n addrepo --refresh https://download.opensuse.org/repositories/network:/utilities/SLE_15_SP5/network:utilities.repo && \
zypper --gpg-auto-import-keys ref

RUN zypper -n install kmod curl wget nfs-client nfs4-acl-tools fuse \
librdmacm1 librdmacm-utils libibverbs perl-Config-General libaio-devel sg3_utils \
iputils telnet iperf qemu-tools iproute2 e2fsprogs e2fsprogs-devel xfsprogs xfsprogs-devel
librdmacm1 librdmacm-utils libibverbs perl-Config-General libaio-devel sg3_utils \
iputils telnet iperf qemu-tools iproute2 e2fsprogs e2fsprogs-devel xfsprogs xfsprogs-devel

COPY bin/backing-image-manager /usr/local/bin/
COPY package/bin/backing-image-manager-${ARCH} /usr/local/bin/backing-image-manager

VOLUME /usr/local/bin

Expand Down
18 changes: 11 additions & 7 deletions scripts/build
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
#!/bin/bash
set -e
set -ex

source $(dirname $0)/version

LINKFLAGS="-X main.Version=$VERSION
-X main.GitCommit=$GITCOMMIT
-X main.BuildDate=$BUILDDATE"
[ "$(uname)" != "Darwin" ] && OTHER_LINKFLAGS="-extldflags -static"

cd $(dirname $0)/..

mkdir -p bin
go build -ldflags \
"-X main.Version=$VERSION \
-X main.GitCommit=$GITCOMMIT \
-X main.BuildDate=$BUILDDATE \
-linkmode external -extldflags -static" \
-o bin/backing-image-manager

archs=("amd64" "arm64")
for arch in "${archs[@]}"; do
CGO_ENABLED=0 GOARCH="$arch" go build -o "bin/backing-image-manager-$arch" -ldflags "$LINKFLAGS $OTHER_LINKFLAGS"
done
19 changes: 3 additions & 16 deletions scripts/package
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,18 @@ cd $(dirname $0)/..

PROJECT=`basename "$PWD"`

case $(uname -m) in
aarch64 | arm64)
ARCH=arm64
;;
x86_64)
ARCH=amd64
;;
s390x)
ARCH=s390x
;;
*)
echo "$(uname -a): unsupported architecture"
exit 1
esac

if [ ! -x ./bin/longhorn ]; then
./scripts/build
fi

cp -r bin package/

APIVERSION=`./bin/backing-image-manager version --client-only|jq ".clientVersion.backingImageManagerAPIVersion"`
TAG="v${APIVERSION}_`date -u +%Y%m%d`"
REPO=${REPO:-longhornio}
IMAGE=${REPO}/${PROJECT}:${TAG}

docker build --build-arg ARCH=${ARCH} --no-cache -t ${IMAGE} -f package/Dockerfile .
buildx build --load --no-cache -t ${IMAGE} -f package/Dockerfile .

echo Built ${IMAGE}

Expand Down

0 comments on commit eeca155

Please sign in to comment.