aboutsummaryrefslogtreecommitdiffhomepage
path: root/.github/workflows/push.yml
blob: 9c1eb85b67a3d7738303b9a1683066b2d06ec7da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
name: CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-20.04
    container:
      image: alpine:3.15
    strategy:
      matrix:
        model: ["TS100", "TS80", "TS80P", "Pinecil", "MHP30"]
      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 text
        run: |
          cp LICENSE source/Hexfile/LICENSE
          cp 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/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.15
    strategy:
      matrix:
        model: ["Pinecil"]
      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 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 text
        run: |
          cp LICENSE source/Hexfile/LICENSE
          cp 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/LICENSE
            source/Hexfile/LICENSE_RELEASE.md
          if-no-files-found: error

      - name: Generate json index file
        run: cd source && python3 metadata.py Pinecil_multi-lang.json

      - name: Archive ${{ matrix.model }} index file
        uses: actions/upload-artifact@v3
        with:
          name: metadata
          path: source/Hexfile/Pinecil_multi-lang.json

  tests:
    runs-on: ubuntu-20.04
    container:
      image: alpine:3.15

    steps:
      - name: deps
        run: apk add --no-cache python3 py3-pip make git bash findutils gcc musl-dev

      - uses: actions/checkout@v3
        with:
          submodules: true

      - name: install black
        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_formatting:
    runs-on: ubuntu-20.04
    container:
      image: alpine:3.15

    steps:
      - name: deps
        run: apk add --no-cache python3 py3-pip make git

      - uses: actions/checkout@v3
        with:
          submodules: true

      - name: install black
        run: python3 -m pip install bdflib black flake8

      - name: Check formatting with clang-format
        run: cd source && make clean && make check-style

      - name: Check python formatting with black
        run: black --check Translations

      - name: Check python with flake8
        run: flake8 Translations

  shellcheck:
    name: runner / shellcheck
    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.