能否不在Gradle脚本配置,在GitLab CI中为bootBuildImage传递镜像仓库凭证?
实现将bootBuildImage的发布配置完全迁移到GitLab CI/CD的方法
完全可行,直接通过Gradle命令行参数传递仓库配置就能解决这个问题,具体步骤如下:
用Gradle命令行参数传递发布凭证与仓库地址
bootBuildImage任务支持通过-P前缀的项目属性来配置publishRegistry,不需要在Gradle脚本里写任何配置。在gitlab-ci.yml里把命令改成这样:gradle bootBuildImage \ --imageName $REGISTRY_IMAGE \ --publishImage \ -Pdocker.publishRegistry.username=$REGISTRY_USERNAME \ -Pdocker.publishRegistry.password=$REGISTRY_PASSWORD \ -Pdocker.publishRegistry.url=$REGISTRY_URL要是用的是Docker Hub,
-Pdocker.publishRegistry.url可以省略,私有仓库必须指定这个参数。确认GitLab CI变量配置正确
去GitLab项目的「Settings > CI/CD > Variables」里,把REGISTRY_USERNAME、REGISTRY_PASSWORD、REGISTRY_IMAGE、REGISTRY_URL这些变量配置好,注意如果变量设了「Protected」或「Masked」,要确保当前运行CI的分支符合对应的规则,不然变量会不可用。清理Gradle脚本里的旧配置
把build.gradle(或build.gradle.kts)里原来的publishRegistry相关代码删掉,比如这类代码:// 要删除的示例代码 bootBuildImage { publish { registry { username = System.getenv("REGISTRY_USERNAME") password = System.getenv("REGISTRY_PASSWORD") url = System.getenv("REGISTRY_URL") } } }
原理很简单:Spring Boot Gradle插件的bootBuildImage任务会自动读取以docker.publishRegistry.开头的项目属性,把它们映射到任务的发布仓库配置里,所以完全可以把所有配置都放在GitLab CI/CD变量里,不用在Gradle脚本里留任何相关代码。
内容的提问来源于stack exchange,提问作者ivenhov
相关产品推荐
相关产品推荐

