-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ci: configure tfvars file #7
Changes from 1 commit
223577e
f06a428
e0391d1
a53b09c
50823fa
adf6f48
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,6 +9,7 @@ env: | |
TF_API_TOKEN: "${{ secrets.TF_API_TOKEN }}" | ||
TF_WORKSPACE: "${{ vars.TF_WORKSPACE }}" | ||
CONFIG_DIRECTORY: "./" | ||
ENVIRONMENT: dev | ||
|
||
permissions: | ||
contents: read | ||
|
@@ -29,7 +30,7 @@ jobs: | |
uses: actions/checkout@v4 | ||
|
||
- name: Setup Terraform | ||
uses: hashicorp/setup-terraform@v1 | ||
uses: hashicorp/setup-terraform@v3 | ||
with: | ||
cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }} | ||
|
||
|
@@ -55,38 +56,124 @@ jobs: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | ||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | ||
|
||
plan: | ||
needs: [test] | ||
if: github.event_name == 'pull_request' | ||
name: "Terraform Plan" | ||
runs-on: ubuntu-latest" | ||
environment: ${{ env.ENVIRONMENT }} | ||
permissions: | ||
contents: read | ||
pull-requests: write | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: Create .auto.tfvars file | ||
run: | | ||
cat <<EOF > eks.auto.tfvars | ||
vpc_name = "${{ secrets.BMB_EKS_CLUSTER_VPC }}" | ||
cluster_name = "${{ vars.BMB_MYSQL_CLUSTER }}" | ||
database_name = "${{ vars.BMB_MYSQL_DATABASE }}" | ||
username = "${{ secrets.BMB_MYSQL_USER }}" | ||
password = "${{ secrets.BMB_MYSQL_PASSWORD }}" | ||
environment = "${{ env.ENVIRONMENT }}" | ||
EOF | ||
|
||
- 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/github-script@v7 | ||
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 | ||
}); | ||
|
||
|
||
|
||
deploy: | ||
needs: [test] | ||
if: github.ref == 'refs/heads/main' | ||
name: "Terraform Apply" | ||
runs-on: ubuntu-latest | ||
environment: dev | ||
environment: ${{ env.ENVIRONMENT }} | ||
permissions: | ||
contents: read | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: Create .auto.tfvars file | ||
run: | | ||
cat <<EOF > eks.auto.tfvars | ||
vpc_name = "${{ secrets.BMB_EKS_CLUSTER_VPC }}" | ||
cluster_name = "${{ vars.BMB_MYSQL_CLUSTER }}" | ||
database_name = "${{ vars.BMB_MYSQL_DATABASE }}" | ||
username = "${{ secrets.BMB_MYSQL_USER }}" | ||
password = "${{ secrets.BMB_MYSQL_PASSWORD }}" | ||
environment = "${{ env.ENVIRONMENT }}" | ||
EOF | ||
|
||
- name: Upload Configuration | ||
uses: hashicorp/tfc-workflows-github/actions/[email protected] | ||
id: apply-upload | ||
with: | ||
workspace: ${{ env.TF_WORKSPACE }} | ||
directory: ${{ env.CONFIG_DIRECTORY }} | ||
|
||
- name: Create Apply Run | ||
uses: hashicorp/tfc-workflows-github/actions/[email protected] | ||
id: apply-run | ||
with: | ||
workspace: ${{ env.TF_WORKSPACE }} | ||
configuration_version: ${{ steps.apply-upload.outputs.configuration_version_id }} | ||
message: "Plan Run from GitHub Actions CI ${{ github.sha }}" | ||
TF_VAR_vpc_name: "\"teste\"" | ||
|
||
- name: Apply | ||
uses: hashicorp/tfc-workflows-github/actions/[email protected] | ||
if: fromJSON(steps.apply-run.outputs.payload).data.attributes.actions.IsConfirmable && false | ||
id: apply | ||
with: | ||
run: ${{ steps.apply-run.outputs.run_id }} | ||
comment: "Apply Run from GitHub Actions CI ${{ github.sha }}" | ||
message: "Create Run from GitHub Actions CI ${{ github.sha }}" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
use techchallenge; | ||
|
||
create table IF NOT EXISTS Customers | ||
( | ||
Id char(36) not null | ||
primary key, | ||
Cpf varchar(11) not null, | ||
Name varchar(100) null, | ||
Email varchar(100) null | ||
); | ||
|
||
|
||
create table IF NOT EXISTS Products | ||
( | ||
Id char(36) not null comment 'product id' | ||
primary key, | ||
Name varchar(100) not null, | ||
Description varchar(200) not null, | ||
Category int not null, | ||
Price decimal(10,2) not null, | ||
Images varchar(1000) null | ||
); | ||
|
||
|
||
create table IF NOT EXISTS Orders | ||
( | ||
Id char(36) not null, | ||
CustomerId char(36) null, | ||
PaymentId char(36) null, | ||
Status int not null, | ||
Created datetime null, | ||
Updated datetime null, | ||
TrackingCode varchar(7) null | ||
); | ||
Comment on lines
+25
to
+34
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add a primary key to the The For example, you could add the following line after the primary key, |
||
|
||
|
||
create table IF NOT EXISTS OrderItems | ||
( | ||
OrderId char(36) not null, | ||
ProductId char(36) not null, | ||
ProductName varchar(200) not null, | ||
UnitPrice decimal not null, | ||
Quantity int null | ||
); | ||
Comment on lines
+37
to
+44
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add a composite primary key to the The For example, you could add the following line after the PRIMARY KEY (OrderId, ProductId) |
||
|
||
create table IF NOT EXISTS Payments | ||
( | ||
Id char(36) not null, | ||
OrderId char(36) not null, | ||
Status int not null, | ||
Created datetime null, | ||
Updated datetime null, | ||
PaymentType int not null, | ||
ExternalReference varchar(36) not null, | ||
Amount decimal(10,2) not null, | ||
PRIMARY KEY (Id, OrderId) | ||
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix the invalid usage of the
env
context and the typographical error in theubuntu-latest"
label.The static analysis tool has flagged the following issues:
The
env
context is not allowed in theenvironment
field according to the GitHub Actions documentation. Please remove the usage of theenv
context and directly specify the environment name.The
ubuntu-latest"
label has an extra double quote, which is a typographical error. Please remove the extra double quote.Apply this diff to fix the issues:
Also applies to: 148-148
Tools
actionlint