forked from valory-xyz/open-operator-watchtower
-
Notifications
You must be signed in to change notification settings - Fork 0
147 lines (125 loc) · 5.13 KB
/
aws_deploy_service.yaml
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
142
143
144
145
146
147
name: Deploy service
on:
workflow_dispatch:
jobs:
deploy-infra-docker:
if: ${{ vars.DEPLOYMENT_TYPE == 'docker' || vars.DEPLOYMENT_TYPE == '' }}
runs-on: ubuntu-latest
continue-on-error: False
name: Deploy service (AWS, Docker Compose)
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Generate the service deployment
env:
SERVICE_REPO_URL: ${{ vars.SERVICE_REPO_URL }}
SERVICE_REPO_TAG: ${{ vars.SERVICE_REPO_TAG }}
SERVICE_ID: ${{ vars.SERVICE_ID }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
VARS_CONTEXT: ${{ toJson(vars) }}
SECRETS_CONTEXT: ${{ toJson(secrets) }}
DEPLOYMENT_TYPE: ${{ env.DEPLOYMENT_TYPE }}
run: |
./scripts/generate_service_deployment.sh
- name: Store SSH public and private keys
env:
PRIVATE_KEY: ${{ secrets.OPERATOR_SSH_PRIVATE_KEY }}
PRIVATE_KEY_PASSPHRASE: ${{ secrets.OPERATOR_SSH_PRIVATE_KEY_PASSPHRASE }}
run: |
./scripts/store_public_private_keys.sh
- name: Set up AWS CLI
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-2
- name: Set up Terraform Version
uses: hashicorp/setup-terraform@v2
with:
terraform_version: 1.4.6
terraform_wrapper: false
- name: Terraform Init
run: |
cd infra/aws/docker-compose
terraform init -backend-config="bucket=${{ vars.TFSTATE_S3_BUCKET }}"
- name: Terraform Plan
run: |
cd infra/aws/docker-compose
terraform plan
- name: Terraform Deploy
run: |
cd infra/aws/docker-compose
terraform apply -auto-approve
echo "INSTANCE_ID=$(terraform output -raw instance_id)" >> "$GITHUB_ENV"
echo "INSTANCE_PUBLIC_IP=$(terraform output -raw instance_public_ip)" >> "$GITHUB_ENV"
- name: Wait for the AWS EC2 instance status OK
run: |
aws ec2 wait instance-status-ok --instance-ids ${{ env.INSTANCE_ID }}
sleep 30
- name: Copy and execute the service deployment script on the AWS EC2 instance
run: |
scp -v -o StrictHostKeyChecking=no -i ${{ env.PRIVATE_KEY_FILE }} ./deploy_service.sh ubuntu@${{ env.INSTANCE_PUBLIC_IP }}:~
ssh -v -o StrictHostKeyChecking=no -i ${{ env.PRIVATE_KEY_FILE }} ubuntu@${{ env.INSTANCE_PUBLIC_IP }} 'nohup ~/deploy_service.sh > deploy_service.log 2>&1 &'
- name: Summary
run: |
echo "Summary:"
echo " - Service repository URL: ${{ vars.SERVICE_REPO_URL }}"
echo " - Service repository tag: ${{ vars.SERVICE_REPO_TAG }}"
echo " - Service ID: ${{ vars.SERVICE_ID }}"
echo " - AWS EC2 instance public IP: ${{ env.INSTANCE_PUBLIC_IP }}"
echo " - AWS EC2 instance ID: ${{ env.INSTANCE_ID }}"
echo ""
echo "Please wait until the AWS EC2 instance finishes completing the service deployment."
deploy-infra-kubernetes:
if: ${{ vars.DEPLOYMENT_TYPE == 'kubernetes' }}
runs-on: ubuntu-latest
continue-on-error: False
name: Deploy service (AWS, Kubernetes)
steps:
- name: Unsupported
run: |
echo "Kubernetes deployments are currently unsupported through GitHub actions."
exit 1
- name: Checkout code
uses: actions/checkout@v3
- name: Generate the service deployment (1/2)
env:
SERVICE_REPO_URL: ${{ vars.SERVICE_REPO_URL }}
SERVICE_REPO_TAG: ${{ vars.SERVICE_REPO_TAG }}
SERVICE_ID: ${{ vars.SERVICE_ID }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
VARS_CONTEXT: ${{ toJson(vars) }}
SECRETS_CONTEXT: ${{ toJson(secrets) }}
DEPLOYMENT_TYPE: ${{ vars.DEPLOYMENT_TYPE }}
run: |
./scripts/generate_service_deployment.sh
- name: Generate the service deployment (2/2)
run: |
docker run --rm -t -v "$PWD":"/work" -w "/work" \
valory/open-autonomy-user:latest \
-c "./deploy_service.sh"
- name: Store SSH public and private keys
env:
PRIVATE_KEY: ${{ secrets.OPERATOR_SSH_PRIVATE_KEY }}
PRIVATE_KEY_PASSPHRASE: ${{ secrets.OPERATOR_SSH_PRIVATE_KEY_PASSPHRASE }}
run: |
./scripts/store_public_private_keys.sh
- name: Set up AWS CLI
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-2
- name: Set up Terraform Version
uses: hashicorp/setup-terraform@v2
with:
terraform_version: 1.4.6
terraform_wrapper: false
- name: Terraform Init
run: |
cd infra/aws/kubernetes
terraform init -backend-config="bucket=${{ vars.TFSTATE_S3_BUCKET }}"
- name: Terraform Plan
run: |
cd infra/aws/kubernetes
terraform plan