Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
3e2af52
feat: add consolidated TF module check workflow
chris11-taylor-nttd Apr 6, 2026
0ae0413
feat: add action to update status checks, unify status checks across …
chris11-taylor-nttd Apr 7, 2026
cb5acb8
feat: create consolidated terragrunt workflows with composable auth
chris11-taylor-nttd Apr 7, 2026
21a4365
fix: tweak reusable terraform with improvements from terragrunt
chris11-taylor-nttd Apr 7, 2026
b13ecdf
fix: pass owner to create-github-app-token
chris11-taylor-nttd Apr 7, 2026
7b0fe7b
fix: write legacy status checks
chris11-taylor-nttd Apr 8, 2026
9187216
fix: repo name detection
chris11-taylor-nttd Apr 8, 2026
12517d7
feat: parallelize lint and tests
chris11-taylor-nttd Apr 8, 2026
4601aa9
fix: aws auth, cleanup
chris11-taylor-nttd Apr 8, 2026
fe3af0a
test: no profile handling
chris11-taylor-nttd Apr 8, 2026
10d9bcb
test: env vars instead
chris11-taylor-nttd Apr 8, 2026
2a7237a
fix: provider version, status
chris11-taylor-nttd Apr 9, 2026
d2a1550
test: dump provider details to debug azure
chris11-taylor-nttd Apr 9, 2026
c0f428d
test: create providers first
chris11-taylor-nttd Apr 9, 2026
a892e40
fix: creating providers ahead of time fixes it, bug in makefile somew…
chris11-taylor-nttd Apr 9, 2026
8754225
fix: drop wip from conventional commit defaults; we don't want work i…
chris11-taylor-nttd Apr 10, 2026
1da984e
fix: support legacy PR validation with conventional commit workflow
chris11-taylor-nttd Apr 10, 2026
a6ae1cc
fix: status permissions
chris11-taylor-nttd Apr 10, 2026
8047d78
fix: one status check is not legacy
chris11-taylor-nttd Apr 13, 2026
bd797f8
feat: workflows from nttdtest poc
chris11-taylor-nttd Apr 14, 2026
c744e07
fix: prereleases
chris11-taylor-nttd Apr 14, 2026
f1420da
fix: grab PR head SHA if available before falling back to event SHA
chris11-taylor-nttd Apr 22, 2026
6b62168
fix: SHA detection through API for PRs
chris11-taylor-nttd Apr 22, 2026
950d45c
fix: all status check calls on this branch
chris11-taylor-nttd Apr 22, 2026
7d1e332
fix: needs to be able to read the PR
chris11-taylor-nttd Apr 22, 2026
ca4220b
fix: toml command
chris11-taylor-nttd Apr 23, 2026
e5bb7fe
fix: repoint to current tag
chris11-taylor-nttd Apr 23, 2026
0330f9c
fix: only clear labels on certain event types
chris11-taylor-nttd Apr 24, 2026
266540b
fix: add PR read permissions to plan-only TG workflow
chris11-taylor-nttd Apr 24, 2026
9f5ad03
fix: newline for better output
chris11-taylor-nttd Apr 24, 2026
24478cb
feat: auto-update writes summary info
chris11-taylor-nttd Apr 27, 2026
6e29f18
fix: no need for GH token, drop script
chris11-taylor-nttd Apr 28, 2026
ac559e0
fix: normalize versions, tags
chris11-taylor-nttd Apr 28, 2026
e4bdd1d
fix: shell expansion issues
chris11-taylor-nttd Apr 28, 2026
90e54a5
fix: input validation, secrets refs for caller
chris11-taylor-nttd Apr 28, 2026
10fa46f
fix: add-only detection, sha
chris11-taylor-nttd Apr 28, 2026
f0cd43c
fix: branch refs, heredocs, folding
chris11-taylor-nttd Apr 28, 2026
eb80f35
fix: redundant
chris11-taylor-nttd Apr 28, 2026
1a852f7
fix: unstage scripts
chris11-taylor-nttd Apr 28, 2026
be5282b
fix: unstage scripts
chris11-taylor-nttd Apr 28, 2026
2a322c6
feat: action to retrieve repo custom properties
chris11-taylor-nttd Mar 26, 2026
28bd787
fix: normalize tag references in actions docs
chris11-taylor-nttd Apr 28, 2026
49f421d
fix: merge branch 'feat/unify-provider-auth' into feat/unify-provider…
chris11-taylor-nttd Apr 28, 2026
81ca00c
fix: address feedback from PR review
chris11-taylor-nttd Apr 29, 2026
b25cd8b
fix: tags
chris11-taylor-nttd May 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions .github/actions/get-custom-properties/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Get Custom Properties Action

