From 55cf5809f1e6f515d82365e167afc5266ec5870c Mon Sep 17 00:00:00 2001 From: ztefanie Date: Wed, 26 Feb 2025 09:34:20 +0100 Subject: [PATCH] chore(element-tempaltes): Add github action fro bumping element template docs links --- .../BUMP_ELEMENT_TEMPLATE_DOCS_LINKS.yml | 72 +++++++++++++++++ ...collect_all_element_template_docs_links.sh | 47 +++++++++++ connectors-element-template-links.txt | 78 +++++++++++++++++++ 3 files changed, 197 insertions(+) create mode 100644 .github/workflows/BUMP_ELEMENT_TEMPLATE_DOCS_LINKS.yml create mode 100755 .github/workflows/scripts/collect_all_element_template_docs_links.sh create mode 100644 connectors-element-template-links.txt diff --git a/.github/workflows/BUMP_ELEMENT_TEMPLATE_DOCS_LINKS.yml b/.github/workflows/BUMP_ELEMENT_TEMPLATE_DOCS_LINKS.yml new file mode 100644 index 0000000000..2629b869b4 --- /dev/null +++ b/.github/workflows/BUMP_ELEMENT_TEMPLATE_DOCS_LINKS.yml @@ -0,0 +1,72 @@ +name: bump_element_template_docs_links + +on: + workflow_dispatch: + pull_request: + types: [ opened, synchronize, reopened ] #TODO remove, just for testing + schedule: + - cron: "0 3 1 * *" # Runs monthly on the 1st at 03:00 UTC + +permissions: + contents: write # Allows pushing changes to the target repo + pull-requests: write # Allows creating a PR + +jobs: + bump_element_template_docs_links: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Collect connector template links + run: | + chmod +x ./.github/workflows/scripts/collect_all_element_template_docs_links.sh + ./.github/workflows/scripts/collect_all_element_template_docs_links.sh + shell: bash + + - name: Checkout camunda-docs repo + uses: actions/checkout@v4 + with: + repository: camunda/camunda-docs + token: ${{ secrets.GITHUB_TOKEN }} # Authenticate with GitHub token + path: camunda-docs + + - name: Compare files + id: check_diff + run: | + cd camunda-docs + if diff -q connectors-element-template-links.txt ../connectors-element-template-links.txt > /dev/null; then + echo "No changes to commit." + echo "NO_CHANGES=true" >> $GITHUB_ENV + else + echo "Changes detected." + echo "NO_CHANGES=false" >> $GITHUB_ENV + fi + + - name: Exit if no changes + if: env.NO_CHANGES == 'true' + run: echo "No changes detected, exiting successfully." + + - name: Create branch, commit, and push changes + if: env.NO_CHANGES == 'false' + run: | + cd camunda-docs + BRANCH_NAME="update-connector-links-$(date +'%m-%Y')" + git checkout -b "$BRANCH_NAME" + mv ../connectors-element-template-links.txt connectors-element-template-links.txt + git add connectors-element-template-links.txt + git commit -m "Update connector element template links for $(date +'%B %Y')" + git push origin "$BRANCH_NAME" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Open a pull request in camunda-docs + if: env.NO_CHANGES == 'false' + uses: peter-evans/create-pull-request@v6 + with: + token: ${{ secrets.CAMUNDA_DOCS_PAT }} + repository: camunda/camunda-docs + branch: update-connector-links-$(date +'%m-%Y') + title: "Update Connector Element Template Links - $(date +'%B %Y')" + body: "This PR updates the connector element template links for $(date +'%B %Y')." + base: main diff --git a/.github/workflows/scripts/collect_all_element_template_docs_links.sh b/.github/workflows/scripts/collect_all_element_template_docs_links.sh new file mode 100755 index 0000000000..d1417b7a9f --- /dev/null +++ b/.github/workflows/scripts/collect_all_element_template_docs_links.sh @@ -0,0 +1,47 @@ +#!/bin/bash +set -e + +DOCUSAURUS_BASE_URL="https://docs.camunda.io/" +GITHUB_FILE_URL="https://raw.githubusercontent.com/camunda/camunda-docs/d50f0a316cc629c43b2038d1a814a70dbac17add/connectors-element-template-links.txt" +DOCS_REPO_LINK_FILE="connector-element-template-links-download.txt" +CURRENT_LINK_FILE="connector-element-template-links-current.txt" +NEW_LINK_FILE="connectors-element-template-links.txt" + +# Clear files +: > "$DOCS_REPO_LINK_FILE" +: > "$CURRENT_LINK_FILE" +: > "$NEW_LINK_FILE" + +echo "Downloading existing links file from docs repo..." +curl -sL "$GITHUB_FILE_URL" | grep "^$DOCUSAURUS_BASE_URL" > "$DOCS_REPO_LINK_FILE" + + +echo "Extracting links from connectors repo..." + +extract_links_from_file() { + local file_path="$1" + grep -oE "\"$DOCUSAURUS_BASE_URL[^\"]+\"" "$file_path" | sed -E "s|\"||g; s|[\\/]$||g" +} + +# Find all JSON files in "element-templates" directories, extract documentation links, +find . -type d -name "element-templates" | while read -r dir; do + find "$dir" -type f -name "*.json" | while read -r file; do + extract_links_from_file "$file" + done +done | sort -u >> "$CURRENT_LINK_FILE" # Sort & remove duplicates before writing + + +echo "Merging links from docs file and new file..." +cat "$CURRENT_LINK_FILE" "$DOCS_REPO_LINK_FILE" | sort -u > "$NEW_LINK_FILE" + +echo -e "# This file contains links from connectors element templates to the documentation +# This file is used to check that we don't accidentally break these links\n\n$(cat "$NEW_LINK_FILE")" > "$NEW_LINK_FILE" + +rm $DOCS_REPO_LINK_FILE +rm $CURRENT_LINK_FILE + +echo "Script completed successfully." +exit 0 + + + diff --git a/connectors-element-template-links.txt b/connectors-element-template-links.txt new file mode 100644 index 0000000000..19653a676b --- /dev/null +++ b/connectors-element-template-links.txt @@ -0,0 +1,78 @@ +# This file contains links from connectors element templates to the documentation +# This file is used to check that we don't accidentally break these links + +https://docs.camunda.io/docs/apis-tools/camunda-api-rest/specifications/upload-document-alpha/ +https://docs.camunda.io/docs/apis-tools/operate-api/specifications/search +https://docs.camunda.io/docs/apis-tools/operate-api/specifications/search/ +https://docs.camunda.io/docs/components/concepts/messages/#message-correlation-overview +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/amazon-bedrock +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/amazon-dynamodb +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/amazon-dynamodb/ +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/amazon-eventbridge/?awseventbridge=inbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/amazon-eventbridge/?awseventbridge=outbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/amazon-s3 +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/amazon-sns/?amazonsns=inbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/amazon-sns/?amazonsns=outbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/amazon-sqs/?amazonsqs=inbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/amazon-sqs/?amazonsqs=outbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/asana +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/automation-anywhere +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/automation-anywhere/ +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/aws-lambda +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/aws-lambda/#aws-authentication-types +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/azure-open-ai +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/blueprism +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/box +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/easy-post +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/email +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/github/?github=inbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/github/?github=outbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/googledrive +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/google-gemini +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/google-maps-platform +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/google-sheets +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/google-sheets/#add-values-to-spreadsheet +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/google-sheets/#create-empty-column-or-row +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/google-sheets/#create-row +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/google-sheets/#how-can-i-define-which-column-will-be-deleted +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/google-sheets/#what-is-a-row-index +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/google-sheets/#what-is-a-worksheet-index +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/hugging-face +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/kafka/?kafka=inbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/kafka/?kafka=outbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/microsoft-o365-mail +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/microsoft-teams +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/openai +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/operate +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/rabbitmq/?rabbitmq=inbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/rabbitmq/?rabbitmq=outbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/rabbitmq/?rabbitmq=outbound#routing-data +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/salesforce +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/sendgrid +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/slack/?slack=inbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/slack/?slack=outbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/twilio/?twilio=inbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/twilio/?twilio=outbound +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/uipath +https://docs.camunda.io/docs/components/connectors/out-of-the-box-connectors/whatsapp +https://docs.camunda.io/docs/components/connectors/protocol/graphql +https://docs.camunda.io/docs/components/connectors/protocol/graphql/#querymutation +https://docs.camunda.io/docs/components/connectors/protocol/http-webhook +https://docs.camunda.io/docs/components/connectors/protocol/polling +https://docs.camunda.io/docs/components/connectors/protocol/rest +https://docs.camunda.io/docs/components/connectors/protocol/soap +https://docs.camunda.io/docs/components/connectors/use-connectors/ +https://docs.camunda.io/docs/components/connectors/use-connectors/#bpmn-errors +https://docs.camunda.io/docs/components/connectors/use-connectors/#result-expression +https://docs.camunda.io/docs/components/connectors/use-connectors/#result-variable +https://docs.camunda.io/docs/components/modeler/bpmn/none-events +https://docs.camunda.io/docs/guides +https://docs.camunda.io/docs/guides/setup-client-connection-credentials +https://docs.camunda.io/docs/next/apis-tools/camunda-api-rest/specifications/create-document-link/ +https://docs.camunda.io/docs/next/components/connectors/out-of-the-box-connectors/amazon-comprehend +https://docs.camunda.io/docs/next/components/connectors/out-of-the-box-connectors/amazon-sagemaker +https://docs.camunda.io/docs/next/components/connectors/out-of-the-box-connectors/amazon-textract +https://docs.camunda.io/docs/next/components/connectors/out-of-the-box-connectors/sql +https://docs.camunda.io/docs/next/components/connectors/out-of-the-box-connectors/sql/#connection +https://docs.camunda.io/docs/next/components/connectors/out-of-the-box-connectors/sql/#uri-connection +https://docs.camunda.io/docs/next/components/connectors/out-of-the-box-connectors/sql/#variables