From ded7c0ce5317a7714524c0483a7c281ca3aeeff6 Mon Sep 17 00:00:00 2001 From: Updater DevOps Admin <78870838+updater-devopsadmin@users.noreply.github.com> Date: Thu, 12 Oct 2023 17:49:46 -0400 Subject: [PATCH 1/7] ci: use Terraform-managed FOSSA workflow --- .github/workflows/fossa.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/workflows/fossa.yaml diff --git a/.github/workflows/fossa.yaml b/.github/workflows/fossa.yaml new file mode 100644 index 00000000..2a23b3a8 --- /dev/null +++ b/.github/workflows/fossa.yaml @@ -0,0 +1,16 @@ +--- +name: Fossa + +on: + push: + workflow_dispatch: + +jobs: + fossa: + uses: Updater/.github/.github/workflows/fossa.yaml@main + secrets: + fossa-api-key: ${{ secrets.FOSSA_API_KEY }} + token: ${{ secrets.GITHUB_TOKEN }} + with: + repository: ${{ github.repository }} + ref: ${{ github.ref }} From 33b813d2a4ad06e0d4692c380ffd9a5c41032e6d Mon Sep 17 00:00:00 2001 From: Updater DevOps Admin <78870838+updater-devopsadmin@users.noreply.github.com> Date: Mon, 16 Sep 2024 12:42:40 -0400 Subject: [PATCH 2/7] ci: use Terraform-managed FOSSA workflow From 915ec2ff3367c02be5a2efe0086af973d26480fa Mon Sep 17 00:00:00 2001 From: Updater DevOps Admin <78870838+updater-devopsadmin@users.noreply.github.com> Date: Wed, 6 Nov 2024 10:10:48 -0500 Subject: [PATCH 3/7] ci: use Terraform-managed FOSSA workflow --- .github/workflows/fossa.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/fossa.yaml b/.github/workflows/fossa.yaml index 2a23b3a8..367c5e51 100644 --- a/.github/workflows/fossa.yaml +++ b/.github/workflows/fossa.yaml @@ -7,7 +7,7 @@ on: jobs: fossa: - uses: Updater/.github/.github/workflows/fossa.yaml@main + uses: Updater/.github-private/.github/workflows/fossa.yaml@main secrets: fossa-api-key: ${{ secrets.FOSSA_API_KEY }} token: ${{ secrets.GITHUB_TOKEN }} From 8c4ff537cddefc05ae234106526c64383045a0c4 Mon Sep 17 00:00:00 2001 From: Updater DevOps Admin <78870838+updater-devopsadmin@users.noreply.github.com> Date: Mon, 8 Dec 2025 10:56:13 -0600 Subject: [PATCH 4/7] ci: use Terraform-managed gitStream workflow --- .github/workflows/gitstream.yml | 49 +++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .github/workflows/gitstream.yml diff --git a/.github/workflows/gitstream.yml b/.github/workflows/gitstream.yml new file mode 100644 index 00000000..4720f73d --- /dev/null +++ b/.github/workflows/gitstream.yml @@ -0,0 +1,49 @@ +# Code generated by gitStream GitHub app - DO NOT EDIT + +name: gitStream workflow automation +run-name: | + /:\ gitStream: PR #${{ fromJSON(fromJSON(github.event.inputs.client_payload)).pullRequestNumber }} from ${{ github.event.inputs.full_repository }} + +on: + workflow_dispatch: + inputs: + client_payload: + description: The Client payload + required: true + full_repository: + description: the repository name include the owner in `owner/repo_name` format + required: true + head_ref: + description: the head sha + required: true + base_ref: + description: the base ref + required: true + installation_id: + description: the installation id + required: false + resolver_url: + description: the resolver url to pass results to + required: true + resolver_token: + description: Optional resolver token for resolver service + required: false + default: '' + +jobs: + gitStream: + timeout-minutes: 15 + runs-on: ubuntu-latest + name: gitStream workflow automation + steps: + - name: Evaluate Rules + uses: linear-b/gitstream-github-action@v2-lite + id: rules-engine + with: + full_repository: ${{ github.event.inputs.full_repository }} + head_ref: ${{ github.event.inputs.head_ref }} + base_ref: ${{ github.event.inputs.base_ref }} + client_payload: ${{ github.event.inputs.client_payload }} + installation_id: ${{ github.event.inputs.installation_id }} + resolver_url: ${{ github.event.inputs.resolver_url }} + resolver_token: ${{ github.event.inputs.resolver_token }} From 569a52d369c342f5508c004fad1940e1a466774d Mon Sep 17 00:00:00 2001 From: Updater DevOps Admin <78870838+updater-devopsadmin@users.noreply.github.com> Date: Mon, 8 Dec 2025 10:56:19 -0600 Subject: [PATCH 5/7] ci: use Terraform-managed gitStream configuration --- .cm/gitstream.cm | 162 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 .cm/gitstream.cm diff --git a/.cm/gitstream.cm b/.cm/gitstream.cm new file mode 100644 index 00000000..4ef8c657 --- /dev/null +++ b/.cm/gitstream.cm @@ -0,0 +1,162 @@ +# -*- mode: yaml -*- +# This example configuration provides basic automations to get started with gitStream. +# View the gitStream quickstart for more examples: https://docs.gitstream.cm/examples/ +manifest: + version: 1.0 + + +automations: + # Use LinearB's AI service to review the changes + linearb_ai_review: + on: + - pr_created + - commit + if: + - {{ not pr.draft }} + - {{ not is.bot }} + run: + - action: code-review@v1 + args: + approve_on_LGTM: {{ calc.safe_changes }} + + # Use LinearB's AI service to add a description to the PR + linearb_ai_description: + on: + - pr_created + - commit + if: + - {{ not pr.draft }} + - {{ not is.bot }} + run: + - action: describe-changes@v1 + args: + concat_mode: append + + # Add a label indicating how long it will take to review the PR. + estimated_time_to_review: + if: + - true + run: + - action: add-label@v1 + args: + label: "{{ calc.etr }} min review" + color: {{ colors.red if (calc.etr >= 20) else ( colors.yellow if (calc.etr >= 5) else colors.green ) }} + + # Inform PR authors when they fail to reference Jira tickets in the PR title or description. + label_missing_jira_info: + if: + - {{ not (has.jira_ticket_in_title or has.jira_ticket_in_desc) }} + run: + - action: add-label@v1 + args: + label: "missing-jira" + color: {{ colors.red }} + - action: add-comment@v1 + args: + comment: | + This PR is missing a Jira ticket reference in the title or description. + Please add a Jira ticket reference to the title or description of this PR. + + # Label PRs where the user indicated Claude Code usage via checkbox + label_claude_code_pr: + on: + - pr_created + - commit + if: + - {{ pr.comments | filter(attr='commenter', term='gitstream-cm') | filter (attr='content', regex=r/\- \[x\] Claude Code Assisted/) | some}} + run: + - action: add-label@v1 + args: + label: '🤖 Claude Code' + + # Label PRs that contain Claude Code commits (by detecting commit message signature) + label_claude_code_by_commit: + on: + - pr_created + - commit + if: + - {{ source.commits | some(attr='message', regex=r/🤖 Generated with \[Claude Code\]|Co-Authored-By: Claude /) }} + run: + - action: add-label@v1 + args: + label: '🤖 Claude Code' + + # Label PRs created with GitHub Copilot assistance via checkbox + label_github_copilot_pr: + on: + - pr_created + - commit + if: + - {{ pr.comments | filter(attr='commenter', term='gitstream-cm') | filter (attr='content', regex=r/\- \[x\] GitHub Copilot Assisted/) | some}} + run: + - action: add-label@v1 + args: + label: '🤖 GitHub Copilot' + + # Label PRs that contain GitHub Copilot commits (by detecting commit message patterns) + label_github_copilot_by_commit: + on: + - pr_created + - commit + if: + - {{ source.commits | some(attr='message', regex=r/Co-authored-by: github-copilot|Generated by GitHub Copilot|Copilot|with GitHub Copilot/i) }} + run: + - action: add-label@v1 + args: + label: '🤖 GitHub Copilot' + + # Label Claude Code PRs - Label by Tag + label_claude_code: + if: + - {{ claude_code_tag.pr_title or claude_code_tag.pr_desc or claude_code_tag.pr_comments or claude_code_tag.commit_messages }} + run: + - action: add-label@v1 + args: + label: '🤖 Claude Code' + + # Label GitHub Copilot PRs - Label by Tag + label_copilot: + if: + - {{ copilot_tag.pr_title or copilot_tag.pr_desc or copilot_tag.pr_comments or copilot_tag.commit_messages }} + run: + - action: add-label@v1 + args: + label: '🤖 Copilot' + +claude_code_tag: + pr_title: {{ pr.title | includes(regex=r/#claude_code#/) }} + pr_desc: {{pr.description | includes(regex=r/#claude_code#/) }} + pr_comments: {{ pr.comments | map(attr='content') | match(regex=r/#claude_code#/) | some }} + commit_messages: {{ branch.commits.messages | match(regex=r/#claude_code#/) | some }} + +copilot_tag: + pr_title: {{ pr.title | includes(regex=r/#copilot#/) }} + pr_desc: {{ pr.description | includes(regex=r/#copilot#/) }} + pr_comments: {{ pr.comments | map(attr='content') | match(regex=r/#copilot#/) | some }} + commit_messages: {{ branch.commits.messages | match(regex=r/#copilot#/) | some }} + + +# +----------------------------------------------------------------------------+ +# | Custom Expressions | +# | https://docs.gitstream.cm/how-it-works/#custom-expressions | +# +----------------------------------------------------------------------------+ + +calc: + etr: {{ branch | estimatedReviewTime }} + safe_changes: {{ is.formatting or is.docs or is.tests or is.image }} + +has: + jira_ticket_in_title: {{ pr.title | includes(regex=r/\b[A-Za-z]+-\d+\b/) }} + jira_ticket_in_desc: {{ pr.description | includes(regex=r/atlassian.net\/browse\/\w{1,}-\d{3,4}/) }} + +colors: + red: 'b60205' + yellow: 'fbca04' + green: '0e8a16' + +is: + formatting: {{ source.diff.files | isFormattingChange }} + docs: {{ files | allDocs }} + tests: {{ files | allTests }} + image: {{ files | allImages }} + bot: {{ pr.author | match(list=['github-actions', '_bot_', '[bot]', 'dependabot']) | some }} From 95b2f11d4bef504f33bb1c3e3354656bb7c4c51f Mon Sep 17 00:00:00 2001 From: Updater DevOps Admin <78870838+updater-devopsadmin@users.noreply.github.com> Date: Fri, 23 Jan 2026 11:27:16 -0600 Subject: [PATCH 6/7] ci: use Terraform-managed gitStream workflow --- .github/workflows/gitstream.yml | 49 --------------------------------- 1 file changed, 49 deletions(-) delete mode 100644 .github/workflows/gitstream.yml diff --git a/.github/workflows/gitstream.yml b/.github/workflows/gitstream.yml deleted file mode 100644 index 4720f73d..00000000 --- a/.github/workflows/gitstream.yml +++ /dev/null @@ -1,49 +0,0 @@ -# Code generated by gitStream GitHub app - DO NOT EDIT - -name: gitStream workflow automation -run-name: | - /:\ gitStream: PR #${{ fromJSON(fromJSON(github.event.inputs.client_payload)).pullRequestNumber }} from ${{ github.event.inputs.full_repository }} - -on: - workflow_dispatch: - inputs: - client_payload: - description: The Client payload - required: true - full_repository: - description: the repository name include the owner in `owner/repo_name` format - required: true - head_ref: - description: the head sha - required: true - base_ref: - description: the base ref - required: true - installation_id: - description: the installation id - required: false - resolver_url: - description: the resolver url to pass results to - required: true - resolver_token: - description: Optional resolver token for resolver service - required: false - default: '' - -jobs: - gitStream: - timeout-minutes: 15 - runs-on: ubuntu-latest - name: gitStream workflow automation - steps: - - name: Evaluate Rules - uses: linear-b/gitstream-github-action@v2-lite - id: rules-engine - with: - full_repository: ${{ github.event.inputs.full_repository }} - head_ref: ${{ github.event.inputs.head_ref }} - base_ref: ${{ github.event.inputs.base_ref }} - client_payload: ${{ github.event.inputs.client_payload }} - installation_id: ${{ github.event.inputs.installation_id }} - resolver_url: ${{ github.event.inputs.resolver_url }} - resolver_token: ${{ github.event.inputs.resolver_token }} From fa5fb3e639176f6980173dbe9116b5541b59aceb Mon Sep 17 00:00:00 2001 From: Updater DevOps Admin <78870838+updater-devopsadmin@users.noreply.github.com> Date: Fri, 23 Jan 2026 11:31:25 -0600 Subject: [PATCH 7/7] ci: use Terraform-managed gitStream configuration --- .cm/gitstream.cm | 162 ----------------------------------------------- 1 file changed, 162 deletions(-) delete mode 100644 .cm/gitstream.cm diff --git a/.cm/gitstream.cm b/.cm/gitstream.cm deleted file mode 100644 index 4ef8c657..00000000 --- a/.cm/gitstream.cm +++ /dev/null @@ -1,162 +0,0 @@ -# -*- mode: yaml -*- -# This example configuration provides basic automations to get started with gitStream. -# View the gitStream quickstart for more examples: https://docs.gitstream.cm/examples/ -manifest: - version: 1.0 - - -automations: - # Use LinearB's AI service to review the changes - linearb_ai_review: - on: - - pr_created - - commit - if: - - {{ not pr.draft }} - - {{ not is.bot }} - run: - - action: code-review@v1 - args: - approve_on_LGTM: {{ calc.safe_changes }} - - # Use LinearB's AI service to add a description to the PR - linearb_ai_description: - on: - - pr_created - - commit - if: - - {{ not pr.draft }} - - {{ not is.bot }} - run: - - action: describe-changes@v1 - args: - concat_mode: append - - # Add a label indicating how long it will take to review the PR. - estimated_time_to_review: - if: - - true - run: - - action: add-label@v1 - args: - label: "{{ calc.etr }} min review" - color: {{ colors.red if (calc.etr >= 20) else ( colors.yellow if (calc.etr >= 5) else colors.green ) }} - - # Inform PR authors when they fail to reference Jira tickets in the PR title or description. - label_missing_jira_info: - if: - - {{ not (has.jira_ticket_in_title or has.jira_ticket_in_desc) }} - run: - - action: add-label@v1 - args: - label: "missing-jira" - color: {{ colors.red }} - - action: add-comment@v1 - args: - comment: | - This PR is missing a Jira ticket reference in the title or description. - Please add a Jira ticket reference to the title or description of this PR. - - # Label PRs where the user indicated Claude Code usage via checkbox - label_claude_code_pr: - on: - - pr_created - - commit - if: - - {{ pr.comments | filter(attr='commenter', term='gitstream-cm') | filter (attr='content', regex=r/\- \[x\] Claude Code Assisted/) | some}} - run: - - action: add-label@v1 - args: - label: '🤖 Claude Code' - - # Label PRs that contain Claude Code commits (by detecting commit message signature) - label_claude_code_by_commit: - on: - - pr_created - - commit - if: - - {{ source.commits | some(attr='message', regex=r/🤖 Generated with \[Claude Code\]|Co-Authored-By: Claude /) }} - run: - - action: add-label@v1 - args: - label: '🤖 Claude Code' - - # Label PRs created with GitHub Copilot assistance via checkbox - label_github_copilot_pr: - on: - - pr_created - - commit - if: - - {{ pr.comments | filter(attr='commenter', term='gitstream-cm') | filter (attr='content', regex=r/\- \[x\] GitHub Copilot Assisted/) | some}} - run: - - action: add-label@v1 - args: - label: '🤖 GitHub Copilot' - - # Label PRs that contain GitHub Copilot commits (by detecting commit message patterns) - label_github_copilot_by_commit: - on: - - pr_created - - commit - if: - - {{ source.commits | some(attr='message', regex=r/Co-authored-by: github-copilot|Generated by GitHub Copilot|Copilot|with GitHub Copilot/i) }} - run: - - action: add-label@v1 - args: - label: '🤖 GitHub Copilot' - - # Label Claude Code PRs - Label by Tag - label_claude_code: - if: - - {{ claude_code_tag.pr_title or claude_code_tag.pr_desc or claude_code_tag.pr_comments or claude_code_tag.commit_messages }} - run: - - action: add-label@v1 - args: - label: '🤖 Claude Code' - - # Label GitHub Copilot PRs - Label by Tag - label_copilot: - if: - - {{ copilot_tag.pr_title or copilot_tag.pr_desc or copilot_tag.pr_comments or copilot_tag.commit_messages }} - run: - - action: add-label@v1 - args: - label: '🤖 Copilot' - -claude_code_tag: - pr_title: {{ pr.title | includes(regex=r/#claude_code#/) }} - pr_desc: {{pr.description | includes(regex=r/#claude_code#/) }} - pr_comments: {{ pr.comments | map(attr='content') | match(regex=r/#claude_code#/) | some }} - commit_messages: {{ branch.commits.messages | match(regex=r/#claude_code#/) | some }} - -copilot_tag: - pr_title: {{ pr.title | includes(regex=r/#copilot#/) }} - pr_desc: {{ pr.description | includes(regex=r/#copilot#/) }} - pr_comments: {{ pr.comments | map(attr='content') | match(regex=r/#copilot#/) | some }} - commit_messages: {{ branch.commits.messages | match(regex=r/#copilot#/) | some }} - - -# +----------------------------------------------------------------------------+ -# | Custom Expressions | -# | https://docs.gitstream.cm/how-it-works/#custom-expressions | -# +----------------------------------------------------------------------------+ - -calc: - etr: {{ branch | estimatedReviewTime }} - safe_changes: {{ is.formatting or is.docs or is.tests or is.image }} - -has: - jira_ticket_in_title: {{ pr.title | includes(regex=r/\b[A-Za-z]+-\d+\b/) }} - jira_ticket_in_desc: {{ pr.description | includes(regex=r/atlassian.net\/browse\/\w{1,}-\d{3,4}/) }} - -colors: - red: 'b60205' - yellow: 'fbca04' - green: '0e8a16' - -is: - formatting: {{ source.diff.files | isFormattingChange }} - docs: {{ files | allDocs }} - tests: {{ files | allTests }} - image: {{ files | allImages }} - bot: {{ pr.author | match(list=['github-actions', '_bot_', '[bot]', 'dependabot']) | some }}