Compare commits

...

3 Commits

Author SHA1 Message Date
Florian THIERRY
d23320b218 Edit gitea action workflow to build and deploy kotlin app on production server.
Some checks failed
Build and Deploy Kotlin gradle Application / build-and-deploy (push) Has been cancelled
2025-05-11 17:20:22 +02:00
Florian THIERRY
4497891788 First workflow.
Some checks failed
Build and Deploy Kotlin gradle Application / build-and-deploy (push) Has been cancelled
2025-05-11 13:07:32 +02:00
Florian THIERRY
458e72d6aa Dockerisation. 2025-05-11 12:39:40 +02:00
6 changed files with 113 additions and 0 deletions

9
.gitea/gitea-runner.yml Normal file
View File

@@ -0,0 +1,9 @@
services:
runner:
image: docker.io/gitea/act_runner:latest
environment:
GITEA_INSTANCE_URL: "http://192.168.0.25:3000"
GITEA_RUNNER_REGISTRATION_TOKEN: "IfowioCs4PedXyRJMnedDVCXkRHjyDrZv1sdvaif"
GITEA_RUNNER_NAME: "runner-1"
volumes:
- /var/run/docker.sock:/var/run/docker.sock

View File

@@ -0,0 +1,50 @@
name: Build and Deploy Kotlin gradle Application
on:
push:
branches:
- working-poc
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Build backend docker image
run: |
sudo /usr/bin/docker build -t gitea-workshop-app -f ./Dockerfile-backend . --no-cache
- name: Extract backend docker image into archive
run: |
sudo /usr/bin/docker save gitea-workshop-app:latest -o ./gitea-workshop-app.tar
- name: Transfer artifacts to remote server
env:
SSH_PRIVATE_KEY: ${{ secrets.PROD_SSH_PRIVATE_KEY }}
REMOTE_HOST: ${{ secrets.PROD_REMOTE_HOST }}
REMOTE_USER: ${{ secrets.PROD_REMOTE_USER }}
REMOTE_PORT: ${{ secrets.PROD_REMOTE_PORT }}
REMOTE_PATH: ${{ secrets.PROD_REMOTE_PATH }}
run: |
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 400 ~/.ssh/id_rsa
scp -o StrictHostKeyChecking=no -P $REMOTE_PORT ./gitea-workshop-app.tar $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH
scp -o StrictHostKeyChecking=no -P $REMOTE_PORT ./docker-compose.yml $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH
- name: Launch application onto remote server
env:
SSH_PRIVATE_KEY: ${{ secrets.PROD_SSH_PRIVATE_KEY }}
REMOTE_HOST: ${{ secrets.PROD_REMOTE_HOST }}
REMOTE_USER: ${{ secrets.PROD_REMOTE_USER }}
REMOTE_PORT: ${{ secrets.PROD_REMOTE_PORT }}
REMOTE_PATH: ${{ secrets.PROD_REMOTE_PATH }}
run: |
ssh -o StrictHostKeyChecking=no $REMOTE_HOST -l $REMOTE_USER -p $REMOTE_PORT << EOC
cd $REMOTE_PATH
sudo /usr/bin/docker load < $REMOTE_PATH/gitea-workshop-app.tar
sudo /usr/bin/docker compose down
sudo /usr/bin/docker compose up --detach
EOC

15
Dockerfile-backend Normal file
View File

@@ -0,0 +1,15 @@
FROM gradle:8.12.1-jdk21 AS builder
COPY ./gradlew /app/
COPY ./build.gradle.kts /app/
COPY ./settings.gradle.kts /app/
COPY ./demo-application /app/demo-application
COPY ./demo-domain /app/demo-domain
COPY ./demo-exposition /app/demo-exposition
COPY ./demo-infrastructure /app/demo-infrastructure
COPY ./demo-launcher /app/demo-launcher
WORKDIR /app
RUN gradle build jar
FROM eclipse-temurin:21-jre-alpine AS final
COPY --from=builder /app/demo-launcher/build/libs/demo-launcher.jar /app/demo-launcher.jar
CMD ["java", "-jar", "/app/demo-launcher.jar"]

View File

@@ -0,0 +1,11 @@
meta {
name: Debug
type: http
seq: 3
}
get {
url: {{url}}/api/debug/info
body: none
auth: none
}

View File

@@ -0,0 +1,16 @@
package com.example.demo.exposition.debug
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/api/debug")
class DebugController {
@GetMapping("/info")
fun debug(): String = """
{
"message": "Hello world!"
}
""".trimIndent()
}

12
docker-compose.yml Normal file
View File

@@ -0,0 +1,12 @@
services:
backend:
image: gitea-workshop-app:latest
container_name: gitea-workshop-app-backend
ports:
- "50000:8080"
restart: always
networks:
- "gitea-workshop"
networks:
gitea-workshop: