1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- ---
- # 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/plugin/**/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/cloud-authentication/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@v7
- 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'
- }}
|