aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Spooren <mail@aparcar.org>2022-08-08 23:37:54 +0200
committerJosef Schlehofer <pepe.schlehofer@gmail.com>2022-12-04 16:27:00 +0100
commitec55b1217a14a32c99f5209b625c32df0e40970f (patch)
tree53f4e9b7470948869408f5d282b9b2cf79bb7929
parent6f9067e9d472c7cbda4acb16da88313450302de8 (diff)
downloadupstream-ec55b1217a14a32c99f5209b625c32df0e40970f.tar.gz
upstream-ec55b1217a14a32c99f5209b625c32df0e40970f.tar.bz2
upstream-ec55b1217a14a32c99f5209b625c32df0e40970f.zip
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@aparcar.org> Co-Developed-by: Christian Marangi <ansuelsmth@gmail.com> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> (cherry picked from commit 25b65f548dfd93cae87781276bfff9a27cd3ebd4)
-rw-r--r--.github/workflows/Dockerfile.tools3
-rw-r--r--.github/workflows/tools.yml64
2 files changed, 67 insertions, 0 deletions
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