From cd04c966862fbdb3b25aacfb5369800c6024ca87 Mon Sep 17 00:00:00 2001 From: Lorenzo Mangani Date: Wed, 8 May 2024 14:11:37 +0200 Subject: [PATCH] Multi-Arch Builder --- .github/workflows/ghcr.yml | 79 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 .github/workflows/ghcr.yml diff --git a/.github/workflows/ghcr.yml b/.github/workflows/ghcr.yml new file mode 100644 index 0000000..b076542 --- /dev/null +++ b/.github/workflows/ghcr.yml @@ -0,0 +1,79 @@ +name: Go CI + Docker CD + +on: + push: + branches: [ master, main ] + paths-ignore: + - '**.md' + release: + types: [published] + workflow_dispatch: + +env: + REGISTRY: ghcr.io + +jobs: + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.17 + + - name: Libraries + run: sudo apt-get install -y libpcap-dev libluajit-5.1-dev + + - name: LuaJIT + run: git clone https://luajit.org/git/luajit-2.0.git && cd luajit-2.0 && make CCOPT="-static -fPIC" BUILDMODE="static" && sudo make install + + - name: Build + run: make all + + - name: Retrieve version + run: | + echo "HEPLIFY_VERSION=$(cat config/config.go | sed -n 's/^.*heplify-server \([0-9.]*\).*/\1/p')" >> $GITHUB_OUTPUT + echo "${{ env.HEPLIFY_VERSION }}" + id: version + + + docker-push: + if: github.event_name != 'pull_request' + runs-on: ubuntu-latest + needs: build + permissions: + packages: write + contents: read + + steps: + - uses: actions/checkout@v3 + - name: Set up Docker QEMU + uses: docker/setup-qemu-action@v3.0.0 + with: + platforms: amd64, arm64 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3.0.0 + + - name: Log in to the Container registry + uses: docker/login-action@v2.1.0 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push to GHCR + uses: docker/build-push-action@v5.0.0 + with: + platforms: linux/amd64, linux/arm64 + file: ./docker/Dockerfile + push: true + tags: | + ghcr.io/sipcapture/heplify-server:latest + ghcr.io/sipcapture/heplify-server:${{ env.HEPLIFY_VERSION }} + labels: | + dev.heplify-server.image.title=heplify-server + dev.heplify-server.image.version=${{ env.HEPLIFY_VERSION }}