blob: d5108a598258a8e139c31fc70fc7c085428f78e8 (
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
171
172
173
174
175
176
177
|
name: 'CI'
on: push
env:
TARGETS: f6
jobs:
build:
runs-on: [self-hosted]
steps:
- name: Cleanup workspace
uses: AutoModality/action-clean@v1
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Checkout submodules
run: git submodule update --init --recursive
- name: Checkout submodules
run: git submodule sync
- uses: satackey/action-docker-layer-caching@v0.0.11
continue-on-error: true
with:
key: docker-cache-${{ hashFiles('docker/**') }}-{hash}
restore-keys: docker-cache-${{ hashFiles('docker/**') }}-
- name: Build docker image
uses: ./.github/actions/docker
- name: Check syntax
uses: ./.github/actions/docker
continue-on-error: false
with:
run: /syntax_check.sh
- name: Build bootloader in docker
uses: ./.github/actions/docker
with:
run: for TARGET in ${TARGETS}; do make -j$(nproc) -C bootloader TARGET=${TARGET}; done
- name: Generate dfu file for bootloader
uses: ./.github/actions/docker
with:
run: for TARGET in ${TARGETS}; do hex2dfu -i bootloader/.obj/${TARGET}/bootloader.hex -o bootloader/.obj/${TARGET}/bootloader.dfu; done
- name: Build firmware in docker
uses: ./.github/actions/docker
with:
run: for TARGET in ${TARGETS}; do make -j$(nproc) -C firmware TARGET=${TARGET}; done
- name: Generate dfu file for firmware
uses: ./.github/actions/docker
with:
run: for TARGET in ${TARGETS}; do hex2dfu -i firmware/.obj/${TARGET}/firmware.hex -o firmware/.obj/${TARGET}/firmware.dfu; done
- name: Generate full hex file
uses: ./.github/actions/docker
with:
run: |
for TARGET in ${TARGETS}; do
srec_cat bootloader/.obj/${TARGET}/bootloader.hex -Intel firmware/.obj/${TARGET}/firmware.hex -Intel -o ${TARGET}_full.hex -Intel
done
- name: Move upload files
uses: ./.github/actions/docker
with:
run: |
for TARGET in ${TARGETS}; do
mv bootloader/.obj/${TARGET}/bootloader.dfu ${TARGET}_bootloader.dfu
mv bootloader/.obj/${TARGET}/bootloader.bin ${TARGET}_bootloader.bin
mv bootloader/.obj/${TARGET}/bootloader.elf ${TARGET}_bootloader.elf
mv firmware/.obj/${TARGET}/firmware.dfu ${TARGET}_firmware.dfu
mv firmware/.obj/${TARGET}/firmware.bin ${TARGET}_firmware.bin
mv firmware/.obj/${TARGET}/firmware.elf ${TARGET}_firmware.elf
done
- name: Generate full dfu file
uses: ./.github/actions/docker
with:
run: for TARGET in ${TARGETS}; do hex2dfu -i ${TARGET}_full.hex -o ${TARGET}_full.dfu; done
- name: Copy bootloader for full.bin
run: for TARGET in ${TARGETS}; do cp ${TARGET}_bootloader.bin ${TARGET}_full.bin; done
- name: Truncate full.bin
run: for TARGET in ${TARGETS}; do truncate -s 32768 ${TARGET}_full.bin; done
- name: Add firmware.bin at full.bin
run: for TARGET in ${TARGETS}; do cat ${TARGET}_firmware.bin >> ${TARGET}_full.bin; done
- name: Copy last target to full.dfu
run: cp ${TARGETS##*" "}_full.dfu full.dfu
- name: Publish artifacts
uses: actions/upload-artifact@v2
with:
name: artifacts
path: |
*_bootloader.dfu
*_bootloader.bin
*_firmware.dfu
*_firmware.bin
*_full.dfu
*_full.bin
full.dfu
if-no-files-found: error
retention-days: 7
upload:
name: Upload artifacts to external storage
needs: build
runs-on: [self-hosted]
steps:
- name: Make empty dir
run: mkdir -p empty
- name: Clear upload dir
uses: burnett01/rsync-deployments@4.1
with:
switches: -cvzr --delete
path: empty/
remote_path: "${{ secrets.RSYNC_DEPLOY_BASE_PATH }}${GITHUB_REF##*/}/"
remote_host: ${{ secrets.RSYNC_DEPLOY_HOST }}
remote_port: ${{ secrets.RSYNC_DEPLOY_PORT }}
remote_user: ${{ secrets.RSYNC_DEPLOY_USER }}
remote_key: ${{ secrets.RSYNC_DEPLOY_KEY }}
- name: Generate files list
run: ls *_bootloader.dfu *_firmware.dfu *_full.dfu *_bootloader.bin *_firmware.bin *_full.bin *_bootloader.elf *_firmware.elf full.dfu > uploadlist.txt
- name: Upload artifacts
uses: burnett01/rsync-deployments@4.1
with:
switches: -cvzr --delete --files-from=uploadlist.txt
remote_path: "${{ secrets.RSYNC_DEPLOY_BASE_PATH }}${GITHUB_REF##*/}/"
remote_host: ${{ secrets.RSYNC_DEPLOY_HOST }}
remote_port: ${{ secrets.RSYNC_DEPLOY_PORT }}
remote_user: ${{ secrets.RSYNC_DEPLOY_USER }}
remote_key: ${{ secrets.RSYNC_DEPLOY_KEY }}
- name: Trigger reindex
uses: wei/curl@master
with:
args: -X POST -F 'key=${{ secrets.REINDEX_KEY }}' ${{ secrets.REINDEX_URL }}
genpic:
name: Generate pic
needs: upload
if: github.ref == 'refs/heads/release'
runs-on: [self-hosted]
steps:
- name: Set test env
run: echo "NUMBER_OF_COMMITS=$(git rev-list --count HEAD)" >> $GITHUB_ENV
- name: Test output NUMBER_OF_COMMITS
run: echo $NUMBER_OF_COMMITS
- name: Test output date
run: |
GET_DATE=$(date +"%b %d")
PREP_DATE=$(echo "${GET_DATE^^}")
echo "PREP_DATE=$PREP_DATE" >> $GITHUB_ENV
- name: Test output PREP_DATE
run: echo $PREP_DATE
- name: Gen pic
uses: ./.github/actions/docker
with:
run: convert ./.github/assets/latest-firmware-template.png -font ./.github/assets/Born2bSportyV2.ttf -weight 700 -pointsize 140 -annotate +900+330 "$NUMBER_OF_COMMITS $PREP_DATE" latest-firmware-banner.png
- name: Upload pic
uses: burnett01/rsync-deployments@4.1
with:
switches: -avzp --delete
path: latest-firmware-banner.png
remote_path: "${{ secrets.RSYNC_DEPLOY_BASE_PATH }}/"
remote_host: ${{ secrets.RSYNC_DEPLOY_HOST }}
remote_port: ${{ secrets.RSYNC_DEPLOY_PORT }}
remote_user: ${{ secrets.RSYNC_DEPLOY_USER }}
remote_key: ${{ secrets.RSYNC_DEPLOY_KEY }}
|