name: OpenDTU Build on: push: paths-ignore: - docs/** - '**/*.md' pull_request: paths-ignore: - docs/** - '**/*.md' jobs: get_default_envs: name: Gather Environments runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Cache pip uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- - uses: actions/setup-python@v4 with: python-version: "3.x" - name: Install PlatformIO run: | python -m pip install --upgrade pip pip install --upgrade platformio - name: Get default environments id: envs run: | echo "::set-output name=environments::$(pio project config --json-output | jq -cr '.[0][1][0][1]')" outputs: environments: ${{ steps.envs.outputs.environments }} build: name: Build Enviornments runs-on: ubuntu-latest needs: get_default_envs strategy: matrix: environment: ${{ fromJSON(needs.get_default_envs.outputs.environments) }} steps: - uses: actions/checkout@v3 - name: Cache pip uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- - name: Cache PlatformIO uses: actions/cache@v3 with: path: ~/.platformio key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.x" - name: Install PlatformIO run: | python -m pip install --upgrade pip pip install --upgrade platformio - name: Setup Node.js and yarn uses: actions/setup-node@v3 with: node-version: "18" cache: "yarn" cache-dependency-path: "webapp/yarn.lock" - name: Install WebApp dependencies run: yarn --cwd webapp install --frozen-lockfile - name: Build WebApp run: yarn --cwd webapp build - name: Build firmware run: pio run -e ${{ matrix.environment }} - name: Rename Firmware run: mv .pio/build/${{ matrix.environment }}/firmware.bin .pio/build/${{ matrix.environment }}/opendtu-${{ matrix.environment }}.bin - name: Copy boot_app0.bin run: cp ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin .pio/build/${{ matrix.environment }}/boot_app0.bin - name: Copy bootloader_dio_40m.bin run: cp ~/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.bin .pio/build/${{ matrix.environment }}/bootloader_dio_40m.bin - uses: actions/upload-artifact@v3 with: name: opendtu-${{ matrix.environment }} path: | .pio/build/${{ matrix.environment }}/opendtu-${{ matrix.environment }}.bin .pio/build/${{ matrix.environment }}/partitions.bin .pio/build/${{ matrix.environment }}/bootloader_dio_40m.bin .pio/build/${{ matrix.environment }}/boot_app0.bin - uses: actions/upload-artifact@v3 if: startsWith(github.ref, 'refs/tags/') with: name: opendtu-release path: | .pio/build/${{ matrix.environment }}/opendtu-${{ matrix.environment }}.bin .pio/build/${{ matrix.environment }}/partitions.bin .pio/build/${{ matrix.environment }}/bootloader_dio_40m.bin .pio/build/${{ matrix.environment }}/boot_app0.bin release: name: Create Release runs-on: ubuntu-latest needs: [get_default_envs, build] if: startsWith(github.ref, 'refs/tags/') steps: - uses: actions/download-artifact@v3 with: name: opendtu-release - name: Create draft release uses: softprops/action-gh-release@v1 with: draft: True files: | *.bin env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}