Skip to content

Commit

Permalink
release and dockerfile
Browse files Browse the repository at this point in the history
  • Loading branch information
storybehind committed Aug 17, 2024
1 parent 1b21090 commit 42b1c7c
Show file tree
Hide file tree
Showing 2 changed files with 131 additions and 15 deletions.
118 changes: 105 additions & 13 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,25 @@ env:
GO_VERSION: 1.21

jobs:
create_release:
runs-on: ubuntu-latest
outputs:
release_id: ${{ steps.create_release.outputs.id }}
steps:
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.event.inputs.tag }}
release_name: ${{ github.event.inputs.tag }}
draft: ${{ github.event.inputs.draft }}
prerelease: false

linux:
runs-on: ubuntu-latest
needs: create_release
env:
SRC_DIR: ${{ github.workspace }}/src
OUTPUT_DIR: ${{ github.workspace }}/output
Expand Down Expand Up @@ -102,24 +119,13 @@ jobs:
with:
name: ${{ env.APP_NAME }}-linux-arm64
path: ${{ env.OUTPUT_DIR }}/${{ env.APP_NAME }}-linux-arm64.zip

- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.event.inputs.tag }}
release_name: ${{ github.event.inputs.tag }}
draft: ${{ github.event.inputs.draft }}
prerelease: false

- name: Upload Release Asset for Linux/amd64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
upload_url: ${{ needs.create_release.outputs.release_id }}
asset_path: ${{ env.OUTPUT_DIR }}/${{ env.APP_NAME }}-linux-amd64.zip
asset_name: ${{ env.APP_NAME }}-linux-amd64.zip
asset_content_type: application/zip
Expand All @@ -129,7 +135,93 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
upload_url: ${{ needs.create_release.outputs.release_id }}
asset_path: ${{ env.OUTPUT_DIR }}/${{ env.APP_NAME }}-linux-arm64.zip
asset_name: ${{ env.APP_NAME }}-linux-arm64.zip
asset_content_type: application/zip

darwin:
runs-on: ubuntu-latest
needs: create_release
env:
SRC_DIR: ${{ github.workspace }}/src
OUTPUT_DIR: ${{ github.workspace }}/output
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
path: ${{ env.SRC_DIR }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: linux/amd64,linux/arm64

- name: Install zip
uses: montudor/action-zip@v1

- name: Setup
run : |
mkdir -p ${{ env.OUTPUT_DIR }}/amd64
mkdir -p ${{ env.OUTPUT_DIR }}/arm64
- name: Build Docker image
run: |
docker buildx create --use
docker buildx build \
--platform linux/amd64 \
--build-arg VERSION=${{ env.VERSION }} \
--tag ${{ env.APP_NAME }} \
--load \
--output type=docker,dest=${{ env.OUTPUT_DIR }}/${{ env.APP_NAME }}.tar \
-f ${{ env.SRC_DIR }}/scripts/darwin/Dockerfile.build ${{ env.SRC_DIR }}
- name: Load image & Extract binary from container
run: |
docker load -i ${{ env.OUTPUT_DIR }}/${{ env.APP_NAME }}.tar
CONTAINER_ID=$(docker create ${{ env.APP_NAME }})
docker cp ${CONTAINER_ID}:/go/bin/zboxcli-darwin-amd64 ${{ env.OUTPUT_DIR }}/amd64/${{ env.APP_NAME }}
docker cp ${CONTAINER_ID}:/go/bin/zboxcli-darwin-arm64 ${{ env.OUTPUT_DIR }}/arm64/${{ env.APP_NAME }}
docker rm ${CONTAINER_ID}
- name: Create Zip File for darwin/amd64
run: |
cd ${{ env.OUTPUT_DIR }}/amd64
zip -qq -r ${{ env.APP_NAME }}-darwin-amd64.zip ${{ env.APP_NAME }}
- name: Upload Zip for Darwin/amd64
uses: actions/upload-artifact@v3
with:
name: ${{ env.APP_NAME }}-darwin-amd64
path: ${{ env.OUTPUT_DIR }}/amd64/${{ env.APP_NAME }}-darwin-amd64.zip

- name: Create Zip File for darwin/arm64
run: |
cd ${{ env.OUTPUT_DIR }}/arm64
zip -qq -r ${{ env.APP_NAME }}-darwin-arm64.zip ${{ env.APP_NAME }}
- name: Upload Zip for Darwin/arm64
uses: actions/upload-artifact@v3
with:
name: ${{ env.APP_NAME }}-darwin-arm64
path: ${{ env.OUTPUT_DIR }}/arm64/${{ env.APP_NAME }}-darwin-arm64.zip

- name: Upload Release Asset for Linux/amd64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.release_id }}
asset_path: ${{ env.OUTPUT_DIR }}/amd64/${{ env.APP_NAME }}-darwin-amd64.zip
asset_name: ${{ env.APP_NAME }}-darwin-amd64.zip
asset_content_type: application/zip

- name: Upload Release Asset for Linux/arm64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.release_id }}
asset_path: ${{ env.OUTPUT_DIR }}/arm64/${{ env.APP_NAME }}-darwin-arm64.zip
asset_name: ${{ env.APP_NAME }}-darwin-arm64.zip
asset_content_type: application/zip
28 changes: 26 additions & 2 deletions scripts/darwin/Dockerfile.build
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,35 @@
FROM ubuntu:latest

# setup osxcross
RUN apt-get update && apt-get install -y clang cmake git patch python-is-python3 libssl-dev lzma-dev libxml2-dev xz-utils bzip2 cpio libbz2-dev zlib1g-dev
RUN apt-get update && apt-get install -y clang cmake git patch python-is-python3 libssl-dev lzma-dev libxml2-dev xz-utils bzip2 cpio libbz2-dev zlib1g-dev wget libc6-dev
RUN git clone https://github.com/tpoechtrager/osxcross.git
WORKDIR /osxcross/tarballs
RUN wget https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.3.sdk.tar.xz
WORKDIR /osxcross
ENV CC=clang
ENV CXX=clang++
RUN UNATTENDED=yes OSX_VERSION_MIN=12.0 ./build.sh
RUN UNATTENDED=yes OSX_VERSION_MIN=11.3 ./build.sh

ENV OSXCROSS_ROOT=/osxcross
ENV PATH=$OSXCROSS_ROOT/target/bin:$PATH
ENV GO111MODULE=on
ENV CGO_ENABLED=1

ARG VERSION

# setup Go
ENV GOLANG_VERSION=1.21.12
ENV GOLANG_DOWNLOAD_URL=https://golang.org/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz
RUN wget -q ${GOLANG_DOWNLOAD_URL} -O golang.tar.gz \
&& tar -C /usr/local -xzf golang.tar.gz \
&& rm golang.tar.gz
ENV GOPATH=/go
ENV PATH=$GOPATH/bin:/usr/local/go/bin:$PATH
# Verify Go installation
RUN go version

RUN mkdir -p "$GOPATH/src" "$GOPATH/bin"
WORKDIR $GOPATH/src
COPY . .
RUN CC=o64-clang CXX=o64-clang++ GOOS=darwin GOARCH=amd64 go build -x -v -tags bn256 -ldflags "-X main.VersionStr=${VERSION}" -o $GOPATH/bin/zboxcli-darwin-amd64 .
RUN CC=o64-clang CXX=o64-clang++ GOOS=darwin GOARCH=arm64 go build -x -v -tags bn256 -ldflags "-X main.VersionStr=${VERSION}" -o $GOPATH/bin/zboxcli-darwin-arm64 .

0 comments on commit 42b1c7c

Please sign in to comment.