1
1
name : Create and publish Otp Provider Docker image
2
2
3
3
on :
4
+ workflow_dispatch :
5
+ inputs :
6
+ environment :
7
+ description : ' Choose environment'
8
+ required : true
9
+ default : ' development'
10
+ type : choice
11
+ options :
12
+ - development
13
+ - production
14
+ version :
15
+ description : ' Image tag (e.g. v1.2.3)'
16
+ required : true
17
+ default : ' latest'
4
18
push :
5
19
branches :
6
20
- ' dev'
16
30
17
31
steps :
18
32
- name : Set env to development
19
- if : (github.ref == 'refs/heads/dev' && github.event_name == 'push')
33
+ if : (github.ref == 'refs/heads/dev' && github.event_name == 'push') || (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'development')
20
34
run : |
21
35
cat >> $GITHUB_ENV <<EOF
22
36
APP_ENV=development
@@ -30,21 +44,49 @@ jobs:
30
44
HASH_SALT=${{ secrets.DEV_HASH_SALT }}
31
45
32
46
GRAFANA_OAUTH_CLIENT_SECRET=${{secrets.DEV_GRAFANA_OAUTH_CLIENT_SECRET}}
33
- GRAFANA_OATH_CLIENT_ID =${{secrets.DEV_GRAFANA_OATH_CLIENT_ID }}
47
+ GRAFANA_OAUTH_CLIENT_ID =${{secrets.DEV_GRAFANA_OAUTH_CLIENT_ID }}
34
48
KEYCLOAK_BASE_URL=${{secrets.DEV_KEYCLOAK_BASE_URL}}
35
49
50
+ EOF
51
+
52
+ - name : Set env to production
53
+ if : (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'production')
54
+ run : |
55
+ cat >> $GITHUB_ENV <<EOF
56
+ APP_ENV=production
57
+ APP_URL=https://otp.loginproxy.gov.bc.ca
58
+ TF_STATE_BUCKET=xgr00q-prod-sso-otp-provider
59
+ TF_STATE_BUCKET_KEY=sso-otp-provider.tfstate
60
+ TF_STATE_DYNAMODB_TABLE=xgr00q-prod-otp-state-locking
61
+ CUSTOM_DOMAIN_NAME=otp.loginproxy.gov.bc.ca
62
+ CORS_ORIGINS=https://dev.loginproxy.gov.bc.ca,https://test.loginproxy.gov.bc.ca,https://loginproxy.gov.bc.ca,https://sso-playground.apps.gold.devops.gov.bc.ca
63
+ NODE_ENV=production
64
+ HASH_SALT=${{ secrets.PROD_HASH_SALT }}
65
+
66
+ GRAFANA_OAUTH_CLIENT_SECRET=${{secrets.PROD_GRAFANA_OAUTH_CLIENT_SECRET}}
67
+ GRAFANA_OAUTH_CLIENT_ID=${{secrets.PROD_GRAFANA_OAUTH_CLIENT_ID}}
68
+ KEYCLOAK_BASE_URL=${{secrets.PROD_KEYCLOAK_BASE_URL}}
69
+
36
70
EOF
37
71
- name : Checkout repository
38
72
uses : actions/checkout@v3
39
73
40
74
- uses : hashicorp/setup-terraform@v3
41
75
42
- - name : Configure AWS Credentials
76
+ - name : Configure AWS Dev Credentials
77
+ if : (github.ref == 'refs/heads/dev' && github.event_name == 'push') || (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'development')
43
78
uses : aws-actions/configure-aws-credentials@v4
44
79
with :
45
80
role-to-assume : ${{ secrets.DEV_OTP_TF_DEPLOY_ROLE_ARN }}
46
81
aws-region : ca-central-1
47
82
83
+ - name : Configure AWS Prod Credentials
84
+ if : (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'production')
85
+ uses : aws-actions/configure-aws-credentials@v4
86
+ with :
87
+ role-to-assume : ${{ secrets.PROD_OTP_TF_DEPLOY_ROLE_ARN }}
88
+ aws-region : ca-central-1
89
+
48
90
- name : Login to Amazon ECR
49
91
id : login-ecr
50
92
uses : aws-actions/amazon-ecr-login@v2
53
95
env :
54
96
REGISTRY : ${{ steps.login-ecr.outputs.registry }}
55
97
REPOSITORY : ${{ env.IMAGE_NAME }}
56
- IMAGE_TAG : latest
98
+ IMAGE_TAG : ${{ github.event.inputs.version || ' latest' }}
57
99
run : |
58
100
echo "Building and pushing Docker image to ECR..."
59
101
docker build -t $REGISTRY/$REPOSITORY:$IMAGE_TAG .
@@ -86,12 +128,13 @@ jobs:
86
128
otp_validity_minutes="5"
87
129
otp_attempts_allowed="5"
88
130
otp_resends_allowed_per_day="4"
89
- otp_resend_interval_minutes="[1,2,5,60 ]"
131
+ otp_resend_interval_minutes="[1,2,5,25 ]"
90
132
grafana_admin_password="${{env.GRAFANA_ADMIN_PASS}}"
91
133
enable_grafana=true
92
134
grafana_oauth_client_secret="${{env.GRAFANA_OAUTH_CLIENT_SECRET}}"
93
- grafana_oath_client_id ="${{env.GRAFANA_OATH_CLIENT_ID }}"
135
+ grafana_oauth_client_id ="${{env.GRAFANA_OAUTH_CLIENT_ID }}"
94
136
keycloak_base_url="${{env.KEYCLOAK_BASE_URL}}"
137
+ image_tag="${{ github.event.inputs.version || 'latest' }}"
95
138
96
139
EOF
97
140
0 commit comments