This action retrieves custom properties from a GitHub repository using the GitHub API. Custom properties are organization-defined metadata that can be applied to repositories for classification, automation, and policy enforcement.

## Behavior

This action will:
1. Call the GitHub API to retrieve all custom properties applied to the specified repository
2. Return the properties as a JSON object that can be used in subsequent workflow steps

## Inputs

| Input | Description | Required | Default |
|-------|-------------|----------|---------|
| `owner` | The owner (organization or user) of the repository | No | `${{ github.repository_owner }}` |
| `repo` | The name of the repository | No | `${{ github.event.repository.name }}` |
| `github_token` | GitHub token for API access | No | `${{ github.token }}` |

## Outputs

| Output | Description |
|--------|-------------|
| `properties` | JSON object containing all custom properties applied to the repository |

## Usage

### Basic Usage

When used in a workflow, all inputs are optional. The action defaults to the current repository and automatic GITHUB_TOKEN (replacing `ref` with a tag or commit SHA from this repository):

```yaml
jobs:
your-job:
runs-on: ubuntu-latest
steps:
- name: Get Custom Properties
id: props
uses: launchbynttdata/launch-workflows/.github/actions/get-custom-properties@ref

- name: Use Properties
run: |
echo "Properties: ${{ steps.props.outputs.properties }}"
```

### Query a Different Repository

To retrieve properties from a different repository:

```yaml
- name: Get Custom Properties
id: props
uses: launchbynttdata/launch-workflows/.github/actions/get-custom-properties@ref
with:
owner: "my-org"
repo: "my-repo"
```

### Parse Properties in Workflow

You can use `jq` to parse specific properties from the output:

```yaml
- name: Get Custom Properties
id: props
uses: launchbynttdata/launch-workflows/.github/actions/get-custom-properties@ref

- name: Check Environment Property
run: |
ENVIRONMENT=$(echo '${{ steps.props.outputs.properties }}' | jq -r '.[] | select(.property_name == "environment") | .value')
echo "Environment: $ENVIRONMENT"
```

## Required Permissions

The default `GITHUB_TOKEN` has sufficient permissions to read custom properties for the repository where the workflow runs. When querying a different repository, the token needs "Metadata" repository permission (read).

## Response Format

The API returns an array of property objects:

```json
[
{
"property_name": "environment",
"value": "production"
},
{
"property_name": "team",
"value": "platform"
}
]
```
61 changes: 61 additions & 0 deletions .github/actions/get-custom-properties/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: "Get Custom Properties"
description: "Retrieve custom properties from a GitHub repository"
inputs:
owner:
description: "The owner (organization or user) of the repository. Defaults to the current repository owner."
required: false
default: ${{ github.repository_owner }}
repo:
description: "The name of the repository. Defaults to the current repository name."
required: false
default: ${{ github.event.repository.name }}
github_token:
description: "GitHub token for API access. Defaults to the automatic GITHUB_TOKEN."
required: false
default: ${{ github.token }}
outputs:
properties:
description: "JSON object containing all custom properties applied to the repository"
value: ${{ steps.get-properties.outputs.properties }}
runs:
using: "composite"
steps:
- name: Get Custom Properties
id: get-properties
shell: bash
env:
GITHUB_TOKEN: ${{ inputs.github_token }}
OWNER: ${{ inputs.owner }}
REPO: ${{ inputs.repo }}
run: |
if [[ -z "$OWNER" ]]; then
echo "Error: Repository owner not provided and not available in the event context."
exit 1
fi

