GitHub Action
LaunchDarkly Code References in Pull Request
Adds a comment to a pull request (PR) whenever a feature flag reference is found in a PR diff.
This action requires a LaunchDarkly access token with:
- Read access for the designated
project-key
- (Optional) the
createFlagLink
action, if you have set thecreate-flag-links
input totrue
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
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@v1
id: find-flags
with:
project-key: default
environment-key: production
access-token: ${{ secrets.LD_ACCESS_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
create-flag-links: true
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@v1
id: find-flags
with:
project-key: default
environment-key: production
access-token: ${{ secrets.LD_ACCESS_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
create-flag-links: true
# 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 }}
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.
This action does not support monorepos or searching for flags across LaunchDarkly projects.
name | description | required | default |
---|---|---|---|
repo-token |
Token to use to authorize comments on PR. Typically the |
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 |
false |
false |
parameter | 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 users should use the default value. | false |
https://app.launchdarkly.com |
check-extinctions | Check if removed flags still exist in codebase | false |
true |
parameter | 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. |