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 25b65f548d)
This commit is contained in:
Paul Spooren 2022-08-08 23:37:54 +02:00 committed by Christian Marangi
parent 047e68adb1
commit fccf42cb05
No known key found for this signature in database
GPG Key ID: AC001D09ADBFEAD7
2 changed files with 67 additions and 0 deletions

3
.github/workflows/Dockerfile.tools vendored Normal file
View File

@ -0,0 +1,3 @@
FROM registry.gitlab.com/openwrt/buildbot/buildworker-3.4.1
COPY --chown=buildbot:buildbot tools.tar /tools.tar

View File

@ -5,12 +5,17 @@ on:
paths: paths:
- 'tools/**' - 'tools/**'
- '.github/workflows/tools.yml' - '.github/workflows/tools.yml'
push:
paths:
- 'tools/**'
- '.github/workflows/tools.yml'
permissions: permissions:
contents: read contents: read
jobs: jobs:
build-macos-latest: build-macos-latest:
if: github.event_name != 'push'
runs-on: macos-latest runs-on: macos-latest
steps: steps:
@ -105,6 +110,15 @@ jobs:
run: | run: |
chown -R buildbot:buildbot openwrt 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 - name: Make prereq
shell: su buildbot -c "sh -e {0}" shell: su buildbot -c "sh -e {0}"
working-directory: openwrt working-directory: openwrt
@ -128,3 +142,53 @@ jobs:
with: with:
name: linux-buildbot-config name: linux-buildbot-config
path: openwrt/.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