Skip to content
This repository was archived by the owner on Aug 19, 2025. It is now read-only.

Commit 1aeec24

Browse files
Add GitHub Actions workflows for building, testing, and deploying a Docker image to a VPS.
1 parent 315a4f8 commit 1aeec24

3 files changed

Lines changed: 95 additions & 0 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Deploy to VPS
2+
3+
on:
4+
workflow_run:
5+
workflows: ["Docker Image CI"]
6+
types:
7+
- completed
8+
9+
jobs:
10+
deploy:
11+
if: ${{ github.event.workflow_run.conclusion == 'success' }}
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Check out repository
16+
uses: actions/checkout@v2
17+
18+
- name: Deploy to VPS
19+
uses: appleboy/ssh-action@v0.1.3
20+
with:
21+
host: ${{ secrets.SSH_IP_HOST }}
22+
username: ${{ secrets.SSH_USERNAME }}
23+
key: ${{ secrets.SSH_PRIVATE_KEY }}
24+
port: 22
25+
script: |
26+
echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
27+
docker stop user || true
28+
docker rm user || true
29+
docker rmi ${{ secrets.DOCKERHUB_REPOSITORY }}:latest || true
30+
docker pull ${{ secrets.DOCKERHUB_REPOSITORY }}:latest
31+
docker run -d --network host --name user \
32+
-e SPRING_PROFILES_ACTIVE=prod \
33+
-e eureka.environment=prod \
34+
-e AUTH_BASE_URL=${{ secrets.AUTH_BASE_URL }} \
35+
-e AUTH_RESQUEUE_CLIENT_SECRET=${{ secrets.AUTH_RESQUEUE_CLIENT_SECRET }} \
36+
-e KC_BASE_ISSUER_URL=${{ secrets.KC_BASE_ISSUER_URL }} \
37+
-e EUREKA_URL=${{ secrets.EUREKA_URL }} \
38+
${{ secrets.DOCKERHUB_REPOSITORY }}:latest

.github/workflows/docker-image.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Docker Image CI
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v3
15+
with:
16+
fetch-depth: 0
17+
18+
- name: Verify tag is from main branch
19+
run: |
20+
git fetch origin main
21+
if [ "$(git rev-list -n 1 origin/main)" != "$(git rev-list -n 1 $GITHUB_SHA)" ]; then
22+
echo "Tag was not created from the main branch. Exiting."
23+
exit 1
24+
fi
25+
26+
- name: Log in to Docker Hub
27+
run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
28+
29+
- name: Build the Docker image
30+
run: docker build -t ${{ secrets.DOCKERHUB_REPOSITORY }}:latest .
31+
32+
- name: Push the Docker image
33+
run: |
34+
docker tag ${{ secrets.DOCKERHUB_REPOSITORY }}:latest ${{ secrets.DOCKERHUB_REPOSITORY }}:${{ github.ref_name }}
35+
docker push ${{ secrets.DOCKERHUB_REPOSITORY }}:latest
36+
docker push ${{ secrets.DOCKERHUB_REPOSITORY }}:${{ github.ref_name }}

Dockerfile

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
FROM maven:3-amazoncorretto-21 AS build
2+
3+
WORKDIR /app
4+
5+
COPY pom.xml .
6+
7+
RUN mvn dependency:resolve
8+
9+
COPY src ./src
10+
11+
RUN mvn clean package -DskipTests
12+
13+
FROM amazoncorretto:21 AS runner
14+
15+
WORKDIR /app
16+
17+
COPY --from=build /app/target/*.jar app.jar
18+
19+
EXPOSE 9001
20+
21+
CMD ["java", "-jar", "app.jar"]

0 commit comments

Comments
 (0)