From b06c15ff4e5a81b8019a0ea546616a3abc0f91b9 Mon Sep 17 00:00:00 2001 From: donpat1to Date: Sat, 2 Aug 2025 17:15:11 +0200 Subject: [PATCH] first try --- .github/workflows/build.yml | 68 +++++++++++++++++++++++++++++++----- .gitignore | 3 ++ Dockerfile.linux | Bin 0 -> 1244 bytes Dockerfile.windows | 11 ++++++ 4 files changed, 74 insertions(+), 8 deletions(-) create mode 100644 Dockerfile.linux create mode 100644 Dockerfile.windows diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a841d44..20c60df 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 \ No newline at end of file + run: docker system prune -a -f \ No newline at end of file diff --git a/.gitignore b/.gitignore index ab951f8..9c4549d 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/Dockerfile.linux b/Dockerfile.linux new file mode 100644 index 0000000000000000000000000000000000000000..792002da177464076276418086200f1c62b9f987 GIT binary patch literal 1244 zcmc(fTT8=06oltl@IM3vAA~dtq9XX>4a7^OC{k1;ZPO~+BqVLsKd*jgV`|zeA_yYu zZq9Y~%xvFY7v*V3L*4699nQH13e{7@xvNAO`!U{_m}kvvP6ukJt`qDTHjCfVs%qNM z3bqi7N3Al$S8H57BEu@!vc88@E&4r@;n6=*%8K17R+}mj5fX#*sfiM$I1ReBB~jNtlHJr%S?{pZxNM)%Xer-GclXWDjndfdaSuw{r1a|F(ah}=!sY^IQG%)qlYwXR#%8onX3cwi-Z;=k|iSZK#M zvr`r0fzwGyR8?gj);>K!{qmJY8wwhy3q5FX%?^Bx1r= literal 0 HcmV?d00001 diff --git a/Dockerfile.windows b/Dockerfile.windows new file mode 100644 index 0000000..6d2b20a --- /dev/null +++ b/Dockerfile.windows @@ -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"] \ No newline at end of file