name: CI on: push: pull_request: branches: - master - dev - main jobs: build: runs-on: ubuntu-22.04 container: image: alpine:3.19 strategy: matrix: model: [ "TS100", "TS80", "TS80P", "Pinecil", "MHP30", "Pinecilv2", "S60", "S60P", "T55", "TS101", ] fail-fast: true steps: - name: Install dependencies (apk) run: apk add --no-cache gcc-riscv-none-elf g++-riscv-none-elf gcc-arm-none-eabi g++-arm-none-eabi newlib-riscv-none-elf newlib-arm-none-eabi findutils python3 py3-pip make git bash - name: Install dependencies (python) run: python3 -m pip install --break-system-packages bdflib - uses: actions/checkout@v4 with: submodules: true - name: Git ownership exception run: git config --global --add safe.directory /__w/IronOS/IronOS && git config --global safe.directory "$GITHUB_WORKSPACE" - name: Git meta info run: echo "GITHUB_CI_PR_SHA=${{github.event.pull_request.head.sha}}" >> "${GITHUB_ENV}" - name: Build ${{ matrix.model }} run: cd source && ./build.sh -m ${{ matrix.model }} - name: Copy license files run: cp LICENSE scripts/LICENSE_RELEASE.md source/Hexfile/ - name: Generate json index file run: ./source/metadata.py ${{ matrix.model }}.json - name: Archive ${{ matrix.model }} artifacts uses: actions/upload-artifact@v4 with: name: ${{ matrix.model }} path: | source/Hexfile/${{ matrix.model }}_*.hex source/Hexfile/${{ matrix.model }}_*.dfu source/Hexfile/${{ matrix.model }}_*.bin source/Hexfile/${{ matrix.model }}.json source/Hexfile/LICENSE source/Hexfile/LICENSE_RELEASE.md if-no-files-found: error build_multi-lang: runs-on: ubuntu-22.04 container: image: alpine:3.19 strategy: matrix: model: ["Pinecil", "Pinecilv2"] fail-fast: true steps: - name: Install dependencies (apk) run: apk add --no-cache gcc-riscv-none-elf g++-riscv-none-elf gcc-arm-none-eabi g++-arm-none-eabi newlib-riscv-none-elf newlib-arm-none-eabi findutils python3 py3-pip make git bash musl-dev - name: Install dependencies (python) run: python3 -m pip install --break-system-packages bdflib - uses: actions/checkout@v4 with: submodules: true - name: Git ownership exception run: git config --global --add safe.directory /__w/IronOS/IronOS && git config --global safe.directory "$GITHUB_WORKSPACE" - name: Git meta info run: echo "GITHUB_CI_PR_SHA=${{github.event.pull_request.head.sha}}" >> "${GITHUB_ENV}" - name: Build ${{ matrix.model }} run: make -C source/ -j$(nproc) model="${{ matrix.model }}" firmware-multi_compressed_European firmware-multi_compressed_Belorussian+Bulgarian+Russian+Serbian+Ukrainian firmware-multi_Chinese+Japanese - name: Copy license files run: cp LICENSE scripts/LICENSE_RELEASE.md source/Hexfile/ - name: Generate json index file run: ./source/metadata.py ${{ matrix.model }}_multi-lang.json - name: Archive ${{ matrix.model }} artifacts uses: actions/upload-artifact@v4 with: name: ${{ matrix.model }}_multi-lang path: | source/Hexfile/${{ matrix.model }}_*.hex source/Hexfile/${{ matrix.model }}_*.dfu source/Hexfile/${{ matrix.model }}_*.bin source/Hexfile/${{ matrix.model }}_multi-lang.json source/Hexfile/LICENSE source/Hexfile/LICENSE_RELEASE.md if-no-files-found: error upload_metadata: needs: [build, build_multi-lang] runs-on: ubuntu-20.04 steps: - name: Download all prebuilts uses: actions/download-artifact@v4 with: path: source/Hexfile/ merge-multiple: true - run: ls -R source/Hexfile - name: Upload JSONs in bulk as metadata uses: actions/upload-artifact@v4 with: name: metadata path: source/Hexfile/*.json if-no-files-found: error tests: runs-on: ubuntu-22.04 container: image: alpine:3.19 steps: - name: Install dependencies (apk) run: apk add --no-cache python3 py3-pip make git bash findutils gcc musl-dev - uses: actions/checkout@v4 with: submodules: true - name: Install dependencies (python) run: python3 -m pip install --break-system-packages bdflib - name: Run python tests run: ./Translations/make_translation_test.py - name: Run BriefLZ tests run: make -C source/ Objects/host/brieflz/libbrieflz.so && ./Translations/brieflz_test.py check_c-cpp: runs-on: ubuntu-22.04 container: image: alpine:3.19 steps: - name: Install dependencies (apk) run: apk add --no-cache make git diffutils findutils clang-extra-tools bash - uses: actions/checkout@v4 with: submodules: true - name: Check format style with clang-format run: make clean check-style check_python: runs-on: ubuntu-22.04 container: image: alpine:3.19 steps: - name: Install dependencies (apk) run: apk add --no-cache python3 py3-pip make git black - uses: actions/checkout@v4 with: submodules: true - name: Install dependencies (python) run: python3 -m pip install --break-system-packages bdflib flake8 - name: Check python formatting with black run: black --check Translations - name: Check python with flake8 run: flake8 Translations check_shell: name: check_shell runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: shellcheck uses: reviewdog/action-shellcheck@v1 with: github_token: ${{ secrets.github_token }} reporter: github-pr-review # Change reporter. exclude: "./.git/*" # Optional. check_all_files_with_shebangs: "false" # Optional. check_docs: runs-on: ubuntu-22.04 container: image: alpine:3.19 steps: - name: Install dependencies (apk) run: apk add --no-cache git bash grep - uses: actions/checkout@v4 with: submodules: true fetch-tags: true fetch-depth: 0 - name: Git ownership exception run: git config --global --add safe.directory /__w/IronOS/IronOS && git config --global safe.directory "$GITHUB_WORKSPACE" - name: Check and verify documentation run: ./scripts/deploy.sh docs