name: Publish Docker images on: workflow_dispatch: inputs: version: description: "Memgraph binary version to publish on DockerHub." required: true force_release: type: boolean required: false default: false jobs: docker_publish: runs-on: ubuntu-latest env: DOCKER_ORGANIZATION_NAME: memgraph DOCKER_REPOSITORY_NAME: memgraph steps: - name: Checkout uses: actions/checkout@v3 - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v2 - name: Log in to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Download memgraph binary run: | cd release/docker curl -L https://download.memgraph.com/memgraph/v${{ github.event.inputs.version }}/debian-11/memgraph_${{ github.event.inputs.version }}-1_amd64.deb > memgraph-amd64.deb curl -L https://download.memgraph.com/memgraph/v${{ github.event.inputs.version }}/debian-11-aarch64/memgraph_${{ github.event.inputs.version }}-1_arm64.deb > memgraph-arm64.deb - name: Check if specified version is already pushed run: | EXISTS=$(docker manifest inspect $DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:${{ github.event.inputs.version }} > /dev/null; echo $?) echo $EXISTS if [[ ${EXISTS} -eq 0 ]]; then echo 'The specified version has been already released to DockerHub.' if [[ ${{ github.event.inputs.force_release }} = true ]]; then echo 'Forcing the release!' else echo 'Stopping the release!' exit 1 fi else echo 'All good the specified version has not been release to DockerHub.' fi - name: Build & push docker images run: | cd release/docker docker buildx build \ --build-arg BINARY_NAME="memgraph-" \ --build-arg EXTENSION="deb" \ --platform linux/amd64,linux/arm64 \ --tag $DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:${{ github.event.inputs.version }} \ --tag $DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:latest \ --file memgraph_deb.dockerfile \ --push .