Skip to content

Update package_file_path in jamfpro_package resource #73

Update package_file_path in jamfpro_package resource

Update package_file_path in jamfpro_package resource #73

Workflow file for this run

name: "Terraform Plan With TFC"
on:
pull_request:
workflow_dispatch:
env:
TF_CLOUD_ORGANIZATION: "deploymenttheory" # Replace with your Terraform Cloud organization name
TF_API_TOKEN: "${{ secrets.TF_API_TOKEN }}"
TF_WORKSPACE: "terraform-jamfpro-demo"
CONFIG_DIRECTORY: "workload/terraform/jamfpro"
PIPELINE_DEBUG: "true"
# other env vars are set within tfcloud directly for within the tf workspace
jobs:
terraform:
if: github.repository != 'hashicorp-education/learn-terraform-github-actions'
name: "Terraform Plan"
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout
uses: actions/[email protected]
- name: Print Terraform Variables
if: env.PIPELINE_DEBUG == 'true'
run: |
echo "auth_method=${{ env.jamfpro_auth_method }}"
echo "client_id=${{ env.jamfpro_client_id }}"
echo "client_secret=${{ env.jamfpro_client_secret }}"
echo "instance_fqdn=${{ env.jamfpro_instance_fqdn }}"
echo "load_balancer_lock=${{ env.jamfpro_jamf_load_balancer_lock }}"
echo "log_level=${{ env.jamfpro_log_level }}"
echo "log_output_format=${{ env.jamfpro_log_output_format }}"
echo "mandatory_request_delay_milliseconds=${{ env.jamfpro_mandatory_request_delay_milliseconds }}"
echo "token_refresh_buffer_period_seconds=${{ env.jamfpro_token_refresh_buffer_period_seconds }}"
- name: Upload Configuration
uses: hashicorp/tfc-workflows-github/actions/[email protected]
id: plan-upload
with:
workspace: ${{ env.TF_WORKSPACE }}
directory: ${{ env.CONFIG_DIRECTORY }}
speculative: true
- name: Create Plan Run
uses: hashicorp/tfc-workflows-github/actions/[email protected]
id: plan-run
with:
workspace: ${{ env.TF_WORKSPACE }}
configuration_version: ${{ steps.plan-upload.outputs.configuration_version_id }}
plan_only: true
- name: Get Plan Output
uses: hashicorp/tfc-workflows-github/actions/[email protected]
id: plan-output
with:
plan: ${{ fromJSON(steps.plan-run.outputs.payload).data.relationships.plan.data.id }}
- name: Update PR
uses: actions/[email protected]
id: plan-comment
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
// 1. Retrieve existing bot comments for the PR
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});
const botComment = comments.find(comment => {
return comment.user.type === 'Bot' && comment.body.includes('Terraform Cloud Plan Output')
});
const output = `#### Terraform Cloud Plan Output
\`\`\`
Plan: ${{ steps.plan-output.outputs.add }} to add, ${{ steps.plan-output.outputs.change }} to change, ${{ steps.plan-output.outputs.destroy }} to destroy.
\`\`\`
[Terraform Cloud Plan](${{ steps.plan-run.outputs.run_link }})
`;
// 3. Delete previous comment so PR timeline makes sense
if (botComment) {
github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: botComment.id,
});
}
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: output
});