diff --git a/.github/workflows/pio.yml b/.github/workflows/pio.yml index 33a86403..f32b0628 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: @@ -14,8 +44,8 @@ jobs: with: path: | ~/.cache/pip - ~/.platformio/.cache - key: ${{ runner.os }}-pio + ~/.platformio + key: ${{ runner.os }}-${{ matrix.environment}} - uses: actions/setup-python@v4 with: python-version: '3.9' @@ -25,15 +55,33 @@ jobs: id: vars run: | git_hash=$(git rev-parse --short "$GITHUB_SHA") - git_branch=${GITHUB_REF#refs/heads/} echo "git_hash=${git_hash}" >> $GITHUB_ENV - echo "git_branch=${git_branch}" >> $GITHUB_ENV + echo "git_ref=${GITHUB_REF_NAME}" >> $GITHUB_ENV + echo "PLATFORMIO_BUILD_CACHE_DIR=$HOME/.platformio/.cache" >> $GITHUB_ENV - name: Build PlatformIO Project - run: pio run + run: pio run -e ${{ matrix.environment }} + - name: Rename Bin + run: mv .pio/build/${{ matrix.environment }}/firmware.bin StarMod-${{ matrix.environment }}-${{env.git_ref}}-${{env.git_hash}}.bin - 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 + path: StarMod-${{ matrix.environment }}-${{env.git_ref}}-${{env.git_hash}}.bin retention-days: 30 + release: + name: Create Release + runs-on: ubuntu-latest + needs: [build] + if: startsWith(github.ref, 'refs/tags/') + steps: + - uses: actions/download-artifact@v2 + - name: List Artifacts + run: find ./ + - name: Create draft release + uses: softprops/action-gh-release@v1 + with: + draft: True + files: | + artifact/*.bin + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file