From 717872e41b545800feed24e9f070594c1c996c0f Mon Sep 17 00:00:00 2001 From: Aye Min Aung Date: Wed, 26 Jul 2023 14:42:28 +0700 Subject: [PATCH] build image and push to docker on merge --- .github/workflows/build.yml | 73 +++++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 1 - Dockerfile | 13 +++++++ 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build.yml create mode 100644 Dockerfile diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..85163eb --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,73 @@ +name: Build + +on: + push: + branches: + - "master" + - "min/build-image" + workflow_call: + secrets: + # Secrets used to build + DOCKERHUB_USERNAME: + required: true + DOCKERHUB_TOKEN: + required: true + GH_BOT_DEPLOY_KEY: + required: true + +jobs: + hash: + runs-on: ubuntu-latest + outputs: + HASH: ${{ steps.hash.outputs.short }} + steps: + - id: hash + uses: pr-mpt/actions-commit-hash@v2 + with: + # NOTE: since this workflow is only triggered by `push` event + # github.sha have correct commit sha + commit: ${{ github.sha }} + stack_image: + runs-on: ubuntu-latest + outputs: + LIBS10: ${{ steps.image.outputs.IMAGE_LIBS10 }} + LIBS11: ${{ steps.image.outputs.IMAGE_LIBS11 }} + steps: + - uses: actions/checkout@v3 + with: + repo: signalwire/libks + ref: master + path: /__w/signalwire-c/signalwire-c/libks + - run: | + cd /__w/signalwire-c/signalwire-c/libks + export LIBKS_SHA=$(git rev-parse --short HEAD); + export IMAGE_LIBS10="signalwire/freeswitch-libs:libks-libs10-$LIBKS_SHA" + export IMAGE_LIBS11="signalwire/freeswitch-libs:libks-libs11-$LIBKS_SHA" + echo "IMAGE_LIBS10=$IMAGE_LIBS10" >> $GITHUB_OUTPUT + echo "IMAGE_LIBS11=$IMAGE_LIBS11" >> $GITHUB_OUTPUT + id: image + build: + needs: [hash,stack_image] + strategy: + matrix: + include: + - tag: signalwire-c-libs10-${{ needs.hash.outputs.HASH }} + baseimage: signalwire/freeswitch-base:debian-10 + libks_image: ${{ needs.stack_image.outputs.LIBS10 }} + - tag: libks-libs11-${{ needs.hash.outputs.HASH }} + baseimage: signalwire/freeswitch-base:debian-11 + libks_image: ${{ needs.stack_image.outputs.LIBS11 }} + name: "build signalwire-c" + uses: signalwire/actions-template/.github/workflows/ci-build.yml@main + with: + CONTAINER_SCAN: true + CONTAINER_TEST: false + PROJECT_NAME: "freeswitch-libs" + FILE: ./Dockerfile + PUSH: true + RUNNER: ubuntu-latest + TAG: ${{ matrix.tag }} + BUILD_ARGS: | + BASEIMAGE=${{ matrix.baseimage }} + LIBKS_IMAGE=${{ matrix.libks_image }} + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19e1ada..cb86ed0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,6 @@ jobs: uses: actions/checkout@v3 with: repository: signalwire/libks - ref: v2.0 path: /__w/signalwire-c/signalwire-c/libks - name: build libks run: cd /__w/signalwire-c/signalwire-c/libks && cmake . -DCMAKE_BUILD_TYPE=Release && make && make install && cd .. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..aca0055 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +ARG LIBKS_IMAGE=signalwire/freeswitch-libs:libks-libs10 +ARG BASEIMAGE=signalwire/freeswitch-base:debian-10 +FROM ${LIBKS_IMAGE} as libks +FROM ${BASEIMAGE} + +COPY REVISION /REVISION +COPY --from=libks /usr/lib/libks2.so /usr/lib/libks2.so +COPY --from=libks /usr/lib/libks2.so.2 /usr/lib/libks2.so.2 +COPY --from=libks /usr/lib/pkgconfig/libks2.pc /usr/lib/pkgconfig/libks2.pc +COPY --from=libks /usr/include/libks2 /usr/include/libks2 +COPY src/libs/signalwire-c /sw/src/libs/signalwire-c +WORKDIR /sw/src/libs/signalwire-c +RUN PKG_CONFIG_PATH=/usr/lib/pkgconfig cmake . -DCMAKE_INSTALL_PREFIX=/usr && make install \ No newline at end of file