Skip to content

Commit dd4a3e5

Browse files
TheRustifyergbm25
andauthored
First deployment on PRE via GitHub actions triggered by a chat command on PR (#8)
* feat: automating the deploy process on our PRE environement --------- Co-authored-by: Gonzalo Busto Musi <[email protected]>
1 parent 90d62ba commit dd4a3e5

File tree

3 files changed

+34
-28
lines changed

3 files changed

+34
-28
lines changed

.github/workflows/deploy-pre.yml

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,45 +8,50 @@ jobs:
88
runs-on: ubuntu-latest
99

1010
steps:
11+
# Step 1: Checkout the code
1112
- name: Checkout Code
12-
uses: actions/checkout@v3
13+
uses: actions/checkout@v4
1314

14-
- name: Set up Docker
15-
uses: docker/setup-buildx-action@v2
16-
17-
- name: Build Docker Image
15+
# Step 2: Build the Docker image using Docker Compose
16+
- name: Build Docker Image with Docker Compose
1817
run: |
19-
docker build -t api-gateway:latest ./docker
18+
docker compose -f ./docker/docker-compose.yml build
2019
21-
- name: Save Docker Image
20+
# Step 3: Save and compress the Docker image
21+
- name: Save and Compress Docker Image
2222
run: |
23-
docker save api-gateway:latest | gzip > api-gateway.tar.gz
23+
docker save api-gateway:latest > api-gateway.tar.gz
2424
25-
- name: Copy Docker Image and Compose File to Droplet
26-
uses: appleboy/[email protected]
25+
# Step 4: Transfer compressed Docker image to the remote server
26+
- name: Transfer Docker Image to Droplet
27+
uses: appleboy/[email protected]
2728
with:
2829
host: ${{ secrets.SSH_HOST }}
29-
username: ${{ secrets.SSH_USER }}
30+
username: ${{ secrets.SSH_USERNAME }}
3031
key: ${{ secrets.SSH_KEY }}
31-
source: |
32-
./api-gateway.tar.gz
33-
./docker-compose.yml
34-
target: /opt/api-gateway/
32+
source: api-gateway.tar.gz
33+
target: /opt/summoners-sync/api-gateway
3534

36-
- name: Deploy with Docker Compose
35+
# Step 5: Load and run the Docker image on the remote server
36+
- name: Deploy Docker Image on Remote
3737
uses: appleboy/[email protected]
3838
with:
3939
host: ${{ secrets.SSH_HOST }}
4040
username: ${{ secrets.SSH_USERNAME }}
4141
key: ${{ secrets.SSH_KEY }}
4242
script: |
43-
cd /opt/api-gateway
43+
set -e
4444
45-
# Stop and remove old services
46-
docker-compose down || true
45+
# Navigate to deployment directory
46+
cd /opt/summoners-sync/api-gateway
47+
48+
# Stop and remove existing container if it exists
49+
docker stop api-gateway || true
50+
docker rm api-gateway || true
51+
docker rmi api-gateway || true
4752
48-
# Load the new Docker image
49-
gunzip -c api-gateway.tar.gz | docker load
53+
# Load the Docker image
54+
docker load < api-gateway.tar.gz
5055
51-
# Start the service with the new image
52-
docker-compose up -d
56+
# Run the new container
57+
docker run -d --name api-gateway --restart always api-gateway:latest

docker/Dockerfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
FROM maven:3.9.9-ibm-semeru-23-jammy AS build
33
WORKDIR /app
44

5-
COPY ../mvnw ./
6-
COPY ../.mvn .mvn
7-
COPY ../pom.xml ./
8-
COPY ../src/ ./src
5+
COPY mvnw ./
6+
COPY .mvn .mvn
7+
COPY pom.xml ./
8+
COPY src/ ./src
99

1010
RUN chmod +x mvnw && \
1111
# ./mvnw clean install

docker/docker-compose.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
version: "3.8"
12
services:
23
api-gateway:
3-
container_name: api-gateway
44
build:
55
context: ..
66
dockerfile: docker/Dockerfile
7+
image: api-gateway:latest
78
ports:
89
- "8080:8080"
910
environment:

0 commit comments

Comments
 (0)