From 5312aa4a9303888faf91bb291db6b3ab514bfa31 Mon Sep 17 00:00:00 2001 From: William Yang Date: Tue, 11 Jan 2022 13:00:43 +0100 Subject: [PATCH] ci(cross-build-package): docker build with cache --- .github/workflows/build_packages.yaml | 30 ++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index 2a4f8d190..cf580f015 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -386,6 +386,9 @@ jobs: # NOTE: for docker, only support latest otp version, not a matrix otp: - 24.1.5-3 # update to latest + arch: + - amd64 + - arm64 steps: - uses: actions/download-artifact@v2 @@ -417,12 +420,37 @@ jobs: with: username: ${{ secrets.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Get deps git refs for cache + id: deps-refs + run: | + cd source + make ensure-rebar3 + sudo cp rebar3 /usr/local/bin/rebar3 + rebar3 get-deps + RocksDBRef=$(erl -noshell -eval '{ok,Raw}=file:consult("rebar.lock"), {_Vsn, Deps}=hd(Raw), {_, {git, _Url, {ref, Ref}},_} = lists:keyfind(<<"rocksdb">>,1, Deps), io:format("~s",[Ref]), init:stop().') + echo "::set-output name=DEP_ROCKSDB_REF::${RocksDBRef}" + QuicerRef=$(erl -noshell -eval '{ok,Raw}=file:consult("rebar.lock"), {_Vsn, Deps}=hd(Raw), {_, {git, _Url, {ref, Ref}},_} = lists:keyfind(<<"quicer">>,1, Deps), io:format("~s",[Ref]), init:stop().') + echo "::set-output name=DEP_QUICER_REF::${QuicerRef}" + make clean-all + + - name: load rocksdb cache + uses: actions/cache@v2 + with: + path: source/_build/default/lib/rocksdb/ + key: alpine3.14-${{ matrix.otp }}-${{ matrix.arch }}-${{ steps.deps-refs.outputs.DEP_ROCKSDB_REF }} + - name: load quicer cache + uses: actions/cache@v2 + with: + path: source/_build/default/lib/quicer/ + key: alpine3.14-${{ matrix.otp }}-${{ matrix.arch }}-${{ steps.deps-refs.outputs.DEP_QUICER_REF }} + - uses: docker/build-push-action@v2 with: push: ${{ github.event_name == 'release' && !github.event.release.prerelease }} pull: true no-cache: true - platforms: linux/amd64,linux/arm64 + platforms: linux/${{ matrix.arch }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: |