Skip to content

Hide outdated comments #549

Hide outdated comments

Hide outdated comments #549

name: Test changes-only PR comment
on:
- pull_request
jobs:
no_changes:
runs-on: ubuntu-latest
name: changes-only should not create a comment
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Plan without changes
uses: ./terraform-plan
id: plan
with:
label: test-changes-only change-only THIS SHOULD NOT BE A COMMENT
path: tests/workflows/test-changes-only
add_github_comment: changes-only
- name: Verify outputs
run: |
echo "changes=${{ steps.plan.outputs.changes }}"
if [[ "${{ steps.plan.outputs.changes }}" != "false" ]]; then
echo "::error:: output changes not set correctly"
exit 1
fi
- name: Apply without changes
uses: ./terraform-apply
id: apply
with:
label: test-changes-only change-only THIS SHOULD NOT BE A COMMENT
path: tests/workflows/test-changes-only
- name: Check failure-reason
run: |
if [[ "${{ steps.apply.outputs.failure-reason }}" != "" ]]; then
echo "::error:: failure-reason not set correctly"
exit 1
fi
change_then_no_changes:
runs-on: ubuntu-latest
name: changes-only should still replace a change comment
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Plan changes
uses: ./terraform-plan
id: changes-plan
with:
label: test-changes-only change_then_no_changes
path: tests/workflows/test-changes-only
variables: |
cause-changes=true
add_github_comment: changes-only
- name: Verify changes
run: |
echo "changes=${{ steps.changes-plan.outputs.changes }}"
if [[ "${{ steps.changes-plan.outputs.changes }}" != "true" ]]; then
echo "::error:: output changes not set correctly"
exit 1
fi
- name: Plan no changes
uses: ./terraform-plan
id: plan
with:
label: test-changes-only change_then_no_changes
path: tests/workflows/test-changes-only
variables: |
cause-changes=false
add_github_comment: changes-only
- name: Verify no changes
run: |
echo "changes=${{ steps.plan.outputs.changes }}"
if [[ "${{ steps.plan.outputs.changes }}" != "false" ]]; then
echo "::error:: output changes not set correctly"
exit 1
fi
- name: Apply no changes
uses: ./terraform-apply
id: apply
with:
label: test-changes-only change_then_no_changes
path: tests/workflows/test-changes-only
variables: |
cause-changes=false
- name: Check failure-reason
run: |
if [[ "${{ steps.apply.outputs.failure-reason }}" != "" ]]; then
echo "::error:: failure-reason not set correctly"
exit 1
fi
no_changes_then_changes:
runs-on: ubuntu-latest
name: Apply with changes should fail after a changes-only plan with no changes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Plan no changes
uses: ./terraform-plan
id: plan
with:
path: tests/workflows/test-changes-only
label: test-changes-only no_changes_then_changes
variables: |
cause-changes=false
add_github_comment: changes-only
- name: Verify no changes
run: |
echo "changes=${{ steps.plan.outputs.changes }}"
if [[ "${{ steps.plan.outputs.changes }}" != "false" ]]; then
echo "::error:: output changes not set correctly"
exit 1
fi
- name: Apply with changes
uses: ./terraform-apply
id: apply
continue-on-error: true
with:
path: tests/workflows/test-changes-only
label: test-changes-only no_changes_then_changes
variables: |
cause-changes=true
- name: Check failed to apply
run: |
if [[ "${{ steps.apply.outcome }}" != "failure" ]]; then
echo "Apply did not fail correctly"
exit 1
fi
if [[ "${{ steps.apply.outputs.failure-reason }}" != "plan-changed" ]]; then
echo "::error:: failure-reason not set correctly"
exit 1
fi
apply_when_plan_has_changed:
runs-on: ubuntu-latest
name: Apply should fail if the approved plan has changed
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Plan Changes
uses: ./terraform-plan
with:
path: tests/workflows/test-changes-only
label: test-changes-only apply_when_plan_has_changed
variables: |
cause-changes=true
- name: Apply different changes
uses: ./terraform-apply
id: apply
continue-on-error: true
with:
path: tests/workflows/test-changes-only
label: test-changes-only apply_when_plan_has_changed
variables: |
cause-changes=true
len=4
- name: Check failed to apply
run: |
if [[ "${{ steps.apply.outcome }}" != "failure" ]]; then
echo "Apply did not fail correctly"
exit 1
fi
if [[ "${{ steps.apply.outputs.failure-reason }}" != "plan-changed" ]]; then
echo "::error:: failure-reason not set correctly"
exit 1
fi