3

为了构建我当前项目的图像,我使用 gradle task bootBuildImage此任务使用 Cloud Native Buildpacks创建OCI 映像。

- 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

4

3 回答 3

3

如果您只是在寻找要处理的东西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_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}  
于 2020-07-07T22:44:36.180 回答
2

您使用的 github-action 不是用于推送您定义的图像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 解决方案来说现在很常见,其中构建和推送是一项任务。

于 2020-07-07T22:28:19.770 回答
1

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

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

检查这个文件

于 2021-07-02T16:23:52.390 回答