name: PlatformIO CI on: [push, pull_request] jobs: get_default_envs: name: Gather Environments runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Cache pip uses: actions/cache@v2 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- - uses: actions/setup-python@v2 - name: Install PlatformIO run: pip install -r requirements.txt - 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@v2 - name: Cache pip uses: actions/cache@v2 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- - name: Cache PlatformIO uses: actions/cache@v2 with: path: ~/.platformio key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} - name: Set up Python uses: actions/setup-python@v2 - name: Install PlatformIO run: pip install -r requirements.txt - name: Build firmware env: WLED_RELEASE: True run: pio run -e ${{ matrix.environment }} - uses: actions/upload-artifact@v2 with: name: firmware-${{ matrix.environment }} path: | build_output/firmware/*.bin build_output/firmware/*.gz - uses: actions/upload-artifact@v2 if: startsWith(github.ref, 'refs/tags/') with: name: firmware-release path: build_output/release/*.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@v2 with: name: firmware-release - name: Create draft release uses: softprops/action-gh-release@v1 with: draft: True files: | *.bin env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}