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>
This commit is contained in:
parent
ebabdff401
commit
25b65f548d
|
@ -0,0 +1,3 @@
|
|||
FROM registry.gitlab.com/openwrt/buildbot/buildworker-3.4.1
|
||||
|
||||
COPY --chown=buildbot:buildbot tools.tar /tools.tar
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue