this was already in use by "Gather Environments" and "Build Environments", but neither in "Create Release" nor "Yarn Linting" nor "cpplint".
184 lines
5.6 KiB
YAML
184 lines
5.6 KiB
YAML
name: OpenDTU-OnBattery Build
|
|
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- docs/**
|
|
- '**/*.md'
|
|
branches:
|
|
- master
|
|
- development
|
|
tags-ignore:
|
|
- 'v**'
|
|
pull_request:
|
|
paths-ignore:
|
|
- docs/**
|
|
- '**/*.md'
|
|
|
|
jobs:
|
|
get_default_envs:
|
|
name: Gather Environments
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Cache pip
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.cache/pip
|
|
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-pip-
|
|
|
|
- uses: actions/setup-python@v5
|
|
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@v4
|
|
|
|
- name: Get tags
|
|
run: git fetch --force --tags origin
|
|
|
|
- name: Create and switch to a meaningful branch for pull-requests
|
|
if: github.event_name == 'pull_request'
|
|
run: |
|
|
OWNER=${{ github.repository_owner }}
|
|
NAME=${{ github.event.repository.name }}
|
|
ID=${{ github.event.pull_request.number }}
|
|
DATE=$(date +'%Y%m%d%H%M')
|
|
git switch -c ${OWNER}/${NAME}/pr${ID}-${DATE}
|
|
|
|
- name: Cache pip
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.cache/pip
|
|
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-pip-
|
|
|
|
- name: Cache PlatformIO
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.platformio
|
|
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.x"
|
|
|
|
- name: Install PlatformIO
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install --upgrade platformio setuptools
|
|
|
|
- name: Setup Node.js and yarn
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "20"
|
|
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-onbattery-${{ matrix.environment }}.bin
|
|
|
|
- name: Rename Factory Firmware
|
|
run: mv .pio/build/${{ matrix.environment }}/firmware.factory.bin .pio/build/${{ matrix.environment }}/opendtu-onbattery-${{ matrix.environment }}.factory.bin
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: opendtu-onbattery-${{ matrix.environment }}
|
|
path: |
|
|
.pio/build/${{ matrix.environment }}/opendtu-onbattery-${{ matrix.environment }}.bin
|
|
!.pio/build/generic_esp32_4mb_no_ota/opendtu-onbattery-generic_esp32_4mb_no_ota.bin
|
|
.pio/build/${{ matrix.environment }}/opendtu-onbattery-${{ matrix.environment }}.factory.bin
|
|
|
|
release:
|
|
name: Create Release
|
|
runs-on: ubuntu-latest
|
|
needs: [get_default_envs, build]
|
|
if: startsWith(github.ref, 'refs/tags/2')
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Get tags
|
|
run: git fetch --force --tags origin
|
|
|
|
- name: Get openDTU core release
|
|
run: |
|
|
echo "OPEN_DTU_CORE_RELEASE=$(git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags | grep 'refs/tags/v' | tail -1 | sed 's#.*/##' | sed 's/ .*//')" >> $GITHUB_ENV
|
|
|
|
# disabled as uploading the changed gist failed repeatedly.
|
|
# maybe the token in secrets.GIST_SECRET has expired?
|
|
# need help from repo owner @helgeerbe to fix this.
|
|
# - name: Create openDTU-core-release-Badge
|
|
# uses: schneegans/dynamic-badges-action@v1.6.0
|
|
# with:
|
|
# auth: ${{ secrets.GIST_SECRET }}
|
|
# gistID: 68b47cc8c8994d04ab3a4fa9d8aee5e6
|
|
# filename: openDTUcoreRelease.json
|
|
# label: based on original OpenDTU
|
|
# message: ${{ env.OPEN_DTU_CORE_RELEASE }}
|
|
# color: lightblue
|
|
|
|
- name: Build Changelog
|
|
id: github_release
|
|
uses: mikepenz/release-changelog-builder-action@v4
|
|
with:
|
|
failOnError: true
|
|
commitMode: true
|
|
configuration: ".github/workflows/config/release-notes-config.json"
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
path: artifacts/
|
|
|
|
- name: Move all files to the same location
|
|
run: |
|
|
ls -R
|
|
cd artifacts
|
|
for i in */; do cp ${i}opendtu-onbattery-*.bin ./; done
|
|
|
|
- name: Create release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
body: ${{steps.github_release.outputs.changelog}}
|
|
draft: False
|
|
files: |
|
|
artifacts/*.zip, artifacts/*.bin
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|