mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
fccf42cb05
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
)
195 lines
5.4 KiB
YAML
195 lines
5.4 KiB
YAML
name: Build host tools
|
|
|
|
on:
|
|
pull_request:
|
|
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:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: openwrt
|
|
|
|
- name: Setup MacOS
|
|
run: |
|
|
echo "WORKPATH=/Volumes/OpenWrt" >> "$GITHUB_ENV"
|
|
hdiutil create -size 20g -type SPARSE -fs "Case-sensitive HFS+" -volname OpenWrt OpenWrt.sparseimage
|
|
hdiutil attach OpenWrt.sparseimage
|
|
mv "$GITHUB_WORKSPACE/openwrt" /Volumes/OpenWrt/
|
|
|
|
- name: Install required prereq on MacOS
|
|
working-directory: ${{ env.WORKPATH }}/openwrt
|
|
run: |
|
|
brew install \
|
|
autoconf \
|
|
automake \
|
|
coreutils \
|
|
diffutils \
|
|
findutils \
|
|
gawk \
|
|
gettext \
|
|
git-extras \
|
|
gmp \
|
|
gnu-getopt \
|
|
gnu-sed \
|
|
gnu-tar \
|
|
grep \
|
|
libidn2 \
|
|
libunistring \
|
|
m4 \
|
|
make \
|
|
mpfr \
|
|
ncurses \
|
|
openssl@1.1 \
|
|
pcre \
|
|
pkg-config \
|
|
quilt \
|
|
readline \
|
|
wget \
|
|
zstd
|
|
|
|
echo "/bin" >> "$GITHUB_PATH"
|
|
echo "/sbin/Library/Apple/usr/bin" >> "$GITHUB_PATH"
|
|
echo "/usr/bin" >> "$GITHUB_PATH"
|
|
echo "/usr/local/bin" >> "$GITHUB_PATH"
|
|
echo "/usr/local/opt/coreutils/bin" >> "$GITHUB_PATH"
|
|
echo "/usr/local/opt/findutils/libexec/gnubin" >> "$GITHUB_PATH"
|
|
echo "/usr/local/opt/gettext/bin" >> "$GITHUB_PATH"
|
|
echo "/usr/local/opt/gnu-getopt/bin" >> "$GITHUB_PATH"
|
|
echo "/usr/local/opt/make/libexec/gnubin" >> "$GITHUB_PATH"
|
|
echo "/usr/local/opt/make/libexec/gnubin" >> "$GITHUB_PATH"
|
|
echo "/usr/sbin" >> "$GITHUB_PATH"
|
|
|
|
- name: Make prereq
|
|
working-directory: ${{ env.WORKPATH }}/openwrt
|
|
run: make defconfig
|
|
|
|
- name: Build tools MacOS
|
|
working-directory: ${{ env.WORKPATH }}/openwrt
|
|
run: make tools/install -j$(nproc) BUILD_LOG=1 || ret=$? .github/workflows/scripts/show_build_failures.sh
|
|
|
|
- name: Upload logs
|
|
if: always()
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: macos-latest-logs
|
|
path: ${{ env.WORKPATH }}/openwrt/logs
|
|
|
|
- name: Upload config
|
|
if: always()
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: macos-latest-config
|
|
path: ${{ env.WORKPATH }}/openwrt/.config
|
|
|
|
build-linux-buildbot:
|
|
runs-on: ubuntu-latest
|
|
container: registry.gitlab.com/openwrt/buildbot/buildworker-3.4.1
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: 'openwrt'
|
|
|
|
- name: Fix permission
|
|
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
|
|
run: make defconfig
|
|
|
|
- name: Build tools BuildBot Container
|
|
shell: su buildbot -c "sh -e {0}"
|
|
working-directory: openwrt
|
|
run: make tools/install -j$(nproc) BUILD_LOG=1 || ret=$? .github/workflows/scripts/show_build_failures.sh
|
|
|
|
- name: Upload logs
|
|
if: always()
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: linux-buildbot-logs
|
|
path: openwrt/logs
|
|
|
|
- name: Upload config
|
|
if: always()
|
|
uses: actions/upload-artifact@v2
|
|
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
|