first try

This commit is contained in:
2025-08-02 17:15:11 +02:00
parent 148835d980
commit b06c15ff4e
4 changed files with 74 additions and 8 deletions

View File

@@ -3,12 +3,13 @@ name: Rust Cross-Platform Build
on:
workflow_dispatch:
push:
branches: [ "main", "feature/*", bug/* ]
branches: [ "development", "main", "feature/*", bug/* ]
pull_request:
branches: [ "main" ]
branches: [ "development", "main" ]
env:
CARGO_TERM_COLOR: always
DOCKER_IMAGE_NAME: "watcher-agent"
jobs:
detect-project:
@@ -126,16 +127,67 @@ jobs:
echo "Cleaning up Docker images..."
docker system prune -a -f || echo "Docker cleanup failed"
docker-build:
name: Build Docker Images
needs: [native-build, windows-cross]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download Linux artifact
uses: actions/download-artifact@v3
with:
name: linux-binary
path: linux-bin
- name: Download Windows artifact
uses: actions/download-artifact@v3
with:
name: windows-binary
path: windows-bin
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Build and push Linux Docker image
uses: docker/build-push-action@v4
with:
context: .
file: Dockerfile.linux
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: |
${{ env.DOCKER_IMAGE_NAME }}:linux-latest
${{ env.DOCKER_IMAGE_NAME }}:linux-${{ github.sha }}
build-args: |
BINARY_PATH=linux-bin/${{ needs.detect-project.outputs.project-name }}
- name: Build and push Windows Docker image
uses: docker/build-push-action@v4
with:
context: .
file: Dockerfile.windows
platforms: windows-amd64
push: ${{ github.event_name != 'pull_request' }}
tags: |
${{ env.DOCKER_IMAGE_NAME }}:windows-latest
${{ env.DOCKER_IMAGE_NAME }}:windows-${{ github.sha }}
build-args: |
BINARY_PATH=windows-bin/${{ needs.detect-project.outputs.project-name }}.exe
cleanup:
name: Cleanup
if: always()
needs: [native-build, windows-cross]
needs: [docker-build, native-build, windows-cross]
runs-on: ubuntu-latest
steps:
- name: Cleanup Docker images
if: contains(needs.*.result, 'failure')
run: |
echo "One or more jobs failed. Performing cleanup..."
docker system prune -a -f || echo "Docker cleanup failed"
env:
DOCKER_CLI_HINTS: false
run: docker system prune -a -f

3
.gitignore vendored
View File

@@ -8,6 +8,9 @@ target/
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock
# VS Code
.vscode/
# These are backup files generated by rustfmt
**/*.rs.bk

BIN
Dockerfile.linux Normal file

Binary file not shown.

11
Dockerfile.windows Normal file
View File

@@ -0,0 +1,11 @@
# 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"]