|
@@ -109,6 +109,52 @@ jobs:
|
|
|
name: darwin-latest
|
|
|
path: ./release/*
|
|
|
|
|
|
+ build-docker:
|
|
|
+ name: Create and Upload Docker Images
|
|
|
+ # Technically we only need build-linux to succeed, but if any platforms fail we'll
|
|
|
+ # want to investigate and restart the build
|
|
|
+ needs: [build-linux, build-darwin, build-windows]
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ env:
|
|
|
+ HAS_DOCKER_CREDS: ${{ vars.DOCKERHUB_USERNAME != '' && secrets.DOCKERHUB_TOKEN != '' }}
|
|
|
+ # XXX It's not possible to write a conditional here, so instead we do it on every step
|
|
|
+ #if: ${{ env.HAS_DOCKER_CREDS == 'true' }}
|
|
|
+ steps:
|
|
|
+ # Be sure to checkout the code before downloading artifacts, or they will
|
|
|
+ # be overwritten
|
|
|
+ - name: Checkout code
|
|
|
+ if: ${{ env.HAS_DOCKER_CREDS == 'true' }}
|
|
|
+ uses: actions/checkout@v4
|
|
|
+
|
|
|
+ - name: Download artifacts
|
|
|
+ if: ${{ env.HAS_DOCKER_CREDS == 'true' }}
|
|
|
+ uses: actions/download-artifact@v3
|
|
|
+ with:
|
|
|
+ name: linux-latest
|
|
|
+ path: artifacts
|
|
|
+
|
|
|
+ - name: Login to Docker Hub
|
|
|
+ if: ${{ env.HAS_DOCKER_CREDS == 'true' }}
|
|
|
+ uses: docker/login-action@v3
|
|
|
+ with:
|
|
|
+ username: ${{ vars.DOCKERHUB_USERNAME }}
|
|
|
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
+
|
|
|
+ - name: Set up Docker Buildx
|
|
|
+ if: ${{ env.HAS_DOCKER_CREDS == 'true' }}
|
|
|
+ uses: docker/setup-buildx-action@v3
|
|
|
+
|
|
|
+ - name: Build and push images
|
|
|
+ if: ${{ env.HAS_DOCKER_CREDS == 'true' }}
|
|
|
+ env:
|
|
|
+ DOCKER_IMAGE_REPO: ${{ vars.DOCKER_IMAGE_REPO || 'nebulaoss/nebula' }}
|
|
|
+ DOCKER_IMAGE_TAG: ${{ vars.DOCKER_IMAGE_TAG || 'latest' }}
|
|
|
+ run: |
|
|
|
+ mkdir -p build/linux-{amd64,arm64}
|
|
|
+ tar -zxvf artifacts/nebula-linux-amd64.tar.gz -C build/linux-amd64/
|
|
|
+ tar -zxvf artifacts/nebula-linux-arm64.tar.gz -C build/linux-arm64/
|
|
|
+ docker buildx build . --push -f docker/Dockerfile --platform linux/amd64,linux/arm64 --tag "${DOCKER_IMAGE_REPO}:${DOCKER_IMAGE_TAG}" --tag "${DOCKER_IMAGE_REPO}:${GITHUB_REF#refs/tags/v}"
|
|
|
+
|
|
|
release:
|
|
|
name: Create and Upload Release
|
|
|
needs: [build-linux, build-darwin, build-windows]
|