go go go Serializer #79
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: Build and Push OR check-PR | |
on: | |
pull_request: | |
branches: | |
- main | |
push: | |
branches: | |
- main | |
- dev | |
tags: | |
- "*" | |
workflow_dispatch: | |
jobs: | |
compile_sketch: | |
name: Build ${{ matrix.board.name }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
board: | |
- { | |
vendor: "M5Stack", | |
name: "Cardputer", | |
description: "", | |
link: "https://shop.m5stack.com/products/m5stack-cardputer-kit-w-m5stamps3?ref=Pirata", | |
family: "ESP32-S3", | |
env: "m5stack-cardputer", | |
partitions: { | |
bootloader_addr: "0x0000", | |
}, | |
} | |
- { | |
vendor: "M5Stack", | |
name: "StickCPlus2", | |
description: "", | |
link: "https://shop.m5stack.com/products/m5stickc-plus2-esp32-mini-iot-development-kit?ref=Pirata", | |
family: "ESP32", | |
env: "m5stack-cplus2", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "M5Stack", | |
name: "StickCPlus", | |
description: "", | |
link: "https://shop.m5stack.com/products/m5stickc-plus-esp32-pico-mini-iot-development-kit?ref=Pirata", | |
family: "ESP32", | |
env: "m5stack-cplus1_1", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "M5Stack", | |
name: "StickC", | |
description: "", | |
link: "https://shop.m5stack.com/collections/m5-controllers?ref=Pirata", | |
family: "ESP32", | |
env: "m5stack-c", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "M5Stack", | |
name: "Core2", | |
description: "", | |
link: "https://shop.m5stack.com/products/m5stack-core2-esp32-iot-development-kit?ref=Pirata", | |
family: "ESP32", | |
env: "m5stack-core2", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "M5Stack", | |
name: "Core16mb", | |
description: "", | |
link: "https://shop.m5stack.com/products/esp32-basic-core-lot-development-kit-v2-7?ref=Pirata", | |
family: "ESP32", | |
env: "m5stack-core", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "M5Stack", | |
name: "CoreS3", | |
description: "", | |
link: "https://shop.m5stack.com/products/m5stack-cores3-esp32s3-lotdevelopment-kit?ref=Pirata", | |
family: "ESP32-S3", | |
env: "m5stack-cores3", | |
partitions: { | |
bootloader_addr: "0x0", | |
}, | |
} | |
- { | |
vendor: "Espressif", | |
name: "ESP32-S3-4mb", | |
description: "", | |
link: "", | |
family: "ESP32-S3", | |
env: "headless-esp32s3-4mb", | |
partitions: { | |
bootloader_addr: "0x0", | |
}, | |
} | |
- { | |
vendor: "Espressif", | |
name: "ESP32-S3-8mb", | |
description: "", | |
link: "", | |
family: "ESP32-S3", | |
env: "headless-esp32s3-8mb", | |
partitions: { | |
bootloader_addr: "0x0", | |
}, | |
} | |
- { | |
vendor: "Espressif", | |
name: "ESP32-S3-16mb", | |
description: "", | |
link: "", | |
family: "ESP32-S3", | |
env: "headless-esp32s3-16mb", | |
partitions: { | |
bootloader_addr: "0x0", | |
}, | |
} | |
- { | |
vendor: "Espressif", | |
name: "ESP32-4mb", | |
description: "", | |
link: "", | |
family: "ESP32", | |
env: "headless-esp32-4mb", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "Espressif", | |
name: "ESP32-8mb", | |
description: "", | |
link: "", | |
family: "ESP32", | |
env: "headless-esp32-8mb", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "CYD", | |
name: "CYD-2432S028", | |
description: "(Resistive)", | |
link: "", | |
family: "ESP32", | |
env: "CYD-2432S028", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "CYD", | |
name: "CYD-2432S028_inv", | |
description: "(Resistive) Inverted Colors", | |
link: "", | |
family: "ESP32", | |
env: "CYD-2-USB", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "CYD", | |
name: "CYD-2432W328C_inv", | |
description: "(Capacitive) Inverted Colors and 2.4in", | |
link: "", | |
family: "ESP32", | |
env: "CYD-2432W328C_2", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "CYD", | |
name: "CYD-2432W328C", | |
description: "(Capacitive)", | |
link: "", | |
family: "ESP32", | |
env: "CYD-2432W328C", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "Marauder", | |
name: "V4-OG", | |
description: "", | |
link: "", | |
family: "ESP32", | |
env: "Marauder-v4-OG", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "Marauder", | |
name: "Mini", | |
description: "", | |
link: "", | |
family: "ESP32", | |
env: "Marauder-Mini", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
vendor: "Lilygo", | |
name: "T-Display_S3_Touch", | |
description: "", | |
link: "https://lilygo.cc/products/t-display-s3?_pos=1&_sid=d7b2ebc22&_ss=r&variant=42589373268149", | |
family: "ESP32-S3", | |
env: "lilygo-t-display-S3", | |
partitions: { | |
bootloader_addr: "0x0", | |
}, | |
} | |
- { | |
vendor: "Lilygo", | |
name: "T-Embed", | |
description: "", | |
link: "https://lilygo.cc/products/t-embed", | |
family: "ESP32-S3", | |
env: "lilygo-t-embed", | |
partitions: { | |
bootloader_addr: "0x0", | |
}, | |
} | |
- { | |
vendor: "Lilygo", | |
name: "T-Embed_CC1101", | |
description: "(Transparent version)", | |
link: "https://lilygo.cc/products/t-embed-cc1101", | |
family: "ESP32-S3", | |
env: "lilygo-t-embed-cc1101", | |
partitions: { | |
bootloader_addr: "0x0", | |
}, | |
} | |
- { | |
vendor: "Lilygo", | |
name: "T-Deck", | |
description: "(Normal and Plus)", | |
link: "https://lilygo.cc/products/t-deck", | |
family: "ESP32-S3", | |
env: "lilygo-t-deck", | |
partitions: { | |
bootloader_addr: "0x0", | |
}, | |
} | |
steps: | |
- uses: actions/checkout@v4 | |
- id: build | |
name: setup Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: "3.x" | |
- name: Install dependencies | |
run: | | |
pip install requests esptool | |
- name: Install PlatformIO Core | |
run: | | |
pip install platformio | |
if [[ "${{ github.ref_type }}" == "tag" ]]; then | |
version=${{ github.ref_name }} | |
else | |
version="${GITHUB_SHA::7}" | |
fi | |
sed -i "s/-DLAUNCHER=/-DLAUNCHER='\"$version\"' ; /g" ./platformio.ini | |
- name: Run Compile | |
run: | | |
platformio run -e ${{ matrix.board.env }} | |
- name: Merge files | |
run: | | |
esptool.py --chip esp32s3 merge_bin -o Launcher-${{ matrix.board.env }}.bin \ | |
${{ matrix.board.partitions.bootloader_addr }} .pio/build/${{ matrix.board.env }}/bootloader.bin \ | |
0x8000 .pio/build/${{ matrix.board.env }}/partitions.bin \ | |
0x10000 .pio/build/${{ matrix.board.env }}/firmware.bin | |
js_content="{\"name\":\"${{ matrix.board.name }}\",\"builds\":[{\"chipFamily\":\"${{ matrix.board.family }}\",\"improv\":false,\"parts\":[{\"path\":\"bins/Launcher-${{ matrix.board.env }}.bin\",\"offset\":0}]}]}" | |
echo "$js_content" > "./Manifest-${{ matrix.board.env }}.json" | |
if [[ "${{ matrix.board.link }}" == "" ]]; then | |
html="<input type='radio' name='type' value='${{ matrix.board.env }}' id='${{ matrix.board.env }}' /><label for='${{ matrix.board.env}}'>${{ matrix.board.name }} ${{ matrix.board.description }}</label>" | |
else | |
html="<input type='radio' name='type' value='${{ matrix.board.env }}' id='${{ matrix.board.env }}' /><label for='${{ matrix.board.env}}'>${{ matrix.board.name }} <a href='${{ matrix.board.link }}' target='_blank' rel='noopener noreferrer'>(link)</a> ${{ matrix.board.description }}</label>" | |
fi | |
echo "$html" > ./Launcher-${{ matrix.board.vendor }}.html | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Artifacts-${{ matrix.board.name }} | |
path: | | |
Launcher-*.bin | |
Manifest-*.json | |
Launcher-*.html | |
retention-days: 5 | |
if-no-files-found: error | |
post_compile_steps: | |
name: Post-compile steps | |
runs-on: ubuntu-latest | |
needs: compile_sketch | |
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') || github.ref_type == 'tag' | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# Configura para garantir que todas as branches sejam buscadas | |
fetch-depth: 0 | |
- name: Download all artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: ~/LauncherArtifacts | |
- name: Clone Launcher repository and switch to WebPage branch | |
run: | | |
git fetch origin | |
git checkout WebPage || git checkout -b WebPage origin/WebPage | |
- name: Generate HTML and manifests from Boards | |
run: | | |
# Variáveis para armazenar os conteúdos dos arquivos específicos | |
m5stack="\n" | |
lilygo="\n" | |
esp32="\n" | |
cyd="\n" | |
marauder="\n" | |
# Itera sobre cada arquivo HTML na pasta de artefatos | |
for file in ~/LauncherArtifacts/**/*.html; do | |
if [ -f "$file" ]; then | |
content=$(cat "$file") # Lê o conteúdo do arquivo | |
case "$(basename "$file")" in | |
"Launcher-M5Stack.html") | |
m5stack+="$content\n" # Salva o conteúdo na variável correspondente | |
;; | |
"Launcher-Lilygo.html") | |
lilygo+="$content\n" | |
;; | |
"Launcher-Espressif.html") | |
esp32+="$content\n" | |
;; | |
"Launcher-CYD.html") | |
cyd+="$content\n" | |
;; | |
"Launcher-Marauder.html") | |
marauder+="$content\n" | |
;; | |
esac | |
echo "$file" # Exibe o caminho do arquivo processado | |
fi | |
done | |
# Começa a lista HTML | |
html="<ul class='device-list m5stack'>" | |
html+="$m5stack" | |
html+="</ul>" | |
html+="<ul class='device-list lilygo'>" | |
html+="$lilygo" | |
html+="</ul>" | |
html+="<ul class='device-list cyd'>" | |
html+="$cyd" | |
html+="</ul>" | |
html+="<ul class='device-list marauder'>" | |
html+="$marauder" | |
html+="</ul>" | |
html+="<ul class='device-list esp32'>" | |
html+="$esp32" | |
html+="</ul>" | |
# Exibe as quebras de linha | |
html=$(echo -e "$html") | |
# Exibe as variáveis para verificar | |
echo "M5Stack Content: $m5stack" | |
echo "Lilygo Content: $lilygo" | |
echo "ESP32 Content: $esp32" | |
echo "CYD Content: $cyd" | |
echo "$html" > ~/file.html | |
cat ~/file.html | |
rm ./index.html | |
cp ./support_files/flasher ./index.html | |
python ./support_files/merge_html.py ./index.html ~/file.html | |
- name: Move artifacts to the correct folders | |
run: | | |
set -x | |
pwd | |
ls -all | |
tree | |
if [ "${{ github.ref_type }}" == "tag" ]; then | |
cp -f ~/LauncherArtifacts/*/*.bin ./Release/bins | |
elif [ "${{ github.ref_type }}" != "tag" ]; then | |
cp -f ~/LauncherArtifacts/*/*.bin ./Beta/bins | |
fi | |
cp -f ~/LauncherArtifacts/*/*.json ./Release | |
cp -f ~/LauncherArtifacts/*/*.json ./Beta | |
- name: Commit and push changes | |
run: | | |
git config user.name "GitHub Actions" | |
git config user.email "[email protected]" | |
git add . | |
git commit -m "Update artifacts from build" | |
git push origin WebPage | |
create_release: | |
runs-on: ubuntu-latest | |
environment: github_release | |
needs: [compile_sketch] | |
if: github.ref_type == 'tag' | |
steps: | |
- id: launcher_version | |
name: Get Version | |
run: | | |
set -x | |
version=${{ github.ref_name }} | |
echo "version=${version}" > $GITHUB_OUTPUT | |
- uses: actions/download-artifact@v4 | |
with: | |
merge-multiple: true | |
- name: List all files | |
if: always() | |
run: | | |
set -x | |
pwd | |
ls -all | |
tree | |
- name: Create Release ${{ steps.launcher_version.outputs.version }} | |
uses: softprops/action-gh-release@v1 | |
with: | |
name: Launcher Release ${{ steps.launcher_version.outputs.version }} | |
tag_name: ${{ steps.launcher_version.outputs.version }} | |
generate_release_notes: true | |
files: | | |
Launcher-*.bin |