Explorar o código

ci(cross-build-package): docker build with cache

William Yang %!s(int64=4) %!d(string=hai) anos
pai
achega
5312aa4a93
Modificáronse 1 ficheiros con 29 adicións e 1 borrados
  1. 29 1
      .github/workflows/build_packages.yaml

+ 29 - 1
.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: |