3131
3232 echo "✔ Mensagem válida."
3333
34-
3534 # --- Instalar dependências ---
3635 - name : Instalar dependências
3736 run : npm ci
@@ -144,35 +143,106 @@ jobs:
144143 draft : false
145144 prerelease : false
146145 env :
147- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
146+ GITHUB_TOKEN :
147+ ${{ secrets.GITHUB_TOKEN }}
148148
149- # ---- Imagem Docker -----
149+ # Docker Login
150150 - name : Login Docker Hub
151151 uses : docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
152152 with :
153153 username : ${{ secrets.DOCKER_USERNAME }}
154154 password : ${{ secrets.DOCKER_PASSWORD }}
155155
156- - name : Extrai metadatas para o Docker
157- id : meta
156+ # Docker Image Back-PROD
157+ - name : Extrai metadatas para a Imagem Back-Prod
158+ id : metaProd
158159 uses : docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
159160 with :
160- images : saneasp /back-sanea
161+ images : ${{ secrets.DOCKER_USERNAME }} /back-sanea-prod
161162 tags : |
162163 type=raw,value=${{ steps.version.outputs.new_version }}
163164 type=raw,value=latest
164165
165- - name : Build e publicação da imagem Docker
166- id : push
166+ - name : Build e publicação da Imagem Back-Prod
167+ id : pushProd
167168 uses : docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671
168169 with :
169170 context : .
170171 file : ./Dockerfile
171172 push : true
172- tags : ${{ steps.meta.outputs.tags }}
173- labels : ${{ steps.meta.outputs.labels }}
173+ tags : ${{ steps.metaProd.outputs.tags }}
174+ labels : ${{ steps.metaProd.outputs.labels }}
175+ env :
176+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
177+
178+ # Docker Image Back-DEV
179+
180+ - name : Extrai metadatas para a Imagem Back-Dev
181+ id : metaDev
182+ uses : docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
183+ with :
184+ images : ${{ secrets.DOCKER_USERNAME }}/back-sanea-dev
185+ tags : |
186+ type=raw,value=${{ steps.version.outputs.new_version }}
187+ type=raw,value=latest
188+
189+ - name : Build e publicação da Imagem Back-Dev
190+ id : pushDev
191+ uses : docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671
192+ with :
193+ context : .
194+ file : ./Dockerfile.dev
195+ push : true
196+ tags : ${{ steps.metaDev.outputs.tags }}
197+ labels : ${{ steps.metaDev.outputs.labels }}
174198 env :
175199 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
200+ # --- Deploy automático via Render ---
201+ - name : Deploy via Render API
202+ env :
203+ RENDER_API_KEY : ${{secrets.RENDER_API_KEY}}
204+ SERVICE_ID : ${{secrets.SERVICE_ID}}
205+ REPO_NAME : ${{secrets.REPO_NAME_PROD}}
206+ run : |
207+ echo "Criando payload para deploy da versão latest"
208+
209+ PAYLOAD=$(jq -n \
210+ --arg image "docker.io/${{ secrets.DOCKER_USERNAME }}/$REPO_NAME:latest" \
211+ --arg version "latest" \
212+ '{
213+ clearCache: "clear",
214+ imageUrl: $image,
215+ overrideImage: true,
216+ imagePullPolicy: "Always"
217+ }'
218+ )
219+
220+ echo "Payload JSON gerado:"
221+ echo "$PAYLOAD" | jq .
222+
223+ echo "Iniciando deploy no Render..."
224+
225+ RESPONSE=$(curl -i -s -X POST \
226+ "https://api.render.com/v1/services/$SERVICE_ID/deploys" \
227+ -H "Accept: application/json" \
228+ -H "Content-Type: application/json" \
229+ -H "Authorization: Bearer $RENDER_API_KEY" \
230+ -d "$PAYLOAD"
231+ )
232+
233+ echo "Resposta completa:"
234+ echo "$RESPONSE"
235+
236+ HTTP_STATUS=$(echo "$RESPONSE" | grep HTTP | awk '{print $2}')
237+
238+ echo "Status da resposta HTTP: $HTTP_STATUS"
239+
240+ if [[ "$HTTP_STATUS" =~ ^2[0-9]{2}$ ]]; then
241+ echo "Deploy iniciado com sucesso!"
242+ else
243+ echo "Falha no deploy!"
244+ exit 1
245+ fi
176246
177247 # --- Enviar e-mail em caso de falha ---
178248 notify_failure :
@@ -182,7 +252,6 @@ jobs:
182252 if : failure()
183253
184254 steps :
185-
186255 # --- Checkout do código ---
187256 - name : Checkout code
188257 uses : actions/checkout@v3
@@ -220,4 +289,4 @@ jobs:
220289 subject : " 🚨 Falha no Pipeline - ${{ github.ref_name }}"
221290 to : " ${{ secrets.TEAM_EMAILS }}"
222291 from : " CI/CD SaneaSP <no-reply@saneasp.com>"
223- html_body : ${{ steps.template.outputs.html }}
292+ html_body : ${{ steps.template.outputs.html }}
0 commit comments