-
Notifications
You must be signed in to change notification settings - Fork 63
147 lines (143 loc) · 7.41 KB
/
release.yaml
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
name: Build Releases
on: [push]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/cache@v3
with:
path: |
~/.cache/pip
~/.platformio/.cache
key: ${{ runner.os }}-pio
- uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install PlatformIO Core
run: pip install --upgrade platformio
- name: Set environment variables
run: echo "VERSION=$(head -1 version)" >> $GITHUB_ENV
- name: Check if Git-Tag already exist
run: |
TAG="v${{ env.VERSION }}"
if git show-ref --tags --verify --quiet "refs/tags/${TAG}" && [[ "${TAG}" != *"DEV"* ]]; then
echo "Tag ${TAG} already exists"
exit 1
else
echo "Tag ${TAG} does not exist or is DEV-Branch"
fi
- name: Check if version file contains linebreak at the end
run: |
if [ -n "$(tail -c 1 "version")" ]; then
echo "The version file has no linebreak at the end"
exit 1
fi
- name: Update hash in Global properties
run: |
sed -i -e 's|*GLOBAL_HASH = "\(.*\)";|*GLOBAL_HASH = "'"$(git rev-parse --short HEAD)"'";|g' components/cmd_system/cmd_system.c
sed -i -e 's/DEV-VERSION/${{ env.VERSION }}/g' CMakeLists.txt
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install htmlmin esptool
- name: Minify HTML files
run: python .github/workflows/shrinkHTML.py
shell: sh
- name: Build ESP32 firmware
run: platformio run -e esp32
- name: Build one binary for ESP32
run: |
folder=.pio/build/esp32
chip=esp32
mkdir -p release/ota/ESP32/
cp version release/ota/
cp $folder/firmware.bin release/ota/ESP32/firmware.bin
mv $folder/firmware.bin $folder/${chip}nat_extended_v${{ env.VERSION }}.bin
esptool.py --chip $chip merge_bin -o $folder/${chip}nat_extended_full_v${{ env.VERSION }}.bin --flash_freq keep --flash_size keep 0x1000 $folder/bootloader.bin 0x10000 $folder/${chip}nat_extended_v${{ env.VERSION }}.bin 0x8000 $folder/partitions.bin
esptool.py --chip $chip merge_bin -o $folder/${chip}nat_extended_full_v${{ env.VERSION }}.bin --flash_freq keep --flash_size keep 0x1000 $folder/bootloader.bin 0x10000 $folder/${chip}nat_extended_v${{ env.VERSION }}.bin 0x8000 $folder/partitions.bin
mkdir -p release
esptool.py --chip $chip merge_bin -o $folder/${chip}nat_extended_full_v${{ env.VERSION }}.bin --flash_freq keep --flash_size keep 0x1000 $folder/bootloader.bin 0x10000 $folder/${chip}nat_extended_v${{ env.VERSION }}.bin 0x8000 $folder/partitions.bin
mkdir -p release
zip -j release/${chip}nat_extended_update_v${{ env.VERSION }}.zip $folder/${chip}nat_extended_v${{ env.VERSION }}.bin
zip -j release/${chip}nat_extended_full_v${{ env.VERSION }}.zip $folder/${chip}nat_extended_full_v${{ env.VERSION }}.bin
- name: Build ESP32 C3 firmware
run: platformio run -e esp32-c3
- name: Build one binary for ESP32 C3
run: |
folder=.pio/build/esp32-c3
chip=esp32c3
mkdir -p release/ota/ESP32-C3/
cp $folder/firmware.bin release/ota/ESP32-C3/firmware.bin
mv $folder/firmware.bin $folder/${chip}nat_extended_v${{ env.VERSION }}.bin
esptool.py --chip $chip merge_bin -o $folder/${chip}nat_extended_full_v${{ env.VERSION }}.bin --flash_freq keep --flash_size keep 0x0 $folder/bootloader.bin 0x10000 $folder/${chip}nat_extended_v${{ env.VERSION }}.bin 0x8000 $folder/partitions.bin
mkdir -p release/
zip -j release/${chip}nat_extended_update_v${{ env.VERSION }}.zip $folder/${chip}nat_extended_v${{ env.VERSION }}.bin
zip -j release/${chip}nat_extended_full_v${{ env.VERSION }}.zip $folder/${chip}nat_extended_full_v${{ env.VERSION }}.bin
- name: Build ESP32 S2 firmware
run: platformio run -e esp32-s2
- name: Build one binary for ESP32 S2
run: |
folder=.pio/build/esp32-s2
chip=esp32s2
mkdir -p release/ota/ESP32-S2/
cp $folder/firmware.bin release/ota/ESP32-S2/firmware.bin
mv $folder/firmware.bin $folder/${chip}nat_extended_v${{ env.VERSION }}.bin
esptool.py --chip $chip merge_bin -o $folder/${chip}nat_extended_full_v${{ env.VERSION }}.bin --flash_freq keep --flash_size keep 0x1000 $folder/bootloader.bin 0x10000 $folder/${chip}nat_extended_v${{ env.VERSION }}.bin 0x8000 $folder/partitions.bin
mkdir -p release
zip -j release/${chip}nat_extended_update_v${{ env.VERSION }}.zip $folder/${chip}nat_extended_v${{ env.VERSION }}.bin
zip -j release/${chip}nat_extended_full_v${{ env.VERSION }}.zip $folder/${chip}nat_extended_full_v${{ env.VERSION }}.bin
- name: Build ESP32 C6 firmware
run: platformio run -e esp32-c6
- name: Build one binary for ESP32 C6
run: |
folder=.pio/build/esp32-c6
chip=esp32c6
mkdir -p release/ota/ESP32-C6/
cp $folder/firmware.bin release/ota/ESP32-C6/firmware.bin
mv $folder/firmware.bin $folder/${chip}nat_extended_v${{ env.VERSION }}.bin
esptool.py --chip $chip merge_bin -o $folder/${chip}nat_extended_full_v${{ env.VERSION }}.bin --flash_freq keep --flash_size keep 0x0 $folder/bootloader.bin 0x10000 $folder/${chip}nat_extended_v${{ env.VERSION }}.bin 0x8000 $folder/partitions.bin
mkdir -p release/
zip -j release/${chip}nat_extended_update_v${{ env.VERSION }}.zip $folder/${chip}nat_extended_v${{ env.VERSION }}.bin
zip -j release/${chip}nat_extended_full_v${{ env.VERSION }}.zip $folder/${chip}nat_extended_full_v${{ env.VERSION }}.bin
- name: Create draft release
uses: "marvinpinto/action-automatic-releases@latest"
if: github.ref == 'refs/heads/master'
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
draft: true
automatic_release_tag: v${{ env.VERSION }}
title: v${{ env.VERSION }}
files: |
release/*.zip
- name: Create changelog from version file
if: github.ref == 'refs/heads/master'
run: tail -n +3 version | sed 's/^/- /' > changelog
- name: Set changelog
if: github.ref == 'refs/heads/master'
uses: ncipollo/release-action@v1
with:
allowUpdates: true
name: v${{ env.VERSION }}
tag: v${{ env.VERSION }}
draft: true
bodyFile: "changelog"
- name: Set dev branch variable
if: github.ref == 'refs/heads/dev'
run: |
echo "RELEASE_BRANCH=releases-staging" >> $GITHUB_ENV
- name: Set master branch variable
if: github.ref == 'refs/heads/master'
run: |
echo "RELEASE_BRANCH=releases-production" >> $GITHUB_ENV
- name: Deploy to Github Pages
if: github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/master'
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: release/ota/
branch: ${{env.RELEASE_BRANCH}}