launchdarkly / find-code-references-in-pull-request

Find Code Reference Flags in Pull Requests
https://docs.launchdarkly.com/home/code/code-references
Apache License 2.0
7 stars 2 forks source link
actions github-action github-actions launchdarkly launchdarkly-integration managed-by-terraform

LaunchDarkly Find Code References in Pull Request GitHub action

Adds a comment to a pull request (PR) whenever a feature flag reference is found in a PR diff and creates a flag link in LaunchDarkly.

An example code references PR comment An example GitHub pull request flag link

Permissions

This action requires a LaunchDarkly access token with:

Access tokens should be stored as an encrypted secret.

To add a comment to a PR, the repo-token used requires write permission for PRs. You can also specify permissions for the workflow with:

permissions:
  pull-requests: write

Usage

Basic:

on: pull_request

jobs:
  find-flags:
    runs-on: ubuntu-latest
    name: Find LaunchDarkly feature flags in diff
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Find flags
        uses: launchdarkly/find-code-references-in-pull-request@v2
        id: find-flags
        with:
          project-key: default
          environment-key: production
          access-token: ${{ secrets.LD_ACCESS_TOKEN }}
          repo-token: ${{ secrets.GITHUB_TOKEN }}

Use outputs in workflow:

on: pull_request

jobs:
  find-feature-flags:
    runs-on: ubuntu-latest
    name: Find LaunchDarkly feature flags in diff
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Find flags
        uses: launchdarkly/find-code-references-in-pull-request@v2
        id: find-flags
        with:
          project-key: default
          environment-key: production
          access-token: ${{ secrets.LD_ACCESS_TOKEN }}
          repo-token: ${{ secrets.GITHUB_TOKEN }}

      # Add or remove labels on PRs if any flags have changed
      - name: Add label
        if: steps.find-flags.outputs.any-changed == 'true'
        run: gh pr edit $PR_NUMBER --add-label ld-flags
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR_NUMBER: ${{ github.event.pull_request.number }}
      - name: Remove label
        if: steps.find-flags.outputs.any-changed == 'false'
        run: gh pr edit $PR_NUMBER --remove-label ld-flags
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR_NUMBER: ${{ github.event.pull_request.number }}

Flag aliases

This action has full support for code reference aliases. If the project has an existing .launchdarkly/coderefs.yaml file, it will use the aliases defined there.

You can find more information on aliases at launchdarkly/ld-find-code-refs.

Monorepos

This action does not support monorepos or searching for flags across LaunchDarkly projects.

Inputs

name description required default
repo-token

Token to use to authorize comments on PR. Typically the GITHUB_TOKEN secret or equivalent github.token.

true ""
access-token

LaunchDarkly access token

true ""
project-key

LaunchDarkly project key

false default
environment-key

LaunchDarkly environment key for creating flag links

false production
placeholder-comment

Comment on PR when no flags are found. If flags are found in later commits, this comment will be updated.

false false
include-archived-flags

Scan for archived flags

false true
max-flags

Maximum number of flags to find per PR

false 5
base-uri

The base URI for the LaunchDarkly server. Most members should use the default value.

false https://app.launchdarkly.com
check-extinctions

Check if removed flags still exist in codebase

false true
create-flag-links

Create links to flags in LaunchDarkly. To use this feature you must use an access token with the createFlagLink role. To learn more, read Flag links.

false true

Outputs

name description
any-modified

Returns true if any flags have been added or modified in PR

modified-flags

Space-separated list of flags added or modified in PR

modified-flags-count

Number of flags added or modified in PR

any-removed

Returns true if any flags have been removed in PR

removed-flags

Space-separated list of flags removed in PR

removed-flags-count

Number of flags removed in PR

any-changed

Returns true if any flags have been changed in PR

changed-flags

Space-separated list of flags changed in PR

changed-flags-count

Number of flags changed in PR

any-extinct

Returns true if any flags have been removed in PR and no longer exist in codebase. Only returned if check-extinctions is true.

extinct-flags

Space-separated list of flags removed in PR and no longer exist in codebase. Only returned if check-extinctions is true.

extinct-flags-count

Number of flags removed in PR and no longer exist in codebase. Only returned if check-extinctions is true.