-
Notifications
You must be signed in to change notification settings - Fork 15
141 lines (132 loc) · 4.6 KB
/
Copy pathcf-deploy.yml
File metadata and controls
141 lines (132 loc) · 4.6 KB
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
---
name: "Deploy CloudFormation Stack"
on:
workflow_call:
inputs:
s3-bucket:
description: 'Add bucket name'
required: true
type: string
bucket-prefix:
description: 'bucket folder name'
required: true
type: string
aws-region:
description: 'AWS REGION'
required: false
default: 'us-east-1'
type: string
stack-name:
description: 'Stack name defined'
required: true
type: string
template-path:
description: 'Cloudformation template path add here'
required: true
type: string
organization-name:
description: ' GitHub organization name'
required: true
type: string
GitHub-repo-name:
description: ' GitHub repo name'
required: true
type: string
GitHub-branch:
description: 'GitHub branch name'
required: true
default: 'main'
type: string
code-folder:
description: 'Code folder where your lambda code stored ex-src(format-.ts/.py)'
required: false
default: 'src'
type: string
zip-file-name:
description: 'Name of zip file which converted into zip & adding into S3 bucket'
required: true
default: 'main.zip'
type: string
parameter-overrides:
description: 'The parameters to override in the stack inputs. You can pass a comma-delimited list or a file URL. The comma-delimited list has each entry formatted as <ParameterName>=<ParameterValue> or <ParameterName>="<ParameterValue>,<ParameterValue>".'
required: false
type: string
capabilities:
description: "The comma-delimited list of stack template capabilities to acknowledge. Defaults to 'CAPABILITY_IAM'"
required: false
default: "CAPABILITY_IAM"
type: string
secrets:
AWS_ACCESS_KEY_ID:
required: false
description: 'AWS Access Key ID to install AWS CLI.'
AWS_SECRET_ACCESS_KEY:
required: false
description: 'AWS Secret access key to install AWS CLI'
AWS_SESSION_TOKEN:
required: false
description: 'AWS Session Token to install AWS CLI'
ROLE-TO-ASSUME:
required: false
description: 'AWS Role ARN defined'
GITHUB:
required: false
description: 'GitHub token'
NAORU_API_KEY:
required: false
description: 'API key for naoru AI failure diagnosis (OpenRouter provider by default).'
jobs:
deploy-cf-stack:
runs-on: ubuntu-latest
steps:
- name: 📦 Checkout Repository
uses: actions/checkout@v7
- name: 📥 Checkout code from another Repo
uses: actions/checkout@v7
with:
repository: ${{ inputs.organization-name }}/${{ inputs.GitHub-repo-name }}
ref: ${{ inputs.GitHub-branch }}
token: ${{ secrets.GITHUB }}
path: ${{ inputs.GitHub-repo-name }}
- name: 🔐 Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v6
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID}}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-session-token: ${{ secrets.AWS_SESSION_TOKEN }}
aws-region: ${{ inputs.aws-region }}
role-to-assume: ${{ inputs.ROLE-TO-ASSUME }}
- name: 📦 Src folder code convert into zip and upload to S3
run: |
cd ${{ inputs.GitHub-repo-name }}/${{ inputs.code-folder }}
find . -maxdepth 1 -type f -exec zip ${{inputs.zip-file-name}} {} +
run: |
aws s3 cp ${{inputs.zip-file-name}} s3://${{ inputs.s3-bucket }}/${{ inputs.bucket-prefix }}/
- name: 🚀 Deploy cloudformation stack using template
uses: aws-actions/aws-cloudformation-github-deploy@v2
with:
name: ${{ inputs.stack-name }}
template: ${{ inputs.template-path }}
no-fail-on-empty-changeset: "1"
parameter-overrides: ${{ inputs.parameter-overrides }}
capabilities: ${{ inputs.capabilities }}
naoru:
name: 🩺 Diagnose failure (naoru)
needs: [deploy-cf-stack]
if: ${{ failure() }}
runs-on: ubuntu-latest
permissions:
contents: read
actions: read
pull-requests: write
steps:
- name: 🩺 Diagnose with naoru
env:
NAORU_KEY: ${{ secrets.NAORU_API_KEY }}
if: ${{ env.NAORU_KEY != '' }}
uses: clouddrove/naoru@v0
with:
api-key: ${{ secrets.NAORU_API_KEY }}
provider: openrouter
model: openai/gpt-4o
...