From 25b65f548dfd93cae87781276bfff9a27cd3ebd4 Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Mon, 8 Aug 2022 23:37:54 +0200 Subject: [PATCH] CI: create Docker container containing compiled tools Currently each Kernel compilation takes about 30 minutes of which 20 minutes are used to compile our tools. While the toolchain is downloaded and instantly ready the tools are missing. This commit starts uploading a Docker container including compiled tools which are ready to use. It is automatically updated whenever any tools are changed. Signed-off-by: Paul Spooren Co-Developed-by: Christian Marangi Signed-off-by: Christian Marangi --- .github/workflows/Dockerfile.tools | 3 ++ .github/workflows/tools.yml | 64 ++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 .github/workflows/Dockerfile.tools diff --git a/.github/workflows/Dockerfile.tools b/.github/workflows/Dockerfile.tools new file mode 100644 index 0000000000..c2ae7dc896 --- /dev/null +++ b/.github/workflows/Dockerfile.tools @@ -0,0 +1,3 @@ +FROM registry.gitlab.com/openwrt/buildbot/buildworker-3.4.1 + +COPY --chown=buildbot:buildbot tools.tar /tools.tar diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 52999758cf..54b7a01fe5 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -5,12 +5,17 @@ on: paths: - 'tools/**' - '.github/workflows/tools.yml' + push: + paths: + - 'tools/**' + - '.github/workflows/tools.yml' permissions: contents: read jobs: build-macos-latest: + if: github.event_name != 'push' runs-on: macos-latest steps: @@ -105,6 +110,15 @@ jobs: run: | chown -R buildbot:buildbot openwrt + - name: Set AUTOREMOVE config for tools container + if: github.event_name == 'push' + shell: su buildbot -c "sh -e {0}" + working-directory: openwrt + run: | + touch .config + echo CONFIG_DEVEL=y >> .config + echo CONFIG_AUTOREMOVE=y >> .config + - name: Make prereq shell: su buildbot -c "sh -e {0}" working-directory: openwrt @@ -128,3 +142,53 @@ jobs: with: name: linux-buildbot-config path: openwrt/.config + + - name: Archive prebuilt tools + if: github.event_name == 'push' + shell: su buildbot -c "sh -e {0}" + working-directory: openwrt + run: tar --mtime=now -cf tools.tar staging_dir/host build_dir/host dl + + - name: Upload prebuilt tools + if: github.event_name == 'push' + uses: actions/upload-artifact@v2 + with: + name: linux-buildbot-prebuilt-tools + path: openwrt/tools.tar + retention-days: 1 + + push-tools-container: + needs: build-linux-buildbot + runs-on: ubuntu-latest + if: github.event_name == 'push' + + permissions: + contents: read + packages: write + + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + path: 'openwrt' + + - name: Download prebuilt tools from build job + uses: actions/download-artifact@v2 + with: + name: linux-buildbot-prebuilt-tools + path: openwrt + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: openwrt + push: true + tags: ghcr.io/${{ github.repository_owner }}/tools:latest + file: openwrt/.github/workflows/Dockerfile.tools