1
+ name : Deploy Spectre on mainnet
2
+
3
+ on :
4
+ workflow_dispatch :
5
+ inputs :
6
+ release_tag :
7
+ description : ' The Release tag Version'
8
+ required : true
9
+ type : string
10
+
11
+
12
+ env :
13
+ AWS_REGION : ' ${{ secrets.AWS_REGION }}'
14
+ ENVIRONMENT : MAINNET
15
+ AWS_MAINNET : ' ${{ secrets.AWS_MAINNET }}'
16
+ REGISTRY : ' ghcr.io'
17
+ VERSION : ${{ inputs.release_tag }}
18
+
19
+ jobs :
20
+ deploy :
21
+ name : deploy
22
+ runs-on : ubuntu-latest
23
+
24
+ permissions :
25
+ contents : read
26
+ id-token : write
27
+ actions : write
28
+
29
+ steps :
30
+ - name : Authorised User only
31
+ run : |
32
+ if [[ ! " mpetrun5 MakMuftic eedygreen " =~ " ${{ github.actor }} " ]]; then
33
+ echo "You are not authorized to deploy to mainnet."
34
+ exit 1
35
+ fi
36
+
37
+ - name : checkout ecs file
38
+ uses : actions/checkout@v4
39
+ with :
40
+ repository : sygmaprotocol/devops
41
+ token : ${{ secrets.GHCR_TOKEN }}
42
+ ref : main
43
+
44
+ - name : render jinja2 templates to task definition json files
45
+
46
+ with :
47
+ template : ' spectre/spectre-node/ecs/task_definition-${{ env.ENVIRONMENT }}.j2'
48
+ output_file : ' spectre/spectre-node/ecs/task_definition-${{ env.ENVIRONMENT }}.json'
49
+ data_format : json
50
+ variables : |
51
+ awsAccountId=${{ env.AWS_MAINNET }}
52
+ awsRegion=${{ env.AWS_REGION }}
53
+ awsEnv=${{ env.ENVIRONMENT }}
54
+ imageTag=${{ env.VERSION }}
55
+ awsEfs=${{ secrets.SPECTRE_EFS_MAINNET }}
56
+
57
+ - name : Configure AWS Credentials
58
+ uses : aws-actions/configure-aws-credentials@v4
59
+ with :
60
+ role-to-assume : arn:aws:iam::${{ env.AWS_MAINNET }}:role/github-actions-${{ env.ENVIRONMENT }}-sygma
61
+ aws-region : ${{ env.AWS_REGION }}
62
+ role-session-name : GithubActions
63
+
64
+ - name : Deploy to Amazon ECS
65
+ uses : aws-actions/amazon-ecs-deploy-task-definition@v2
66
+ with :
67
+ task-definition : spectre/spectre-node/ecs/task_definition-${{ env.ENVIRONMENT }}.json
68
+ service : spectre-service-${{ env.ENVIRONMENT }}
69
+ cluster : relayer-${{ env.ENVIRONMENT }}
70
+ wait-for-service-stability : true
71
+
72
+ - name : slack notify
73
+ uses : 8398a7/action-slack@v3
74
+ with :
75
+ status : ${{ job.status }}
76
+ fields : repo,message,commit,author,action,job,eventName,ref,workflow
77
+ env :
78
+ SLACK_WEBHOOK_URL : ${{ secrets.SLACK_WEBHOOK_URL }}
79
+ if : always()
80
+
0 commit comments