Skip to content

Build OpenWrt-K

Build OpenWrt-K #1005

Workflow file for this run

# SPDX-FileCopyrightText: Copyright (c) 2024 沉默の金 <cmzj@cmzj.org>
# SPDX-License-Identifier: MIT
name: Build OpenWrt-K
on:
workflow_dispatch:
schedule:
- cron: '0 4 * * *'
push:
paths:
- '.github/**'
- 'files/**'
- 'build_helper/**'
- 'config/**'
- '!.gitignore'
- '!LICENSE'
- '!README.md'
- '!img/**'
permissions:
actions: write
contents: write
discussions: write
env:
GITHUB_TOKEN: ${{ github.token }}
BUILD_HELPER_DEBUG: true
jobs:
prepare:
outputs:
matrix: ${{ steps.run.outputs.matrix }}
runs-on: ubuntu-22.04
name: 规划与准备
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 准备
id: run
working-directory: /opt/OpenWrt-K
run: python3 -m build_helper --task prepare
- name: 上传
uses: ./../../../../../opt/OpenWrt-K/.github/action/upload
base-builds:
runs-on: ubuntu-22.04
needs: prepare
name: 构建工具链与内核(${{ matrix.name }})
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 准备编译
id: prepare
working-directory: /opt/OpenWrt-K
run: python3 -m build_helper --task build-prepare --config ${{ matrix.config }}
- name: 缓存toolchain
uses: actions/cache@v4
id: cache-toolchain
if: ${{ steps.prepare.outputs.use-cache }}
with:
path: |
${{ steps.prepare.outputs.openwrt-path }}/staging_dir/host*
${{ steps.prepare.outputs.openwrt-path }}/staging_dir/tool*
key: ${{ steps.prepare.outputs.toolchain-key }}
- name: 缓存ccache
uses: actions/cache@v4
if: ${{ steps.prepare.outputs.use-cache }}
with:
path: ${{ steps.prepare.outputs.openwrt-path }}/.ccache
key: ${{ steps.prepare.outputs.cache-key }}
restore-keys: |
${{ steps.prepare.outputs.cache-restore-key }}
- name: 编译
id: build
working-directory: /opt/OpenWrt-K
run: python3 -m build_helper --task base-builds --config ${{ matrix.config }}
env:
CACHE_HIT: ${{ steps.cache-toolchain.outputs.cache-hit }}
- name: 上传
if: success() || failure()
uses: ./../../../../../opt/OpenWrt-K/.github/action/upload
build-packages:
runs-on: ubuntu-22.04
needs: [prepare,base-builds]
name: 构建软件包(${{ matrix.name }})
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 准备编译
id: prepare
working-directory: /opt/OpenWrt-K
run: python3 -m build_helper --task build-prepare --config ${{ matrix.config }}
- name: 缓存ccache
uses: actions/cache@v4
if: ${{ steps.prepare.outputs.use-cache }}
with:
path: ${{ steps.prepare.outputs.openwrt-path }}/.ccache
key: ${{ steps.prepare.outputs.cache-key }}
restore-keys: |
${{ steps.prepare.outputs.cache-restore-key }}
- name: 编译
id: build
working-directory: /opt/OpenWrt-K
run: python3 -m build_helper --task build_packages --config ${{ matrix.config }}
- name: 上传
if: success() || failure()
uses: ./../../../../../opt/OpenWrt-K/.github/action/upload
build-ImageBuilder:
runs-on: ubuntu-22.04
needs: [prepare,base-builds]
name: 构建Image Builder与内核模块(${{ matrix.name }})
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 准备编译
id: prepare
working-directory: /opt/OpenWrt-K
run: python3 -m build_helper --task build-prepare --config ${{ matrix.config }}
- name: 缓存ccache
uses: actions/cache@v4
if: ${{ steps.prepare.outputs.use-cache }}
with:
path: ${{ steps.prepare.outputs.openwrt-path }}/.ccache
key: ${{ steps.prepare.outputs.cache-key }}
restore-keys: |
${{ steps.prepare.outputs.cache-restore-key }}
- name: 编译
id: build
working-directory: /opt/OpenWrt-K
run: python3 -m build_helper --task build_image_builder --config ${{ matrix.config }}
- name: 上传
if: success() || failure()
uses: ./../../../../../opt/OpenWrt-K/.github/action/upload
build-images-releases:
runs-on: ubuntu-22.04
needs: [prepare,base-builds,build-ImageBuilder,build-packages]
name: 构建镜像并发布(${{ matrix.name }})
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 准备构建
id: prepare
working-directory: /opt/OpenWrt-K
run: python3 -m build_helper --task build-prepare --config ${{ matrix.config }}
- name: 构建
id: build
working-directory: /opt/OpenWrt-K
run: python3 -m build_helper --task build_images_releases --config ${{ matrix.config }}
- name: 上传
if: success() || failure()
uses: ./../../../../../opt/OpenWrt-K/.github/action/upload