-
Notifications
You must be signed in to change notification settings - Fork 0
95 lines (73 loc) · 3.32 KB
/
cicd.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
---
name: build image
"on":
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout Codebase
uses: actions/checkout@v4
- name: Login to DockerHub
run: echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Build Docker Image
run: docker build -t "${{ secrets.IMAGE_NAME }}" .
- name: Tag Docker Image
run: docker tag "${{ secrets.IMAGE_NAME }}" "${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.IMAGE_NAME }}:latest"
- name: Tag Docker Image with Commit SHA
run: docker tag "${{ secrets.IMAGE_NAME }}" "${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.IMAGE_NAME }}:${{ github.sha }}"
- name: Push Image to DockerHub
run: docker push "${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.IMAGE_NAME }}:latest"
- name: Push Image with Commit SHA Tag
run: docker push "${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.IMAGE_NAME }}:${{ github.sha }}"
deploy:
needs: build
runs-on: ubuntu-20.04
defaults:
run:
shell: bash
working-directory: ./terraform
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_ACCESS_TOKEN: ${{ secrets.JIRA_ACCESS_TOKEN }}
JIRA_BOARD_ID: ${{ secrets.JIRA_BOARD_ID }}
JIRA_PROJECT: ${{ secrets.JIRA_PROJECT }}
JIRA_STORY_POINTS_CUSTOM_FIELD: ${{ secrets.JIRA_STORY_POINTS_CUSTOM_FIELD }}
JIRA_REVIEWER_CUSTOM_FIELD: ${{ secrets.JIRA_REVIEWER_CUSTOM_FIELD }}
NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }}
NOTION_SUBSCRIPTIONS_DATABASE_ID: ${{ secrets.NOTION_SUBSCRIPTIONS_DATABASE_ID }}
NOTION_TRANSACTIONS_DATABASE_ID: ${{ secrets.NOTION_TRANSACTIONS_DATABASE_ID }}
NOTION_ASSIGNED_ISSUES_DATABASE_ID: ${{ secrets.NOTION_ASSIGNED_ISSUES_DATABASE_ID }}
NOTION_REVIEWER_ISSUES_DATABASE_ID: ${{ secrets.NOTION_REVIEWER_ISSUES_DATABASE_ID }}
GOOGLE_CREDENTIALS: ${{ secrets.GCP_CREDENTIALS }}
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
steps:
- name: Checkout Codebase
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Setup terraform variables
id: vars
run: |-
cat > pipeline.auto.tfvars <<EOF
project_id="$GCP_PROJECT_ID"
docker_image="${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.IMAGE_NAME }}:${{ github.sha }}"
notion_token="$NOTION_TOKEN"
notion_subscriptions_database_id="$NOTION_SUBSCRIPTIONS_DATABASE_ID"
notion_transactions_database_id="$NOTION_TRANSACTIONS_DATABASE_ID"
notion_assigned_issues_database_id="$NOTION_ASSIGNED_ISSUES_DATABASE_ID"
notion_reviewer_issues_database_id="$NOTION_REVIEWER_ISSUES_DATABASE_ID"
jira_base_url="$JIRA_BASE_URL"
jira_access_token="$JIRA_ACCESS_TOKEN"
jira_board_id="$JIRA_BOARD_ID"
jira_project="$JIRA_PROJECT"
jira_story_points_custom_field="$JIRA_STORY_POINTS_CUSTOM_FIELD"
jira_reviewer_custom_field="$JIRA_REVIEWER_CUSTOM_FIELD"
EOF
- name: Terraform Init
run: terraform init
- name: Terraform Plan
run: terraform plan -input=false
- name: Terraform Apply
run: terraform apply -auto-approve -input=false