--- # CI workflow used to regenerate `integrations/integrations.js` and accompanying documentation 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. - 'src/collectors/**/metadata.yaml' - 'src/go/collectors/**/metadata.yaml' - 'src/exporting/**/metadata.yaml' - 'src/health/notifications/**/metadata.yaml' - 'integrations/templates/**' - 'integrations/categories.yaml' - 'integrations/deploy.yaml' - 'integrations/cloud-notifications/metadata.yaml' - 'integrations/gen_integrations.py' 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@v4 with: fetch-depth: 1 submodules: recursive - 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: Generate Integrations Documentation id: generate-integrations-documentation run: | python3 integrations/gen_docs_integrations.py - name: Generate src/collectors/COLLECTORS.md id: generate-collectors-md run: | python3 integrations/gen_doc_collector_page.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@v6 with: token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} commit-message: Regenerate integrations.js branch: integrations-regen title: Regenerate integrations.js body: | Regenerate `integrations/integrations.js`, and documentation 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 }} Prep python env and deps: ${{ steps.prep-deps.outcome }} Generate Integrations: ${{ steps.generate.outcome }} Generate Integrations Documentation: ${{ steps.generate-integrations-documentation.outcome }} Generate src/collectors/COLLECTORS.md: ${{ steps.generate-collectors-md.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' }}