if [[ -z "$REPO" ]]; then
echo "Error: Repository name not provided and not available in the event context."
exit 1
fi

echo "Fetching custom properties for ${OWNER}/${REPO}..."

RESPONSE=$(curl -sL \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
-H "X-GitHub-Api-Version: 2026-03-10" \
"https://api.github.com/repos/${OWNER}/${REPO}/properties/values")

# Check for API errors
if echo "$RESPONSE" | jq -e '.message' > /dev/null 2>&1; then
ERROR_MSG=$(echo "$RESPONSE" | jq -r '.message')
echo "Error from GitHub API: $ERROR_MSG"
exit 1
fi

# Output the properties as JSON
echo "properties<<EOF" >> $GITHUB_OUTPUT
echo "$RESPONSE" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

echo "Successfully retrieved custom properties for ${OWNER}/${REPO}"
8 changes: 4 additions & 4 deletions .github/actions/remove-dependabot-labels/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ This action will:

### Basic Usage

When used in a `pull_request` event workflow, all inputs are optional:
When used in a `pull_request` event workflow, all inputs are optional (replacing `ref` with a tag or commit SHA from this repository):

```yaml
jobs:
Expand All @@ -36,7 +36,7 @@ jobs:
- uses: actions/checkout@v4

- name: Remove Dependabot Labels
uses: launchbynttdata/launch-workflows/.github/actions/remove-dependabot-labels@main
uses: launchbynttdata/launch-workflows/.github/actions/remove-dependabot-labels@ref
```

### Preserve Additional Labels
Expand All @@ -45,7 +45,7 @@ To preserve additional Dependabot labels beyond `dependencies`:

```yaml
- name: Remove Dependabot Labels
uses: launchbynttdata/launch-workflows/.github/actions/remove-dependabot-labels@main
uses: launchbynttdata/launch-workflows/.github/actions/remove-dependabot-labels@ref
with:
preserve_labels: "dependencies,security"
```
Expand All @@ -56,7 +56,7 @@ If running outside a `pull_request` event context, provide the PR number explici

```yaml
- name: Remove Dependabot Labels
uses: launchbynttdata/launch-workflows/.github/actions/remove-dependabot-labels@main
uses: launchbynttdata/launch-workflows/.github/actions/remove-dependabot-labels@ref
with:
pr_number: "123"
```
Expand Down
4 changes: 3 additions & 1 deletion .github/actions/terragrunt-configure-mise/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ The configured `mise.toml` file will then be used by subsequent `gruntwork-io/te

## Usage

Replace `ref` with a tag or commit SHA from this repository:

```yaml

jobs:
Expand All @@ -29,7 +31,7 @@ jobs:

# Ensure mise.toml contains terraform and terragrunt at our desired versions
- name: Configure Mise
uses: launchbynttdata/launch-workflows/.github/actions/terragrunt-configure-mise@0.14.0 # or later
uses: launchbynttdata/launch-workflows/.github/actions/terragrunt-configure-mise@ref
with:
tf_version: '1.5.5'
tg_version: '0.54.11'
Expand Down
7 changes: 4 additions & 3 deletions .github/actions/terragrunt-configure-mise/action.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
name: "Configure Mise for Terragrunt"
description: "Configure Mise to install specific versions of Terraform and Terragrunt for use with terragrunt-action"
description: "Configure Mise to install specific versions of Terraform and
Terragrunt for use with terragrunt-action"
inputs:
tf_version:
description: "Version of Terraform to install"
Expand Down Expand Up @@ -34,8 +35,8 @@ runs:

