Merge branch 'feature/docker-setup' into development
This commit is contained in:
58
.github/workflows/build.yml
vendored
58
.github/workflows/build.yml
vendored
@@ -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
|
||||
|
@@ -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}"]
|
@@ -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