From 49dc2fdb33187701e38203e64f1f4f18248472ef Mon Sep 17 00:00:00 2001 From: Dmitry Ilyin <6576495+widgetii@users.noreply.github.com> Date: Fri, 1 May 2026 12:12:13 +0300 Subject: [PATCH] ci: add build-one workflow for single-platform test builds (#88) The Build workflow's matrix-of-everything makes it slow and noisy to test a single device profile. Mirrors the build-one workflow already present in OpenIPC/firmware. Takes a full platform name (e.g. hi3518ev200_lite_switcam-hs303-v2) and runs only that build via builder.sh. Co-authored-by: Claude Opus 4.7 (1M context) --- .github/workflows/build-one.yml | 81 +++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 .github/workflows/build-one.yml diff --git a/.github/workflows/build-one.yml b/.github/workflows/build-one.yml new file mode 100644 index 0000000..5b23430 --- /dev/null +++ b/.github/workflows/build-one.yml @@ -0,0 +1,81 @@ +name: build-one +on: + workflow_dispatch: + inputs: + platform: + description: 'Platform to build (e.g. hi3518ev200_lite_switcam-hs303-v2)' + required: true + +env: + TAG_NAME: latest + +jobs: + buildroot: + name: Firmware (${{inputs.platform}}) + runs-on: ubuntu-latest + + steps: + - name: Checkout source + uses: actions/checkout@v4 + + - name: Prepare firmware + run: | + echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf + echo CACHE_DATE=$(date +%m) >> ${GITHUB_ENV} + + - name: Setup ccache + uses: actions/cache@v4 + with: + path: /tmp/ccache + key: ${{inputs.platform}}-${{env.CACHE_DATE}} + + - name: Build firmware + run: | + export GIT_HASH=$(git rev-parse --short ${GITHUB_SHA}) + export GIT_BRANCH=${GITHUB_REF_NAME} + echo GIT_HASH=${GIT_HASH} >> ${GITHUB_ENV} + echo GIT_BRANCH=${GIT_BRANCH} >> ${GITHUB_ENV} + + mkdir -p /tmp/ccache + ln -s /tmp/ccache ${HOME}/.ccache + + NAME=${{inputs.platform}} + bash builder.sh ${NAME} + cd openipc + + TIME=$(date -d @${SECONDS} +%M:%S) + echo TIME=${TIME} >> ${GITHUB_ENV} + COMMON=$(echo ${NAME} | awk -F_ '{print NF-1}') + + NORFW=$(find output/images -name openipc*nor*) + if [ ! -z ${NORFW} ]; then + if [ ${COMMON} -eq 1 ]; then + echo NORFW=openipc/${NORFW} >> ${GITHUB_ENV} + else + mv ${NORFW} ../${NAME}-nor.tgz + echo NORFW=${NAME}-nor.tgz >> ${GITHUB_ENV} + fi + fi + + NANDFW=$(find output/images -name openipc*nand*) + if [ ! -z ${NANDFW} ]; then + if [ ${COMMON} -eq 1 ]; then + echo NANDFW=openipc/${NANDFW} >> ${GITHUB_ENV} + else + mv ${NANDFW} ../${NAME}-nand.tgz + echo NANDFW=${NAME}-nand.tgz >> ${GITHUB_ENV} + fi + fi + + if [ -z ${NORFW} ] && [ -z ${NANDFW} ]; then + exit 1 + fi + + - name: Upload firmware + if: env.NORFW || env.NANDFW + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{env.TAG_NAME}} + files: | + ${{env.NORFW}} + ${{env.NANDFW}}