66 ec2_ip :
77 required : true
88 type : string
9+ OPENAI_MODEL :
10+ required : false
11+ type : string
12+ default : " gpt-4o-mini"
13+ LLM_PROVIDER :
14+ required : false
15+ type : string
16+ default : " openai"
917 secrets :
1018 AWS_EC2_PRIVATE_KEY :
1119 required : true
1220 MONGODB_URL :
1321 required : true
22+ MONGODB_DATABASE :
23+ required : true
1424 JWT_SECRET :
1525 required : true
1626 OPENAI_BASE_URL :
1727 required : true
1828 OPENAI_API_KEY :
1929 required : true
30+ GRAFANA_ADMIN_USER :
31+ required : true
32+ GRAFANA_ADMIN_PASSWORD :
33+ required : true
2034permissions :
2135 contents : read
2236 packages : read
5468 host : ${{ inputs.ec2_ip }}
5569 username : ${{ vars.AWS_EC2_USER }}
5670 key : ${{ secrets.AWS_EC2_PRIVATE_KEY }}
71+ # Copy and rename the compose file so that the follow-up command uses the expected filename
5772 source : " ./compose.aws.yml"
58- target : /home/${{ vars.AWS_EC2_USER }}
73+ target : /home/${{ vars.AWS_EC2_USER }}/docker-compose.prod.yml
5974
6075 - name : Get latest version (or use 1.0.0-beta as fallback)
6176 id : get_tag
@@ -83,25 +98,30 @@ jobs:
8398 echo "SPRING_PROFILES_ACTIVE=prod" >> .env
8499
85100 echo "MONGO_URL=${{ secrets.MONGODB_URL }}" >> .env
86- echo "MONGODB_DATABASE=SkillForge " >> .env
101+ echo "MONGODB_DATABASE=${{ secrets.MONGODB_DATABASE }} " >> .env
87102
88103 echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> .env
89104
90- echo "OPENAI_BASE_URL=${{ secrets.OPENAI_BASE_URL }}" >> .env
105+ # GenAI service expects OPENAI_API_BASE
106+ echo "OPENAI_API_BASE=${{ secrets.OPENAI_BASE_URL }}" >> .env
91107 echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> .env
92- echo "OPENAI_MODEL=gpt-4o" >> .env
108+ echo "OPENAI_MODEL=${{ inputs.OPENAI_MODEL }}" >> .env
109+ echo "LLM_PROVIDER=${{ inputs.LLM_PROVIDER }}" >> .env
110+
93111 echo "UVICORN_WORKERS=${{ vars.UVICORN_WORKERS }}" >> .env
94112
95- echo "VITE_PUBLIC_API_URL=https://api.${{ vars.EC2_PUBLIC_IP }}.nip.io/api" >> .env
96- echo "CLIENT_HOST=client.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env
97- echo "SERVER_HOST=api.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env
98- echo "GENAI_HOST=api.genai.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env
99- echo "MAILHOG_HOST=mail.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env
100- echo "PROMETHEUS_HOST=prometheus.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env
101- echo "LOKI_HOST=loki.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env
102- echo "PROMTAIL_HOST=promtail.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env
103- echo "ALERTMANAGER_HOST=alertmanager.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env
104- echo "GRAFANA_HOST=grafana.${{ vars.EC2_PUBLIC_IP }}.nip.io" >> .env
113+ echo "VITE_PUBLIC_API_URL=https://api.${{ inputs.ec2_ip }}.nip.io/api" >> .env
114+ echo "CLIENT_HOST=client.${{ inputs.ec2_ip }}.nip.io" >> .env
115+ echo "SERVER_HOST=api.${{ inputs.ec2_ip }}.nip.io" >> .env
116+ echo "GENAI_HOST=api.genai.${{ inputs.ec2_ip }}.nip.io" >> .env
117+ echo "MAILHOG_HOST=mail.${{ inputs.ec2_ip }}.nip.io" >> .env
118+ echo "PROMETHEUS_HOST=prometheus.${{ inputs.ec2_ip }}.nip.io" >> .env
119+ echo "PROMTAIL_HOST=promtail.${{ inputs.ec2_ip }}.nip.io" >> .env
120+ echo "ALERTMANAGER_HOST=alertmanager.${{ inputs.ec2_ip }}.nip.io" >> .env
121+ echo "GRAFANA_HOST=grafana.${{ inputs.ec2_ip }}.nip.io" >> .env
122+
123+ echo "GRAFANA_ADMIN_USER=${{ secrets.GRAFANA_ADMIN_USER }}" >> .env
124+ echo "GRAFANA_ADMIN_PWD=${{ secrets.GRAFANA_ADMIN_PASSWORD }}" >> .env
105125
106126 chmod 600 .env
107127 echo ".env file created ✅"
@@ -129,16 +149,16 @@ jobs:
129149 - name : Echo all links
130150 run : |
131151 echo "Deployment complete! Access your services at:"
132- echo "Client: https://client.${{ vars.EC2_PUBLIC_IP }}.nip.io"
133- echo "API: https://api.${{ vars.EC2_PUBLIC_IP }}.nip.io"
134- echo "GenAI: https://api.genai.${{ vars.EC2_PUBLIC_IP }}.nip.io"
135- echo "Mailhog: https://mail.${{ vars.EC2_PUBLIC_IP }}.nip.io"
136- echo "Prometheus: https://prometheus.${{ vars.EC2_PUBLIC_IP }}.nip.io"
137- echo "Loki: https://loki.${{ vars.EC2_PUBLIC_IP }}.nip.io"
138- echo "Promtail: https://promtail.${{ vars.EC2_PUBLIC_IP }}.nip.io"
139- echo "Alertmanager: https://alertmanager.${{ vars.EC2_PUBLIC_IP }}.nip.io"
140- echo "Grafana: https://grafana.${{ vars.EC2_PUBLIC_IP }}.nip.io"
141- echo "Check the status of your services with:"
152+ echo "Client: https://client.${{ inputs.ec2_ip }}.nip.io"
153+ echo "API: https://api.${{ inputs.ec2_ip }}.nip.io"
154+ echo "GenAI: https://api.genai.${{ inputs.ec2_ip }}.nip.io"
155+ echo "Mailhog: https://mail.${{ inputs.ec2_ip }}.nip.io"
156+ echo "Prometheus: https://prometheus.${{ inputs.ec2_ip }}.nip.io"
157+ echo "Loki: https://loki.${{ inputs.ec2_ip }}.nip.io"
158+ echo "Promtail: https://promtail.${{ inputs.ec2_ip }}.nip.io"
159+ echo "Alertmanager: https://alertmanager.${{ inputs.ec2_ip }}.nip.io"
160+ echo "Grafana: https://grafana.${{ inputs.ec2_ip }}.nip.io"
161+ echo "Check the status of the services on the EC2 instance with:"
142162 echo "docker compose -f docker-compose.prod.yml ps"
143163 echo "View logs with:"
144164 echo "docker compose -f docker-compose.prod.yml logs --tail=40"
0 commit comments