Merge branch 'feature/docker-setup' into development
This commit is contained in:
54
.github/workflows/build.yml
vendored
54
.github/workflows/build.yml
vendored
@@ -3,7 +3,7 @@ name: Rust Cross-Platform Build
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches: [ "development", "main", "feature/*", bug/* ]
|
branches: [ "development", "main"] #"feature/*", bug/*, enhancement/* ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "development", "main" ]
|
branches: [ "development", "main" ]
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ env:
|
|||||||
CARGO_TERM_COLOR: always
|
CARGO_TERM_COLOR: always
|
||||||
REGISTRY: git.triggermeelmo.com
|
REGISTRY: git.triggermeelmo.com
|
||||||
IMAGE_NAME: donpat1to/watcher-agent
|
IMAGE_NAME: donpat1to/watcher-agent
|
||||||
TAG: ${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.number) || github.ref_name }}
|
TAG: development
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
detect-project:
|
detect-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
|
path: ${{ needs.detect-project.outputs.project-dir }}/target/x86_64-pc-windows-gnu/release/${{ needs.detect-project.outputs.project-name }}.exe
|
||||||
|
|
||||||
docker-build:
|
docker-build:
|
||||||
name: Build Docker Images
|
name: Build Linux Docker Image
|
||||||
needs: [native-build, windows-cross]
|
needs: [native-build, windows-cross]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
@@ -135,53 +135,37 @@ jobs:
|
|||||||
name: linux-binary
|
name: linux-binary
|
||||||
path: linux-bin
|
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
|
- name: Verify artifacts
|
||||||
run: |
|
run: |
|
||||||
echo "Linux binary:"
|
echo "Linux binary:"
|
||||||
ls -la linux-bin/
|
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: |
|
run: |
|
||||||
docker buildx create --use
|
docker buildx create --use
|
||||||
docker buildx build \
|
docker buildx build \
|
||||||
--platform linux/amd64 \
|
--platform linux/amd64 \
|
||||||
-f Dockerfile.linux \
|
-f Dockerfile.linux \
|
||||||
--build-arg BINARY_NAME=${{ needs.detect-project.outputs.project-name }} \
|
--build-arg BINARY_NAME=${{ needs.detect-project.outputs.project-name }} \
|
||||||
|
--load \
|
||||||
-t ${{ env.IMAGE_NAME }}:linux-${{ env.TAG }} .
|
-t ${{ env.IMAGE_NAME }}:linux-${{ env.TAG }} .
|
||||||
|
|
||||||
- name: Login to Docker registry
|
- name: Save Docker image as artifact
|
||||||
if: ${{ success() }}
|
|
||||||
run: |
|
run: |
|
||||||
echo "Logging in to Docker registry: ${{ env.REGISTRY }}"
|
docker save ${{ env.IMAGE_NAME }}:linux-${{ env.TAG }} -o linux-image.tar
|
||||||
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login git.triggermeelmo.com -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
|
|
||||||
|
|
||||||
- name: Tag and Push Linux Docker image
|
- name: Upload Docker image artifact
|
||||||
if: ${{ success() }}
|
uses: actions/upload-artifact@v3
|
||||||
run: |
|
with:
|
||||||
echo "Tagging Linux Docker image"
|
name: linux-docker-image
|
||||||
docker tag ${{ env.IMAGE_NAME }}:linux-${{ env.TAG }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:linux-${{ env.TAG }}
|
path: linux-image.tar
|
||||||
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 }}
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
name: Cleanup
|
name: Cleanup
|
||||||
|
@@ -15,8 +15,11 @@ copy ./WatcherAgent/ .
|
|||||||
# Build for Linux
|
# Build for Linux
|
||||||
run cargo build --release --target x86_64-unknown-linux-gnu
|
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
|
# Final Linux image
|
||||||
from debian:bullseye-slim
|
from debian:bookworm-slim
|
||||||
|
|
||||||
run apt-get update && \
|
run apt-get update && \
|
||||||
apt-get install -y apt-transport-https && \
|
apt-get install -y apt-transport-https && \
|
||||||
@@ -25,14 +28,12 @@ run apt-get update && \
|
|||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Make binary name configurable
|
# Make binary name configurable
|
||||||
arg BINARY_NAME=WatcherAgent
|
arg BINARY_NAME
|
||||||
copy --from=linux-builder /app/target/x86_64-unknown-linux-gnu/release/$BINARY_NAME /usr/local/bin/
|
env BINARY_NAME=${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
|
|
||||||
|
|
||||||
# Health check
|
# Health check
|
||||||
healthcheck --interval=30s --timeout=3s \
|
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}"]
|
@@ -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"]
|
|
Reference in New Issue
Block a user