aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/build.yaml
blob: 3144e5c493fb67ae90078cdae001a4fe5cdfe0c2 (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
name: Badgemagic Firmware build

on:
  push:
  pull_request:
    branches: [master]

env:
  MRS_TOOLCHAIN: MRS_Toolchain_Linux_x64_V1.91
  BUILD_DIR: build
  BIN_TYPES: '{.bin,.elf}'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Cache toolchain
        id: cache-toolchain
        uses: actions/cache@v4
        with:
          path: ${{ env.MRS_TOOLCHAIN }}
          key: ${{ env.MRS_TOOLCHAIN }}-cache

      - if: ${{ steps.cache-toolchain.outputs.cache-hit != 'true' }}
        name: Download toolchain
        run: |
          wget http://file-oss.mounriver.com/tools/${{ env.MRS_TOOLCHAIN }}.tar.xz
          tar -xvf ${{ env.MRS_TOOLCHAIN }}.tar.xz

      - name: Build firmware
        run: |
          export PREFIX=${{ env.MRS_TOOLCHAIN }}/RISC-V_Embedded_GCC/bin/riscv-none-embed-
          export BUILD_DIR=${{ env.BUILD_DIR }}
          make -j$(nproc)

      - uses: actions/upload-artifact@v4
        with:
          name: badgemagic-firmware
          path: ${{ env.BUILD_DIR }}/badgemagic-*

      # Skip upload APK for pull requests & only allow binaries build from master
      - if: ${{ github.event_name != 'pull_request' && github.ref_name == 'master' }}
        name: Upload firmware binaries to bin branch
        run: |
          git config --global user.name "${{ github.workflow }}"
          git config --global user.email "gh-actions@${{ github.repository_owner }}"

          mv ${{ env.BUILD_DIR }}/badgemagic-*${{ env.BIN_TYPES }} ./
          
          git checkout --orphan bin
          git reset
          git add badgemagic-*${{ env.BIN_TYPES }}
          git commit -am "[Auto] Update firmware binaries from ${{ github.ref_name }} ($(date +%Y-%m-%d.%H:%M:%S))"
          git push --force origin bin