Update main.yml #267
Workflow file for this run
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: PlatformIO CI | |
on: | |
workflow_dispatch: | |
push: | |
paths-ignore: | |
- "**.md" | |
jobs: | |
job_build_modulecode: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache pio | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cache/pip | |
~/.platformio/.cache | |
key: ${{ runner.os }}-pio | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Install PlatformIO | |
run: pip install --upgrade platformio | |
- name: Create folders | |
run: | | |
mkdir -p ./ESPController/data/avr | |
mkdir -p ~/OUTPUT | |
mkdir -p ~/OUTPUT/Controller | |
mkdir -p ~/OUTPUT/ControllerBoardTest | |
mkdir -p ~/OUTPUT/Modules/HEX | |
mkdir -p ~/OUTPUT/Modules/BIN | |
pwd | |
ls | |
- name: Build code for ATTINY modules | |
run: pio run --project-dir=/home/runner/work/diyBMSv4ESP32/diyBMSv4ESP32/ATTINYCellModule --project-conf=/home/runner/work/diyBMSv4ESP32/diyBMSv4ESP32/ATTINYCellModule/platformio.ini | |
- name: Copy output | |
run: | | |
cp ./ATTINYCellModule/.pio/build/V*/*.hex ~/OUTPUT/Modules/HEX/ | |
cp ./ATTINYCellModule/.pio/build/V*/*.bin ~/OUTPUT/Modules/BIN/ | |
- name: Build code for STM32 modules | |
run: pio run --project-dir=/home/runner/work/diyBMSv4ESP32/diyBMSv4ESP32/STM32All-In-One --project-conf=/home/runner/work/diyBMSv4ESP32/diyBMSv4ESP32/STM32All-In-One/platformio.ini | |
- name: Copy STM32 binary firmware output files | |
run: | | |
cp ./STM32All-In-One/.pio/build/V*/*.bin ~/OUTPUT/Modules/BIN/ | |
- name: Build code for ESP32 controller | |
run: pio run --project-dir=/home/runner/work/diyBMSv4ESP32/diyBMSv4ESP32/ESPController --environment esp32-devkitc --project-conf=/home/runner/work/diyBMSv4ESP32/diyBMSv4ESP32/ESPController/platformio.ini | |
- name: Copy output | |
run: | | |
cp ./ESPController/.pio/build/esp32-devkitc/diybms_controller_firmware_espressif32_esp32-devkitc.bin ~/OUTPUT/Controller/ | |
cp ./ESPController/.pio/build/esp32-devkitc/diybms_controller_firmware_espressif32_esp32-devkitc.elf ~/OUTPUT/Controller/ | |
cp ./ESPController/.pio/build/esp32-devkitc/partitions.bin ~/OUTPUT/Controller/ | |
cp ./ESPController/.pio/build/esp32-devkitc/bootloader.bin ~/OUTPUT/Controller/ | |
cp ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin ~/OUTPUT/Controller/ | |
cp ./ESPController/data/avr/manifest.json ~/OUTPUT/Modules/ | |
- name: Build File System Image for ESP32 | |
run: pio run --project-dir=/home/runner/work/diyBMSv4ESP32/diyBMSv4ESP32/ESPController --target buildfs --environment esp32-devkitc | |
- name: Copy output | |
run: | | |
cp ./ESPController/.pio/build/esp32-devkitc/diybms_controller_filesystemimage_espressif32_esp32-devkitc.bin ~/OUTPUT/Controller/ | |
- name: Get latest esptool / Build single ESP32 image | |
run: | | |
git clone https://github.com/espressif/esptool.git | |
cd esptool | |
pip install --user -e . | |
cd ~ | |
python -m esptool --chip esp32 merge_bin -o ~/OUTPUT/Controller/esp32-controller-firmware-complete.bin --flash_mode=keep --flash_size 4MB 0x1000 ~/OUTPUT/Controller/bootloader.bin 0x8000 ~/OUTPUT/Controller/partitions.bin 0xe000 ~/OUTPUT/Controller/boot_app0.bin 0x10000 ~/OUTPUT/Controller/diybms_controller_firmware_espressif32_esp32-devkitc.bin 0x1C0000 ~/OUTPUT/Controller/diybms_controller_firmware_espressif32_esp32-devkitc.bin 0x370000 ~/OUTPUT/Controller/diybms_controller_filesystemimage_espressif32_esp32-devkitc.bin | |
- name: Board test code for ESP32 controller | |
run: pio run --project-dir=/home/runner/work/diyBMSv4ESP32/diyBMSv4ESP32/ESP32BoardTest --environment esp32-devkitc --project-conf=/home/runner/work/diyBMSv4ESP32/diyBMSv4ESP32/ESP32BoardTest/platformio.ini | |
- name: Copy board test output | |
run: | | |
cp ./ESP32BoardTest/.pio/build/esp32-devkitc/diybms_boardtest_espressif32_esp32-devkitc.bin ~/OUTPUT/ControllerBoardTest/ | |
- name: Publish Artifacts 1 | |
uses: actions/upload-artifact@v4 | |
with: | |
name: DIYBMS-Compiled | |
path: ~/OUTPUT | |
if-no-files-found: error | |
job_zip_code: | |
runs-on: ubuntu-latest | |
needs: [job_build_modulecode] | |
steps: | |
- name: Download artifact DIYBMS-Compiled | |
uses: actions/download-artifact@v4 | |
with: | |
name: DIYBMS-Compiled | |
- name: Rename over-the-air firmware | |
run: mv ./Controller/diybms_controller_firmware_espressif32_esp32-devkitc.bin ./Controller/esp32-controller-firmware-over-the-air.bin | |
- name: Display structure of downloaded files | |
run: ls -R | |
- name: ZIP output for release | |
run: | | |
zip release.zip ./Controller/esp32-controller-firmware-complete.bin | |
zip release.zip ./Controller/esp32-controller-firmware-over-the-air.bin | |
zip release.zip ./ControllerBoardTest/diybms_boardtest_espressif32_esp32-devkitc.bin | |
zip release.zip ./Modules/manifest.json | |
zip release.zip ./Modules/HEX/*.* | |
zip release.zip ./Modules/BIN/module_fw_V490*.* | |
- name: Get current date | |
id: date | |
run: echo "dt=$(date +'%Y-%m-%d-%H-%M')" >> $GITHUB_ENV | |
- name: Rename ZIP | |
run: mv release.zip release_${{ env.dt }}.zip | |
- name: Publish Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: DIYBMS-Release-Artifact-${{ env.dt }} | |
path: | | |
./Controller/*.* | |
./Modules/manifest.json | |
./Modules/HEX/*.* | |
./Modules/BIN/module_fw_V490*.bin | |
if-no-files-found: error | |
- name: Create Release Files on MASTER branch only | |
id: create_release | |
uses: actions/create-release@v1 | |
if: github.ref == 'refs/heads/master' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token | |
with: | |
tag_name: Tag-${{ env.dt }} | |
release_name: Release-${{ env.dt }} | |
body: | | |
Automatically generated release | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
id: upload-release-asset | |
uses: actions/upload-release-asset@v1 | |
if: github.ref == 'refs/heads/master' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./release_${{ env.dt }}.zip | |
asset_name: Compiled_Firmware_${{ env.dt }}.zip | |
asset_content_type: application/zip |