Compare commits

...

5 Commits

Author SHA1 Message Date
ef7289f6d2 trying new container name
All checks were successful
Build and Push Multi-Arch Docker Image / build-and-push (push) Successful in 13m15s
Signed-off-by: Peter Siegmund <developer@mars3142.org>
2025-12-15 22:32:51 +01:00
b8ae4feb4f new gitea actions
All checks were successful
Build and Push Multi-Arch Docker Image / build-and-push (push) Successful in 13m52s
Signed-off-by: Peter Siegmund <developer@mars3142.org>
2025-12-15 22:02:51 +01:00
9bb7a2e764 optimize setup
Some checks failed
deploy to hetzner / deploy (push) Failing after 11m18s
Signed-off-by: Peter Siegmund <developer@mars3142.org>
2025-08-23 00:06:46 +02:00
2ef81803c6 latest config-service setting
Signed-off-by: Peter Siegmund <developer@mars3142.org>
2025-08-22 20:25:36 +02:00
53e79c0067 latest configuration
Signed-off-by: Peter Siegmund <developer@mars3142.org>
2025-08-22 20:24:51 +02:00
12 changed files with 77 additions and 89 deletions

View File

@@ -0,0 +1,45 @@
name: Build and Push Multi-Arch Docker Image
on:
push:
branches:
- main
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Set Registry Domain
run: |
REGISTRY_DOMAIN=$(echo "${{ github.server_url }}" | sed 's|https://||' | sed 's|http://||')
echo "REGISTRY_DOMAIN=$REGISTRY_DOMAIN" >> $GITHUB_ENV
- name: Login to Gitea Registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY_DOMAIN }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Extract Version
run: |
VERSION=$(grep "^version = " build.gradle | sed "s/version = '//" | sed "s/'//")
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "MAJOR=$(echo $VERSION | cut -d. -f1)" >> $GITHUB_ENV
echo "MAJOR_MINOR=$(echo $VERSION | cut -d. -f1,2)" >> $GITHUB_ENV
- name: Build and Push Multi-Arch Image
run: |
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t ${{ env.REGISTRY_DOMAIN }}/${{ github.repository }}:latest \
-t ${{ env.REGISTRY_DOMAIN }}/${{ github.repository }}:${{ env.MAJOR }} \
-t ${{ env.REGISTRY_DOMAIN }}/${{ github.repository }}:${{ env.MAJOR_MINOR }} \
-t ${{ env.REGISTRY_DOMAIN }}/${{ github.repository }}:${{ env.VERSION }} \
--push .

View File

@@ -1,11 +0,0 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "weekly"

View File

@@ -1,39 +0,0 @@
---
name: 'deploy to hetzner'
on:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Cloning repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: gradle
- name: Build with Gradle (no Testing)
run: ./gradlew clean build -x test
- name: Push to dokku
timeout-minutes: 20
uses: dokku/github-action@v1
with:
branch: main
git_remote_url: ${{ secrets.HETZNER_GIT_URI }}
ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}
git_push_flags: --force

View File

