Merge branch 'feature/docker-setup' into development

This commit is contained in:
2025-08-08 12:47:54 +02:00
3 changed files with 30 additions and 56 deletions

View File

@@ -3,7 +3,7 @@ name: Rust Cross-Platform Build
on:
workflow_dispatch:
push:
branches: [ "development", "main", "feature/*", bug/* ]
branches: [ "development", "main"] #"feature/*", bug/*, enhancement/* ]
pull_request:
branches: [ "development", "main" ]
@@ -11,8 +11,8 @@ env:
CARGO_TERM_COLOR: always
REGISTRY: git.triggermeelmo.com
IMAGE_NAME: donpat1to/watcher-agent
TAG: ${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.number) || github.ref_name }}
TAG: development
jobs:
detect-project:
name: Detect Rust Project
@@ -122,7 +122,7 @@ jobs:
path: ${{ needs.detect-project.outputs.project-dir }}/target/x86_64-pc-windows-gnu/release/${{ needs.detect-project.outputs.project-name }}.exe
docker-build:
name: Build Docker Images
name: Build Linux Docker Image
needs: [native-build, windows-cross]
runs-on: ubuntu-latest
steps:
@@ -135,53 +135,37 @@ jobs:
name: linux-binary
path: linux-bin
- name: Download Windows artifact
id: download-windows
uses: actions/download-artifact@v3
with:
name: windows-binary
path: windows-bin
- name: Verify artifacts
run: |
echo "Linux binary:"
ls -la linux-bin/
echo "Windows binary:"
ls -la windows-bin/
- name: Build using Docker Buildx
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Linux build using Docker Buildx
run: |
docker buildx create --use
docker buildx create --use
docker buildx build \
--platform linux/amd64 \
-f Dockerfile.linux \
--build-arg BINARY_NAME=${{ needs.detect-project.outputs.project-name }} \
--load \
-t ${{ env.IMAGE_NAME }}:linux-${{ env.TAG }} .
- name: Login to Docker registry
if: ${{ success() }}
- name: Save Docker image as artifact
run: |
echo "Logging in to Docker registry: ${{ env.REGISTRY }}"
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login git.triggermeelmo.com -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
docker save ${{ env.IMAGE_NAME }}:linux-${{ env.TAG }} -o linux-image.tar
- name: Tag and Push Linux Docker image
if: ${{ success() }}
run: |
echo "Tagging Linux Docker image"
docker tag ${{ env.IMAGE_NAME }}:linux-${{ env.TAG }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:linux-${{ env.TAG }}
echo "Pushing Linux Docker image to registry: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:linux-${{ env.TAG }}"
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:linux-${{ env.TAG }}
- name: Build Windows Docker image
if: ${{ success() }}
run: |
echo "Building Windows Docker-Image with env-Tag: ${{env.TAG }}"
docker build -f Dockerfile.windows -t ${{ env.IMAGE_NAME }}:windows-${{ env.TAG }} .
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login git.triggermeelmo.com -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
echo "Tagging Windows Docker image"
docker tag ${{ env.IMAGE_NAME }}:windows-${{ env.TAG }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:windows-${{ env.TAG }}
echo "Pushing Windows Docker image to registry: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:windows-${{ env.TAG }}"
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:windows-${{ env.TAG }}
- name: Upload Docker image artifact
uses: actions/upload-artifact@v3
with:
name: linux-docker-image
path: linux-image.tar
cleanup:
name: Cleanup

View File

@@ -15,8 +15,11 @@ copy ./WatcherAgent/ .
# Build for Linux
run cargo build --release --target x86_64-unknown-linux-gnu
# Setze Berechtigungen für das Binary
run chmod +x /app/target/x86_64-unknown-linux-gnu/release/$BINARY_NAME
# Final Linux image
from debian:bullseye-slim
from debian:bookworm-slim
run apt-get update && \
apt-get install -y apt-transport-https && \
@@ -25,14 +28,12 @@ run apt-get update && \
&& rm -rf /var/lib/apt/lists/*
# Make binary name configurable
arg BINARY_NAME=WatcherAgent
copy --from=linux-builder /app/target/x86_64-unknown-linux-gnu/release/$BINARY_NAME /usr/local/bin/
# Verify binary works
run /usr/local/bin/$BINARY_NAME --version
arg BINARY_NAME
env BINARY_NAME=${BINARY_NAME:-WatcherAgent}
copy --from=linux-builder /app/target/x86_64-unknown-linux-gnu/release/${BINARY_NAME} /usr/local/bin/
# Health check
healthcheck --interval=30s --timeout=3s \
cmd /usr/local/bin/$BINARY_NAME healthcheck || exit 1
cmd /usr/local/bin/${BINARY_NAME} healthcheck || exit 1
entrypoint ["/usr/local/bin/$BINARY_NAME"]
ENTRYPOINT ["/bin/sh", "-c", "/usr/local/bin/${BINARY_NAME}"]

View File

@@ -1,11 +0,0 @@
# Using Windows Server Core as base
FROM mcr.microsoft.com/windows/servercore:ltsc2022
# Create app directory
WORKDIR C:/app
# Copy the Windows binary
ARG BINARY_PATH
COPY ${BINARY_PATH} watcher_agent.exe
ENTRYPOINT ["C:/app/watcher_agent.exe"]