Merge pull request #355 from rennancockles/dev #518
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: | |
push: | |
branches: | |
- main | |
tags: | |
- "*" | |
workflow_dispatch: | |
inputs: | |
board: | |
description: 'Board to Compile' | |
type: choice | |
required: true | |
default: 'M5Cardputer' | |
options: ['M5Cardputer', 'M5StickCPlus2', 'M5StickCPlus', 'Core2', 'Core16mb', 'Core4mb', 'CoreS3', 'ESP32-S3','M5StickCPlus_Full', 'CYD-2USB', 'CYD-2432S028'] | |
jobs: | |
compile_sketch: | |
name: Build ${{ matrix.board.name }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
board: | |
- { | |
name: "M5Cardputer", | |
env: "m5stack-cardputer", | |
partitions: { | |
bootloader_addr: "0x0000", | |
}, | |
} | |
- { | |
name: "M5StickCPlus2", | |
env: "m5stack-cplus2", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
name: "M5StickCPlus", | |
env: "m5stack-cplus1_1", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
name: "M5StickCPlus_Full", | |
env: "m5stack-cplus1_1-full", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
name: "Core2", | |
env: "m5stack-core2", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
name: "Core16mb", | |
env: "m5stack-core16mb", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
name: "Core4mb", | |
env: "m5stack-core4mb", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
name: "CoreS3", | |
env: "m5stack-cores3", | |
partitions: { | |
bootloader_addr: "0x0", | |
}, | |
} | |
- { | |
name: "ESP32-S3", | |
env: "esp32-s3-devkitc-1", | |
partitions: { | |
bootloader_addr: "0x0", | |
}, | |
} | |
- { | |
name: "CYD-2432S028", | |
env: "CYD-2432S028", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
- { | |
name: "CYD-2USB", | |
env: "CYD-2USB", | |
partitions: { | |
bootloader_addr: "0x1000", | |
}, | |
} | |
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/-DBRUCE_VERSION=/-DBRUCE_VERSION='\"$version\"' ; /g" ./platformio.ini | |
sed -i "s/-DGIT_COMMIT_HASH='\"Homebrew\"'/\!echo '-DGIT_COMMIT_HASH=\\\\\\\\\"'\$\(git describe --always --dirty)'\\\\\\\\\"'/g" ./platformio.ini | |
cat ./platformio.ini | |
- name: Run Compile | |
run: | | |
platformio run -e ${{ matrix.board.env }} | |
- name: Merge files | |
run: | | |
esptool.py --chip esp32s3 merge_bin -o Bruce-${{ 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 | |
- name: Upload ${{ matrix.board.name }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Bruce-${{ matrix.board.env }} | |
path: Bruce-*.bin | |
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: ~/BruceArtifacts | |
- name: Clone Bruce repository and switch to WebPage branch | |
run: | | |
git fetch origin | |
git checkout WebPage || git checkout -b WebPage origin/WebPage | |
- name: Move artifacts to the correct folders | |
run: | | |
set -x | |
pwd | |
ls -all | |
tree | |
if [ "${{ github.ref_type }}" != "tag" ]; then | |
mv -f ~/BruceArtifacts/*/*.bin ./BetaRelease | |
elif [ "${{ github.ref_type }}" == "tag" ]; then | |
mv -f ~/BruceArtifacts/*/*.bin ./LastRelease | |
fi | |
- name: Commit and push changes | |
run: | | |
git config user.name "GitHub Actions" | |
git config user.email "[email protected]" | |
git add BetaRelease LastRelease | |
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: bruce_version | |
name: Get Version | |
run: | | |
set -x | |
if [[ "${{ github.ref_type }}" == "tag" ]]; then | |
version=${{ github.ref_name }} | |
else | |
version="${GITHUB_SHA::7}" | |
fi | |
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.bruce_version.outputs.version }} | |
uses: softprops/action-gh-release@v1 | |
with: | |
name: Bruce Release ${{ steps.bruce_version.outputs.version }} | |
tag_name: ${{ steps.bruce_version.outputs.version }} | |
generate_release_notes: true | |
files: | | |
Bruce-*.bin |