# https://github.com/mrijken/toml-cli
# `toml set` will add if necessary or update if the entry already exists
toml set mise.toml tools.terragrunt "${{ inputs.tg_version }}"
toml set mise.toml tools.terraform "${{ inputs.tf_version }}"
toml set --toml-path mise.toml tools.terragrunt "${{ inputs.tg_version }}"
toml set --toml-path mise.toml tools.terraform "${{ inputs.tf_version }}"
fi
echo "Final mise.toml configuration:"
cat mise.toml
111 changes: 111 additions & 0 deletions .github/actions/update-status-check/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# Update Status Check Action

GitHub's [Commit Status API](https://docs.github.com/en/rest/commits/statuses) allows workflows to report the state of a check back to a specific commit SHA. This is useful for surfacing the outcome of external processes, gating merges, or providing richer context in pull requests beyond what a workflow run alone provides.

This action wraps the Commit Status API with a simple interface: provide a check name and a status, and we handle the API call.

## Behavior

This action will:
1. Validate that the provided `status` is one of the accepted values (`error`, `failure`, `pending`, `success`)
2. Call the GitHub Commit Status API to create or update the named status check on the specified commit SHA
3. Optionally attach a human-readable description and a target URL to the status

## Inputs

| Input | Description | Required | Default |
|-------|-------------|----------|---------|
| `check_name` | The name (context) of the status check to create or update | Yes | — |
| `status` | The state to set. One of: `error`, `failure`, `pending`, `success` | Yes | — |
| `sha` | The commit SHA to attach the status check to | No | `${{ github.sha }}` |
| `description` | A short human-readable description of the status | No | `""` |
| `target_url` | A URL to associate with the status (e.g. a link to a build log) | No | `""` |
| `github_token` | GitHub token for API access | No | `${{ github.token }}` |

## Usage

### Basic Usage

Mark a status check as successful on the current commit (replacing `ref` with a tag or commit SHA from this repository):

```yaml
jobs:
your-job:
runs-on: ubuntu-latest
permissions:
statuses: write
steps:
- name: Set status check to success
uses: launchbynttdata/launch-workflows/.github/actions/update-status-check@ref
with:
check_name: "my-check"
status: "success"
```

### With Description and Target URL

Provide additional context visible in the GitHub UI:

```yaml
- name: Set status check to failure
uses: launchbynttdata/launch-workflows/.github/actions/update-status-check@ref
with:
check_name: "security-scan"
status: "failure"
description: "Vulnerabilities were detected."
target_url: "https://example.com/scan-results/123"
```

### Marking a Check as Pending Before a Long-Running Step

Use `pending` to signal that a check is in progress, then update it on completion:

```yaml
- name: Mark check as pending
uses: launchbynttdata/launch-workflows/.github/actions/update-status-check@ref
with:
check_name: "integration-tests"
status: "pending"
description: "Integration tests are running..."

- name: Run integration tests
run: make test-integration

- name: Mark check as success
if: success()
uses: launchbynttdata/launch-workflows/.github/actions/update-status-check@ref
with:
check_name: "integration-tests"
status: "success"
description: "All integration tests passed."

- name: Mark check as failure
if: failure()
uses: launchbynttdata/launch-workflows/.github/actions/update-status-check@ref
with:
check_name: "integration-tests"
status: "failure"
description: "One or more integration tests failed."
```

### Targeting a Specific Commit SHA

Override the default SHA to set a status on a commit other than the one that triggered the workflow:

```yaml
- name: Set status on a specific commit
uses: launchbynttdata/launch-workflows/.github/actions/update-status-check@ref
with:
check_name: "my-check"
status: "success"
sha: "abc1234def5678"
```

## Required Permissions

This action requires the following permission on the workflow job:

```yaml
permissions:
statuses: write
```
Loading
Loading