Skip to content

update

update #107

# 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/**'
- 'scripts/**'
- '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
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 准备
id: run
run: PYTHONPATH=/opt/OpenWrt-K python3 -m build_helper --task prepare
- name: 上传
uses: ./../../../../../opt/OpenWrt-K/.github/action/upload
base-builds:
runs-on: ubuntu-22.04
needs: prepare
name: base-builds-${{ matrix.name }}
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 准备编译
id: prepare
run: PYTHONPATH=/opt/OpenWrt-K 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
run: PYTHONPATH=/opt/OpenWrt-K 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: build-packages-${{ matrix.name }}
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 准备编译
id: prepare
run: PYTHONPATH=/opt/OpenWrt-K 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
run: PYTHONPATH=/opt/OpenWrt-K 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: build-ImageBuilder-${{ matrix.name }}
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 准备编译
id: prepare
run: PYTHONPATH=/opt/OpenWrt-K 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
run: PYTHONPATH=/opt/OpenWrt-K python3 -m build_helper --task build_image_builder --config ${{ matrix.config }}
- name: 上传
if: success() || failure()
uses: ./../../../../../opt/OpenWrt-K/.github/action/upload
build-images:
runs-on: ubuntu-22.04
needs: [prepare,base-builds,build-ImageBuilder,build-packages]
name: build-Image-${{ matrix.name }}
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 准备构建
id: prepare
run: PYTHONPATH=/opt/OpenWrt-K python3 -m build_helper --task build-prepare --config ${{ matrix.config }}
- name: 构建
id: build
run: PYTHONPATH=/opt/OpenWrt-K python3 -m build_helper --task build_images --config ${{ matrix.config }}
- name: 上传
if: success() || failure()
uses: ./../../../../../opt/OpenWrt-K/.github/action/upload
releases:
runs-on: ubuntu-22.04
needs: [prepare, build-images]
name: releases-${{ matrix.name }}
strategy:
matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: 建立环境
uses: ./.github/action/prepare
- name: 发布
run: PYTHONPATH=/opt/OpenWrt-K python3 -m build_helper --task releases --config ${{ matrix.config }}