Github操作:通过gradle任务推送docker镜像构建

时间:2020-07-07 21:35:36

标签: docker github github-actions docker-push

要构建当前项目的图像,请使用gradle任务bootBuildImage。此任务将创建一个OCI image using Cloud Native Buildpacks

- name: Build image with Gradle
  run: ./gradlew bootBuildImage

下一步,我尝试使用build-push-action将这个docker映像推送到我的私有GitHub注册表中。

- name: Push image to Registry
  uses: docker/build-push-action@v1
  with:
    username: ${{ secrets.DOCKER_USERNAME }}
    password: ${{ secrets.DOCKER_PASSWORD }}
    registry: docker.pkg.github.com
    repository: sullrich84/wettkampfdb-backend
    tags: latest
  env:
    DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
    DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}

从日志中可以看出,此步骤的问题在于它似乎依赖于工作空间根目录中不存在的Dockerfile

unable to prepare context: unable to evaluate symlinks in Dockerfile path: 
  lstat /github/workspace/Dockerfile: no such file or directory

是否可以将通过bootBuildImage创建的图像推送到我的私有GitHub注册表中,而无需使用/创建专用的Dockerfile

3 个答案:

答案 0 :(得分:2)

如果您只是想处理docker push,可以使用本机docker命令来完成。

类似这样的东西。

      - name: run docker push
        run: |
          @docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
          @docker push $BUILD_TAG
          @docker push $LATEST_TAG          
        env: 
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_USERNAME: ${{ secrets.DOCKER_PASSWORD }}  

答案 1 :(得分:1)

您使用的github动作不是用于推送由repositorytag定义的图像,而是用于推送build and push https://github.com/docker/build-push-action#build-push-action

构建并推送Docker映像,并在需要时登录Docker注册表。

具体来说,这也与https://github.com/docker/build-push-action/issues/17有关-因此,无需推送即可进行构建,反之亦然。

此github动作还不允许仅推送。

对于许多CI / CD解决方案来说,这是目前非常普遍的情况,其中构建和推送是一项任务。

答案 2 :(得分:1)

我使用gradle bootBuildImage的publishRegistry选项。
在你的 build.gradle 中设置参数(下面是 gradle.kts)

tasks.bootBuildImage {
    imageName = "${imageName}:${project.version}"
    isPublish = true
    docker {
        publishRegistry {
            url = dockerUrl
            username = dockerUsername
            password = dockerPassword
        }
    }
}

检查这个document