first try
This commit is contained in:
68
.github/workflows/build.yml
vendored
68
.github/workflows/build.yml
vendored
@@ -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
|
Reference in New Issue
Block a user