Skip to content
Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

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.
      # Note: This example requires the "ld-flags" label to have been created in the repository first:
      # https://docs.github.com/en/issues/using-labels-and-milestones-to-track-work/managing-labels#creating-a-label
      - 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
skip-comment

Skip commenting on PR. If set to true, the action will not comment on the PR, but will still set outputs.

false false

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.