diff --git a/.github/build.yml b/.github/build.yml new file mode 100644 index 0000000..8bfa305 --- /dev/null +++ b/.github/build.yml @@ -0,0 +1,83 @@ +name: Build + +on: + workflow_dispatch: + push: + branches: + - main + pull_request: + schedule: + - cron: '0 4 * * 1' + +jobs: + build: + name: Build ${{ matrix.firmware.name }} + runs-on: ubuntu-latest + strategy: + matrix: + firmware: + - file: v2board.yaml + name: V2 Board + manifest_filename: v2board-manifest.json + fail-fast: false + steps: + - name: Checkout source code + uses: actions/checkout@v3.3.0 + - name: Build firmware + uses: esphome/build-action@v1.8.0 + id: esphome-build + with: + yaml_file: ${{ matrix.firmware.file }} + version: latest + - name: Copy firmware and manifest + run: | + mkdir output + mv ${{ steps.esphome-build.outputs.name }} output/ + jq -s '{"name": "${{ matrix.firmware.name }}", "version": "${{ steps.esphome-build.outputs.esphome-version }}", "home_assistant_domain": "esphome", "new_install_skip_erase": false, "builds":.}' output/${{ steps.esphome-build.outputs.name }}/manifest.json > output/${{ matrix.firmware.manifest_filename }} + + - name: Upload artifact + uses: actions/upload-artifact@v3.1.2 + with: + name: ${{ matrix.firmware.name }} + path: output + + + consolidate: + if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' + name: Consolidate firmwares + runs-on: ubuntu-latest + needs: build + steps: + - name: Checkout source code + uses: actions/checkout@v3 + - name: Download built firmwares + uses: actions/download-artifact@v3 + with: + path: firmwares + - name: Copy files + run: |- + mkdir output + cp -R static/* output/ + cp -R firmwares/*/* output/ + - name: Upload GitHub Pages artifact + uses: actions/upload-pages-artifact@v1.0.7 + with: + path: output + + deploy: + if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' + name: Deploy to GitHub Pages + runs-on: ubuntu-latest + needs: consolidate + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Setup Pages + uses: actions/configure-pages@v2 + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v1.2.3