diff --git a/.github/workflows/builder.yml b/.github/workflows/builder.yml index df554ad..89e5193 100644 --- a/.github/workflows/builder.yml +++ b/.github/workflows/builder.yml @@ -15,42 +15,54 @@ on: - go.mod env: - BUILD_NAME: observer # This needs to match the key in the version file - BUILD_TYPE: plugin # Can be plugin, core, supervisor or generic + BUILD_NAME: observer + BUILD_TYPE: plugin jobs: - build: - name: Build plugin + init: + name: Initialize build runs-on: ubuntu-latest + outputs: + architectures: ${{ steps.info.outputs.architectures }} + version: ${{ steps.version.outputs.version }} + channel: ${{ steps.version.outputs.channel }} + publish: ${{ steps.version.outputs.publish }} steps: - name: Checkout the repository uses: actions/checkout@v2 with: fetch-depth: 0 + - name: Get information + id: info + uses: home-assistant/actions/helpers/info@master + - name: Get version id: version uses: home-assistant/actions/helpers/version@master with: type: ${{ env.BUILD_TYPE }} - - name: Initialize git - if: steps.version.outputs.publish == 'true' - uses: home-assistant/actions/helpers/git-init@master - with: - name: ${{ secrets.GIT_NAME }} - email: ${{ secrets.GIT_EMAIL }} - token: ${{ secrets.GIT_TOKEN }} - + build: + name: Build ${{ matrix.arch }} plugin + needs: init + runs-on: ubuntu-latest + strategy: + matrix: + arch: ${{ fromJson(needs.init.outputs.architectures) }} + steps: + - name: Checkout the repository + uses: actions/checkout@v2 + - name: Login to DockerHub - if: steps.version.outputs.publish == 'true' + if: needs.init.outputs.publish == 'true' uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set build arguments - if: steps.version.outputs.publish == 'false' + if: needs.init.outputs.publish == 'false' run: echo "BUILD_ARGS=--test" >> $GITHUB_ENV - name: Build plugin @@ -58,14 +70,31 @@ jobs: with: args: | $BUILD_ARGS \ - --all \ + --${{ matrix.arch }} \ --target /data \ - --generic ${{ steps.version.outputs.version }} + --generic ${{ needs.init.outputs.version }} + + version: + name: Update version + needs: ["init", "build"] + runs-on: ubuntu-latest + steps: + - name: Checkout the repository + if: needs.init.outputs.publish == 'true' + uses: actions/checkout@v2 + + - name: Initialize git + if: needs.init.outputs.publish == 'true' + uses: home-assistant/actions/helpers/git-init@master + with: + name: ${{ secrets.GIT_NAME }} + email: ${{ secrets.GIT_EMAIL }} + token: ${{ secrets.GIT_TOKEN }} - name: Update version file - if: steps.version.outputs.publish == 'true' + if: needs.init.outputs.publish == 'true' uses: home-assistant/actions/helpers/version-push@master with: key: ${{ env.BUILD_NAME }} - version: ${{ steps.version.outputs.version }} - channel: ${{ steps.version.outputs.channel }} + version: ${{ needs.init.outputs.version }} + channel: ${{ needs.init.outputs.channel }}