Implement target in Makefile to run github CI-like checks locally (#1… #3349
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push, pull_request] | |
jobs: | |
build: | |
runs-on: ubuntu-20.04 | |
container: | |
image: alpine:3.16 | |
strategy: | |
matrix: | |
model: ["TS100", "TS80", "TS80P", "Pinecil", "MHP30", "Pinecilv2", "S60", "TS101"] | |
fail-fast: true | |
steps: | |
- name: Install dependencies (apk) | |
run: apk add --no-cache gcc-riscv-none-elf gcc-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 bdflib | |
- uses: actions/checkout@v3 | |
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: Build ${{ matrix.model }} | |
run: cd source && ./build.sh -m ${{ matrix.model }} | |
- name: Copy license files | |
run: | | |
cp LICENSE source/Hexfile/LICENSE | |
cp scripts/LICENSE_RELEASE.md source/Hexfile/LICENSE_RELEASE.md | |
- name: Archive ${{ matrix.model }} artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.model }} | |
path: | | |
source/Hexfile/${{ matrix.model }}_*.hex | |
source/Hexfile/${{ matrix.model }}_*.dfu | |
source/Hexfile/${{ matrix.model }}_*.bin | |
source/Hexfile/LICENSE | |
source/Hexfile/LICENSE_RELEASE.md | |
if-no-files-found: error | |
- name: Generate json index file | |
run: cd source && python3 metadata.py ${{ matrix.model }}.json | |
- name: Archive ${{ matrix.model }} index file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: metadata | |
path: source/Hexfile/${{ matrix.model }}.json | |
build_multi-lang: | |
runs-on: ubuntu-20.04 | |
container: | |
image: alpine:3.16 | |
strategy: | |
matrix: | |
model: ["Pinecil", "Pinecilv2"] | |
fail-fast: true | |
steps: | |
- name: Install dependencies (apk) | |
run: apk add --no-cache gcc-riscv-none-elf newlib-riscv-none-elf findutils python3 py3-pip make git bash musl-dev | |
- name: Install dependencies (python) | |
run: python3 -m pip install bdflib | |
- uses: actions/checkout@v3 | |
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: Build ${{ matrix.model }} | |
run: cd source && make -j$(nproc) model="${{ matrix.model }}" firmware-multi_compressed_European firmware-multi_compressed_Bulgarian+Russian+Serbian+Ukrainian firmware-multi_Chinese+Japanese | |
- name: Copy license files | |
run: | | |
cp LICENSE source/Hexfile/LICENSE | |
cp scripts/LICENSE_RELEASE.md source/Hexfile/LICENSE_RELEASE.md | |
- name: Archive ${{ matrix.model }} artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.model }}_multi-lang | |
path: | | |
source/Hexfile/${{ matrix.model }}_*.hex | |
source/Hexfile/${{ matrix.model }}_*.dfu | |
source/Hexfile/${{ matrix.model }}_*.bin | |
source/Hexfile/LICENSE | |
source/Hexfile/LICENSE_RELEASE.md | |
if-no-files-found: error | |
- name: Generate json index file | |
run: cd source && python3 metadata.py ${{ matrix.model }}_multi-lang.json | |
- name: Archive ${{ matrix.model }} index file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: metadata | |
path: source/Hexfile/${{ matrix.model }}_multi-lang.json | |
tests: | |
runs-on: ubuntu-20.04 | |
container: | |
image: alpine:3.16 | |
steps: | |
- name: Install dependencies (apk) | |
run: apk add --no-cache python3 py3-pip make git bash findutils gcc musl-dev | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install dependencies (python) | |
run: python3 -m pip install bdflib | |
- name: Run python tests | |
run: cd Translations && chmod +x make_translation_test.py && ./make_translation_test.py | |
- name: Run BriefLZ tests | |
run: | | |
cd source | |
make Objects/host/brieflz/libbrieflz.so | |
cd ../Translations | |
chmod +x brieflz_test.py | |
./brieflz_test.py | |
check_c-cpp: | |
runs-on: ubuntu-20.04 | |
container: | |
image: alpine:3.16 | |
steps: | |
- name: Install dependencies (apk) | |
run: apk add --no-cache make git diffutils findutils clang-extra-tools bash | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Check format style with clang-format | |
run: cd source && make clean && make check-style | |
check_python: | |
runs-on: ubuntu-20.04 | |
container: | |
image: alpine:3.16 | |
steps: | |
- name: Install dependencies (apk) | |
run: apk add --no-cache python3 py3-pip make git black | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install dependencies (python) | |
run: python3 -m pip install 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@v3 | |
- 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_readme: | |
runs-on: ubuntu-20.04 | |
container: | |
image: alpine:3.16 | |
steps: | |
- name: Install dependencies (apk) | |
run: apk add --no-cache git | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Check autogenerated Documentation/README.md | |
run: /bin/sh ./scripts/deploy.sh docs_readme |