diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7fec8bd..42849d5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 diff --git a/Dockerfile.linux b/Dockerfile.linux index 6dd2861..f9d8d91 100644 --- a/Dockerfile.linux +++ b/Dockerfile.linux @@ -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"] \ No newline at end of file +ENTRYPOINT ["/bin/sh", "-c", "/usr/local/bin/${BINARY_NAME}"] \ No newline at end of file diff --git a/Dockerfile.windows b/Dockerfile.windows deleted file mode 100644 index 6d2b20a..0000000 --- a/Dockerfile.windows +++ /dev/null @@ -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"] \ No newline at end of file