Skip to content

Commit b96bf86

Browse files
Add sequential workflows for CI and deployment in Render
New workflows have been created to improve the CI/CD workflow. The pipeline now includes separate steps for code verification, building with Maven, building and pushing the Docker image, and an automatic deployment to Render. Each step is encapsulated in a separate workflow, with sequential execution, where the deployment to Render is triggered only if all previous steps are successful.
1 parent dc6ace6 commit b96bf86

7 files changed

Lines changed: 139 additions & 47 deletions

File tree

.github/workflows/checkout.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Checkout Code
2+
3+
on:
4+
workflow_dispatch: # Este workflow será disparado por el workflow general
5+
6+
jobs:
7+
checkout:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Checkout code
11+
uses: actions/checkout@v4

.github/workflows/ci-pipeline.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: General CI Pipeline
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
pull_request:
7+
branches: [ "main" ]
8+
9+
jobs:
10+
trigger_checkout:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Trigger Checkout Workflow
14+
uses: peter-evans/workflow-dispatch@v1
15+
with:
16+
repository: ${{ github.repository }}
17+
workflow: checkout.yml
18+
ref: ${{ github.ref }}
19+
20+
trigger_maven_build:
21+
runs-on: ubuntu-latest
22+
needs: trigger_checkout # Este trabajo depende de 'trigger_checkout'
23+
steps:
24+
- name: Trigger Maven Build Workflow
25+
uses: peter-evans/workflow-dispatch@v1
26+
with:
27+
repository: ${{ github.repository }}
28+
workflow: maven-build.yml
29+
ref: ${{ github.ref }}
30+
31+
trigger_docker_build:
32+
runs-on: ubuntu-latest
33+
needs: trigger_maven_build # Depende de 'trigger_maven_build'
34+
steps:
35+
- name: Trigger Docker Build Workflow
36+
uses: peter-evans/workflow-dispatch@v1
37+
with:
38+
repository: ${{ github.repository }}
39+
workflow: docker-build.yml
40+
ref: ${{ github.ref }}
41+
42+
trigger_docker_push:
43+
runs-on: ubuntu-latest
44+
needs: trigger_docker_build # Depende de 'trigger_docker_build'
45+
steps:
46+
- name: Trigger Docker Push Workflow
47+
uses: peter-evans/workflow-dispatch@v1
48+
with:
49+
repository: ${{ github.repository }}
50+
workflow: docker-push.yml
51+
ref: ${{ github.ref }}
52+
53+
trigger_render_deploy:
54+
runs-on: ubuntu-latest
55+
needs: trigger_docker_push # Depende de 'trigger_docker_push'
56+
steps:
57+
- name: Trigger Deploy to Render
58+
uses: peter-evans/workflow-dispatch@v1
59+
with:
60+
repository: ${{ github.repository }}
61+
workflow: render-deploy.yml
62+
ref: ${{ github.ref }}

.github/workflows/docker-build.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: Build Docker Image
2+
3+
on:
4+
workflow_dispatch: # Este workflow será disparado por el workflow general
5+
6+
jobs:
7+
docker_build:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Set up Docker Buildx
11+
uses: docker/setup-buildx-action@v2
12+
13+
- name: Build the Docker image
14+
run: docker build --platform linux/amd64 -t ${{secrets.DOCKER_USERNAME}}/${{secrets.DOCKER_APP_NAME}}:${{secrets.DOCKER_APP_TAG}} .

.github/workflows/docker-image.yml

Lines changed: 0 additions & 47 deletions
This file was deleted.

.github/workflows/docker-push.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Publish Docker Image
2+
3+
on:
4+
workflow_dispatch: # Este workflow será disparado por el workflow general
5+
6+
jobs:
7+
docker_push:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Log in to Docker Hub
11+
uses: docker/login-action@v2
12+
with:
13+
username: ${{ secrets.DOCKER_USERNAME }}
14+
password: ${{ secrets.DOCKER_PASSWORD }}
15+
16+
- name: Push Docker image
17+
run: docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_APP_NAME }}:${{ secrets.DOCKER_APP_TAG }}

.github/workflows/maven-build.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Build with Maven
2+
3+
on:
4+
workflow_dispatch: # Este workflow será disparado por el workflow general
5+
6+
jobs:
7+
build:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Set up JDK 17
11+
uses: actions/setup-java@v3
12+
with:
13+
java-version: '17'
14+
distribution: 'temurin'
15+
16+
- name: Build with Maven
17+
run: mvn clean package -DskipTests -P docker -f pom.xml
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: Deploy to Render
2+
3+
on:
4+
workflow_dispatch: # Este workflow será disparado por el workflow general
5+
6+
jobs:
7+
deploy:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Trigger deploy to Render
11+
run: |
12+
response=$(curl -s -w "%{http_code}" -o /dev/null -X POST https://api.render.com/deploy/srv-csgeg0lumphs73b48veg?key=${{ secrets.RENDER_DEPLOY_KEY }})
13+
if [[ "$response" -ne 200 ]]; then
14+
echo "Deploy failed with status code $response"
15+
exit 1
16+
else
17+
echo "Deploy successful!"
18+
fi

0 commit comments

Comments
 (0)