diff --git a/.github/workflows/pio.yml b/.github/workflows/pio.yml index 33a86403..53f1cce3 100644 --- a/.github/workflows/pio.yml +++ b/.github/workflows/pio.yml @@ -3,9 +3,39 @@ name: PlatformIO CI on: [push] jobs: - build: + 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.9' + - name: Install PlatformIO Core + run: pip install --upgrade platformio + - name: Get default environments + id: envs + run: | + echo -n "environments=" >> $GITHUB_OUTPUT + jq -c -n '$ARGS.positional' --args $(pio project config --json-output | jq -cr '.[][0]' | grep 'env:'| awk -F: '{ print $2" "}' | tr -d '\n') >> $GITHUB_OUTPUT + cat $GITHUB_OUTPUT + outputs: + environments: ${{ steps.envs.outputs.environments }} + build: + runs-on: ubuntu-latest + needs: get_default_envs + strategy: + fail-fast: false + matrix: + environment: ${{ fromJSON(needs.get_default_envs.outputs.environments) }} steps: - uses: actions/checkout@v3 with: @@ -15,7 +45,7 @@ jobs: path: | ~/.cache/pip ~/.platformio/.cache - key: ${{ runner.os }}-pio + key: ${{ runner.os }}-${{ matrix.environment}}-${{ hashFiles('platformio.ini') }} - uses: actions/setup-python@v4 with: python-version: '3.9' @@ -29,11 +59,10 @@ jobs: echo "git_hash=${git_hash}" >> $GITHUB_ENV echo "git_branch=${git_branch}" >> $GITHUB_ENV - name: Build PlatformIO Project - run: pio run + run: pio run -e ${{ matrix.environment }} - name: 'Upload Artifact' uses: actions/upload-artifact@v3 with: - name: StarMod-esp32dev-${{env.git_branch}}-${{env.git_hash}}.bin - path: .pio/build/esp32dev/firmware.bin - retention-days: 30 - + name: StarMod-${{ matrix.environment }}-${{env.git_branch}}-${{env.git_hash}}.bin + path: .pio/build/${{ matrix.environment }}/firmware.bin + retention-days: 30