[openwrt/openwrt] CI: create Docker container containing compiled tools

LEDE Commits lede-commits at lists.infradead.org
Fri Sep 30 13:27:01 PDT 2022


ansuel pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/25b65f548dfd93cae87781276bfff9a27cd3ebd4

commit 25b65f548dfd93cae87781276bfff9a27cd3ebd4
Author: Paul Spooren <mail at aparcar.org>
AuthorDate: Mon Aug 8 23:37:54 2022 +0200

    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 <mail at aparcar.org>
    Co-Developed-by: Christian Marangi <ansuelsmth at gmail.com>
    Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
---
 .github/workflows/Dockerfile.tools |  3 ++
 .github/workflows/tools.yml        | 64 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 67 insertions(+)

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 at 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 at v2
+        with:
+          path: 'openwrt'
+
+      - name: Download prebuilt tools from build job
+        uses: actions/download-artifact at v2
+        with:
+          name: linux-buildbot-prebuilt-tools
+          path: openwrt
+
+      - name: Login to GitHub Container Registry
+        uses: docker/login-action at v2
+        with:
+          registry: ghcr.io
+          username: ${{ github.actor }}
+          password: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: Build and push
+        uses: docker/build-push-action at v3
+        with:
+          context: openwrt
+          push: true
+          tags: ghcr.io/${{ github.repository_owner }}/tools:latest
+          file: openwrt/.github/workflows/Dockerfile.tools




More information about the lede-commits mailing list