diff options
Diffstat (limited to '.github/workflows/generate-integrations.yml')
-rw-r--r-- | .github/workflows/generate-integrations.yml | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/.github/workflows/generate-integrations.yml b/.github/workflows/generate-integrations.yml new file mode 100644 index 00000000..599cefbc --- /dev/null +++ b/.github/workflows/generate-integrations.yml @@ -0,0 +1,98 @@ +--- +# CI workflow used to regenerate `integrations/integrations.js` when +# relevant source files are changed. +name: Generate Integrations +on: + push: + branches: + - master + paths: # If any of these files change, we need to regenerate integrations.js. + - 'collectors/**/metadata.yaml' + - 'exporting/**/metadata.yaml' + - 'health/notifications/**/metadata.yaml' + - 'integrations/templates/**' + - 'integrations/categories.yaml' + - 'integrations/deploy.yaml' + - 'integrations/cloud-notifications/metadata.yaml' + - 'integrations/gen_integrations.py' + - 'packaging/go.d.version' + workflow_dispatch: null +concurrency: # This keeps multiple instances of the job from running concurrently for the same ref. + group: integrations-${{ github.ref }} + cancel-in-progress: true +jobs: + generate-integrations: + name: Generate Integrations + runs-on: ubuntu-latest + if: github.repository == 'netdata/netdata' + steps: + - name: Checkout Agent + id: checkout-agent + uses: actions/checkout@v3 + with: + fetch-depth: 1 + submodules: recursive + - name: Get Go Ref + id: get-go-ref + run: echo "go_ref=$(cat packaging/go.d.version)" >> "${GITHUB_ENV}" + - name: Checkout Go + id: checkout-go + uses: actions/checkout@v3 + with: + fetch-depth: 1 + path: go.d.plugin + repository: netdata/go.d.plugin + ref: ${{ env.go_ref }} + - name: Prepare Dependencies + id: prep-deps + run: | + sudo apt-get install python3-venv + python3 -m venv ./virtualenv + source ./virtualenv/bin/activate + pip install jsonschema referencing jinja2 ruamel.yaml + - name: Generate Integrations + id: generate + run: | + source ./virtualenv/bin/activate + python3 integrations/gen_integrations.py + - name: Clean Up Temporary Data + id: clean + run: rm -rf go.d.plugin virtualenv + - name: Create PR + id: create-pr + uses: peter-evans/create-pull-request@v5 + with: + token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} + commit-message: Regenerate integrations.js + branch: integrations-regen + title: Regenerate integrations.js + body: | + Regenerate `integrations/integrations.js` based on the + latest code. + + This PR was auto-generated by + `.github/workflows/generate-integrations.yml`. + - name: Failure Notification + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_COLOR: 'danger' + SLACK_FOOTER: '' + SLACK_ICON_EMOJI: ':github-actions:' + SLACK_TITLE: 'Integrations regeneration failed:' + SLACK_USERNAME: 'GitHub Actions' + SLACK_MESSAGE: |- + ${{ github.repository }}: Failed to create PR rebuilding integrations.js + Checkout Agent: ${{ steps.checkout-agent.outcome }} + Get Go Ref: ${{ steps.get-go-ref.outcome }} + Checkout Go: ${{ steps.checkout-go.outcome }} + Prepare Dependencies: ${{ steps.prep-deps.outcome }} + Generate Integrations: ${{ steps.generate.outcome }} + Clean Up Temporary Data: ${{ steps.clean.outcome }} + Create PR: ${{ steps.create-pr.outcome }} + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} + if: >- + ${{ + failure() + && startsWith(github.ref, 'refs/heads/master') + && github.repository == 'netdata/netdata' + }} |