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



对于构建当前项目的图像,我使用渐变任务bootBuildImage。此任务使用Cloud Native Buildpacks创建OCI映像。

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

下一步,我将尝试使用构建推送操作将这个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

是否可以在不使用/创建专用Dockerfile的情况下将通过bootBuildImage创建的映像推送到我的私人GitHub注册表?

如果您只是在寻找处理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 }}  

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

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

具体而言,这也与https://github.com/docker/build-push-action/issues/17-因此,不推就建是可能的,反之亦然。

这个github操作还不允许只进行推送。

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

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

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

检查这份文件

最新更新