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 "environments=$(pio project config --json-output | jq -cr '.[1][1][0][1]|split(",")')" >> $GITHUB_OUTPUT 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: Get tags run: git fetch --force --tags origin - 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 - 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.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: - name: Checkout uses: actions/checkout@v3 - name: Build Changelog id: github_release uses: mikepenz/release-changelog-builder-action@v3 with: failOnError: true commitMode: true configuration: ".github/workflows/config/release-notes-config.json" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: actions/download-artifact@v3 with: path: artifacts/ - name: Create ZIPs run: | ls -R sudo apt install zip cd artifacts for i in */; do zip -r "${i%/}.zip" "$i"; done for i in */; do cp ${i}opendtu-*.bin ./; done - name: Create release uses: softprops/action-gh-release@v1 with: body: ${{steps.github_release.outputs.changelog}} draft: False files: | artifacts/*.zip, artifacts/*.bin env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}