diff --git a/.github/workflows/dispatch-release.yml b/.github/workflows/dispatch-release.yml new file mode 100644 index 00000000..d126182e --- /dev/null +++ b/.github/workflows/dispatch-release.yml @@ -0,0 +1,38 @@ +name: Dispatch release to create-swarm-app + +on: + release: + types: [published] + +jobs: + dispatch: + if: > + github.event.release.prerelease == false && + github.event.release.draft == false && + !contains(github.event.release.tag_name, '-') + runs-on: ubuntu-latest + permissions: {} + + steps: + - name: Generate GitHub App token + id: app-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.BEE_RUNNER_APP_ID }} + private-key: ${{ secrets.BEE_RUNNER_KEY }} + repositories: create-swarm-app + + - name: Dispatch release event to create-swarm-app + uses: actions/github-script@v7 + with: + github-token: ${{ steps.app-token.outputs.token }} + script: | + await github.rest.repos.createDispatchEvent({ + owner: 'ethersphere', + repo: 'create-swarm-app', + event_type: 'bee-js-released', + client_payload: { + version: context.payload.release.tag_name.replace(/^v/, ''), + release_url: context.payload.release.html_url + } + }) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 763668f2..da4cebcf 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -51,11 +51,39 @@ jobs: echo "exit_code=$?" >> $GITHUB_OUTPUT set -e - - name: Compare coverage + - name: Upload coverage + if: github.ref == 'refs/heads/master' + uses: actions/upload-artifact@v4 + with: + name: coverage-master + path: test/coverage/coverage-summary.json + + - name: Get master run ID if: github.ref != 'refs/heads/master' - run: - npxie coverage-comparison "${{ github.repository }}" "master" "${{ github.head_ref }}" - "test/coverage/coverage-summary.json" "${{ github.event.pull_request.number }}" "${{ secrets.GITHUB_TOKEN }}" + id: get-run-id + continue-on-error: true + env: + GH_TOKEN: ${{ github.token }} + run: | + RUN_ID=$(gh run list --branch master --workflow tests.yaml --status success --limit 1 --json databaseId --jq '.[0].databaseId') + if [ -z "$RUN_ID" ]; then exit 0; fi + echo "run-id=$RUN_ID" >> $GITHUB_OUTPUT + + - name: Download master coverage + if: github.ref != 'refs/heads/master' + id: download-coverage + continue-on-error: true + uses: actions/download-artifact@v4 + with: + name: coverage-master + github-token: ${{ secrets.GITHUB_TOKEN }} + run-id: ${{ steps.get-run-id.outputs.run-id }} + path: coverage-master + + - name: Compare coverage + if: github.ref != 'refs/heads/master' && steps.download-coverage.outcome == 'success' + run: | + npxie coverage-comparison "${{ github.repository }}" "./coverage-master/coverage-summary.json" "test/coverage/coverage-summary.json" "${{ github.event.pull_request.number }}" "${{ secrets.GITHUB_TOKEN }}" - name: Fail if tests failed if: steps.tests.outputs.exit_code != '0'