@@ -11,7 +11,7 @@ USER app
# Copy all needed project files to a folder # Copy all needed project files to a folder
COPY --chown=app ./gradle/ ./gradle COPY --chown=app ./gradle/ ./gradle
COPY --chown=app ./gradlew ./build.gradle ./settings.gradle ./app.json ./ COPY --chown=app ./gradlew ./build.gradle ./settings.gradle ./
COPY --chown=app ./src ./src COPY --chown=app ./src ./src
RUN curl -OL https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar RUN curl -OL https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar
@@ -28,10 +28,6 @@ USER app
COPY --chown=app --from=build /usr/src/app/build/libs/*-SNAPSHOT.jar /usr/app/config.jar COPY --chown=app --from=build /usr/src/app/build/libs/*-SNAPSHOT.jar /usr/app/config.jar
COPY --chown=app --from=build /usr/src/app/opentelemetry-javaagent.jar /usr/app/opentelemetry-javaagent.jar COPY --chown=app --from=build /usr/src/app/opentelemetry-javaagent.jar /usr/app/opentelemetry-javaagent.jar
ENV JAVA_TOOL_OPTIONS="-javaagent:/usr/app/opentelemetry-javaagent.jar" HEALTHCHECK CMD curl --fail http://localhost:8888/actuator/health || exit 1
ENV OTEL_SERVICE_NAME="config-service"
ENV OTEL_EXPORTER_OTLP_ENDPOINT="http://opentelemetry-collector.web:4318"
HEALTHCHECK CMD curl --fail http://localhost:5000/actuator/health || exit 1
CMD ["java", "-jar", "/usr/app/config.jar"] CMD ["java", "-jar", "/usr/app/config.jar"]

20
Makefile Normal file
View File

@@ -0,0 +1,20 @@
REMOTE_HOST = mars3142@172.16.20.1
PROJECT_NAME = firmware-hq
SERVICE_NAME = config-service
RASPI_PATH = /mnt/data/${PROJECT_NAME}
install: build deploy import cleanup
build:
docker buildx build --platform linux/arm64 --no-cache -t ${PROJECT_NAME}/${SERVICE_NAME}:latest -o type=docker,dest=./${SERVICE_NAME}-arm64.tar .
deploy:
scp ./${SERVICE_NAME}-arm64.tar ${REMOTE_HOST}:${RASPI_PATH}/
import:
ssh ${REMOTE_HOST} "sudo docker load -i ${RASPI_PATH}/${SERVICE_NAME}-arm64.tar && rm ${RASPI_PATH}/${SERVICE_NAME}-arm64.tar"
cleanup:
rm -f ${SERVICE_NAME}-arm64.tar
.PHONY: build deploy import cleanup

View File

@@ -1,14 +0,0 @@
{
"healthchecks": {
"web": [
{
"type": "readiness",
"name": "web check",
"description": "Checking if the app responds to the /actuator/health/readiness endpoint",
"path": "/actuator/health/readiness",
"port": 5000,
"attempts": 3
}
]
}
}

View File

@@ -5,7 +5,7 @@ plugins {
} }
group = 'dev.mars3142.fhq' group = 'dev.mars3142.fhq'
version = '0.0.1-SNAPSHOT' version = '0.1.0-SNAPSHOT'
java { java {
toolchain { toolchain {
@@ -28,12 +28,12 @@ ext {
} }
dependencies { dependencies {
implementation 'org.springframework.cloud:spring-cloud-config-server'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok'
compileOnly 'org.projectlombok:lombok'
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.cloud:spring-cloud-config-server'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
} }

View File

@@ -17,9 +17,7 @@ spring:
native: native:
search-locations: classpath:/configurations search-locations: classpath:/configurations
git: git:
uri: https://github.com/${GIT_USER}/remote-config.git uri: https://${GIT_LOGIN_USER}:${GIT_TOKEN}@${GIT_USER}/${GIT_REPO}/remote-config.git
username: ${GIT_USER}
password: ${GIT_TOKEN}
default-label: main default-label: main
profiles: profiles:
active: native active: native

View File

@@ -1,6 +1,3 @@
server:
port: ${PORT:8080}
springdoc: springdoc:
enable-native-support: true enable-native-support: true
api-docs: api-docs:
@@ -46,7 +43,7 @@ spring:
- RewritePath=/timezone-service/(?<segment>.*), /$\{segment} - RewritePath=/timezone-service/(?<segment>.*), /$\{segment}
- id: google-service - id: google-service
uri: ${GOOGLE_SERVICE_URI:http://google-service.web:8080} uri: lb://google-service
predicates: predicates:
- Path=/v1/account/**, /health/google, /google-service/v3/api-docs - Path=/v1/account/**, /health/google, /google-service/v3/api-docs
filters: filters:
@@ -54,9 +51,9 @@ spring:
- RewritePath=/google-service/(?<segment>.*), /$\{segment} - RewritePath=/google-service/(?<segment>.*), /$\{segment}
- id: token-service - id: token-service
uri: ${BACKEND_SERVICE_URI:http://backend-service.web:8080} uri: lb://backend-service
predicates: predicates:
- Path=/v1/token/**, /health/backend, /token-service/v3/api-docs - Path=/v1/token/**, /health/backend, /token-service/v3/api-docs
filters: filters:
- RewritePath=/health/backend, /actuator/health - RewritePath=/health/backend, /actuator/health
- RewritePath=/token-service/(?<segment>.*), /$\{segment} - RewritePath=/token-service/(?<segment>.*), /$\{segment}

View File

@@ -1,2 +0,0 @@
server:
port: ${PORT:8081}

View File

@@ -1,2 +0,0 @@
server:
port: ${PORT:9000}