diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f91ac76..4932621 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,7 +6,7 @@ on: - '**' jobs: - build-and-publish-amd64: + build-and-publish-amd64-server: runs-on: ubuntu-latest steps: - name: Get tag name @@ -25,10 +25,57 @@ jobs: uses: docker/build-push-action@v5 with: context: . + file: build/package/Dockerfile.server push: true - tags: kubetail/kubetail:${{ steps.tagName.outputs.tag }}-amd64 + tags: kubetail/kubetail-server:${{ steps.tagName.outputs.tag }}-amd64 - build-and-publish-arm64: + build-and-publish-amd64-agent: + runs-on: ubuntu-latest + steps: + - name: Get tag name + uses: olegtarasov/get-tag@2.1.3 + id: tagName + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + file: build/package/Dockerfile.agent + push: true + tags: kubetail/kubetail-agent:${{ steps.tagName.outputs.tag }}-amd64 + + build-and-publish-arm64-server: + runs-on: arm64-ubuntu-22 + steps: + - name: Get tag name + uses: olegtarasov/get-tag@2.1.3 + id: tagName + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + file: build/package/Dockerfile.server + push: true + tags: kubetail/kubetail-server:${{ steps.tagName.outputs.tag }}-arm64 + + build-and-publish-arm64-agent: runs-on: arm64-ubuntu-22 steps: - name: Get tag name @@ -47,12 +94,53 @@ jobs: uses: docker/build-push-action@v5 with: context: . + file: build/package/Dockerfile.agent push: true - tags: kubetail/kubetail:${{ steps.tagName.outputs.tag }}-arm64 + tags: kubetail/kubetail-agent:${{ steps.tagName.outputs.tag }}-arm64 + + create-and-publish-manifest-server: + runs-on: ubuntu-latest + needs: [build-and-publish-amd64-server, build-and-publish-arm64-server] + steps: + - name: Get tag name + uses: olegtarasov/get-tag@2.1.3 + id: tagName + - name: 'Setup jq' + uses: dcarbone/install-jq-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Create and push manifest + run: | + docker buildx imagetools create -t kubetail/kubetail-server:${{ steps.tagName.outputs.tag }} \ + kubetail/kubetail-server:${{ steps.tagName.outputs.tag }}-amd64 \ + kubetail/kubetail-server:${{ steps.tagName.outputs.tag }}-arm64 + - name: Fetch docker token + run: | + TOKEN=$(curl -X POST "https://hub.docker.com/v2/users/login" -H "Content-Type: application/json" -d '{"username": "${{ secrets.DOCKERHUB_USERNAME }}", "password": "${{ secrets.DOCKERHUB_TOKEN }}"}' | jq -r '.token') + echo "TOKEN=$TOKEN" >> $GITHUB_ENV + - name: Delete extra arch manifests + run: | + declare -a archs=("amd64" "arm64") + for arch in "${archs[@]}" + do + RESPONSE=$(curl -s -w "%{http_code}" \ + -X DELETE \ + -H "Authorization: Bearer $TOKEN" \ + "https://hub.docker.com/v2/repositories/kubetail/kubetail-server/tags/${{ steps.tagName.outputs.tag }}-$arch") + if [ "$RESPONSE" -ne 204 ]; then + echo "DELETE for $arch failed with status $RESPONSE" + exit 1 + fi + done - create-and-publish-manifest: + create-and-publish-manifest-agent: runs-on: ubuntu-latest - needs: [build-and-publish-amd64, build-and-publish-arm64] + needs: [build-and-publish-amd64-agent, build-and-publish-arm64-agent] steps: - name: Get tag name uses: olegtarasov/get-tag@2.1.3 @@ -68,9 +156,9 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Create and push manifest run: | - docker buildx imagetools create -t kubetail/kubetail:${{ steps.tagName.outputs.tag }} \ - kubetail/kubetail:${{ steps.tagName.outputs.tag }}-amd64 \ - kubetail/kubetail:${{ steps.tagName.outputs.tag }}-arm64 + docker buildx imagetools create -t kubetail/kubetail-agent:${{ steps.tagName.outputs.tag }} \ + kubetail/kubetail-agent:${{ steps.tagName.outputs.tag }}-amd64 \ + kubetail/kubetail-agent:${{ steps.tagName.outputs.tag }}-arm64 - name: Fetch docker token run: | TOKEN=$(curl -X POST "https://hub.docker.com/v2/users/login" -H "Content-Type: application/json" -d '{"username": "${{ secrets.DOCKERHUB_USERNAME }}", "password": "${{ secrets.DOCKERHUB_TOKEN }}"}' | jq -r '.token') @@ -83,7 +171,7 @@ jobs: RESPONSE=$(curl -s -w "%{http_code}" \ -X DELETE \ -H "Authorization: Bearer $TOKEN" \ - "https://hub.docker.com/v2/repositories/kubetail/kubetail/tags/${{ steps.tagName.outputs.tag }}-$arch") + "https://hub.docker.com/v2/repositories/kubetail/kubetail-agent/tags/${{ steps.tagName.outputs.tag }}-$arch") if [ "$RESPONSE" -ne 204 ]; then echo "DELETE for $arch failed with status $RESPONSE" exit 1