feat: added mc.sanare.dev #117
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.CI_ONLY_AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_ONLY_AWS_SECRET_ACCESS_KEY }} | |
jobs: | |
tofu: | |
name: "Tofu" | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: tofu | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: opentofu/setup-opentofu@v1 | |
- name: Format | |
id: fmt | |
run: tofu fmt -check | |
continue-on-error: true | |
- name: Init | |
id: init | |
run: tofu init | |
- name: Validate | |
id: validate | |
run: tofu validate -no-color | |
- name: Plan | |
id: plan | |
run: tofu plan -no-color | |
continue-on-error: true | |
- uses: actions/github-script@v6 | |
if: github.event_name == 'pull_request' | |
env: | |
PLAN: "tofu\n${{ steps.plan.outputs.stdout }}" | |
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('OpenTofu Format and Style') | |
}) | |
// 2. Prepare format of the comment | |
const output = `#### OpenTofu Format and Style 🖌\`${{ steps.fmt.outcome }}\` | |
#### OpenTofu Initialization ⚙️\`${{ steps.init.outcome }}\` | |
#### OpenTofu Validation 🤖\`${{ steps.validate.outcome }}\` | |
<details><summary>Validation Output</summary> | |
\`\`\`\n | |
${{ steps.validate.outputs.stdout }} | |
\`\`\` | |
</details> | |
#### OpenTofu Plan 📖\`${{ steps.plan.outcome }}\` | |
<details><summary>Show Plan</summary> | |
\`\`\`\n | |
${process.env.PLAN} | |
\`\`\` | |
</details> | |
*Pusher: @${{ github.actor }}, Action: \`${{ github.event_name }}\`, Working Directory: \`${{ env.tf_actions_working_dir }}\`, Workflow: \`${{ github.workflow }}\`*`; | |
// 3. If we have a comment, update it, otherwise create a new one | |
if (botComment) { | |
github.rest.issues.updateComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
comment_id: botComment.id, | |
body: output | |
}) | |
} else { | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: output | |
}) | |
} | |
- name: Plan Status | |
if: steps.plan.outcome == 'failure' | |
run: exit 1 | |
- name: Apply | |
if: github.ref == 'refs/heads/main' && github.event_name == 'push' | |
run: tofu apply -auto-approve -input=false |