k8s gitlab cicd 之gradle 篇章(二)并发打包问题

前文:https://caicongyang.blog.csdn.net/article/details/132049822?spm=1001.2014.3001.5502

运行几天后发现以下问题:

Starting a Gradle Daemon, 4 busy and 2 stopped Daemons could not be reused, use --status for details

FAILURE: Build failed with an exception.

html 复制代码
$ chmod 777 gradlew
$ ./gradlew build -x test
Starting a Gradle Daemon, 4 busy and 2 stopped Daemons could not be reused, use --status for details

FAILURE: Build failed with an exception.

* What went wrong:
Gradle could not start your build.
> Could not create service of type ResourceSnapshotterCacheService using GradleUserHomeServices.createResourceSnapshotterCacheService().
   > Timeout waiting to lock file hash cache (/cache/itwork/gradle/repository/caches/6.8/fileHashes). It is currently in use by another Gradle instance.
     Owner PID: 97
     Our PID: 97
     Owner Operation: 
     Our operation: 
     Lock file: /cache/itwork/gradle/repository/caches/6.8/fileHashes/fileHashes.lock

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 47s
ERROR: Job failed: command terminated with exit code 1

大概意思是就是无法并发打包;

修改后的ci文件如下:

html 复制代码
stages:
  - package
  - docker-build

package:
  stage: package
  script:
    - export GRADLE_USER_HOME=${GRADLE_USER_HOME}/${GROUP_NAME}/${CI_PROJECT_NAME}/.gradle
    - export PATH=GRADLE_USER_HOME/bin:$PATH
    - echo $GRADLE_USER_HOME
    - chmod 777 gradlew
    - ./gradlew build -x test
    - cp build/libs/app.jar ${CACHE_PIPELINE}/app.jar
  only:
    - master
    - tags
    - /^feature-.*$/
    - /^hotfix-.*$/
    - /^bugfix-.*$/
docker-build:
  stage: docker-build
  script:
    - update_dockerfile
    - docker_build .
    - update_charts_base v3 server
    - chart_build
  only:
    - master
    - tags
    - /^release-.*$/
    - /^hotfix-.*$/
    - /^bugfix-.*$/
    - /^feature-.*$/

.auto_devops: &auto_devops |
  http_status_code=`curl -o .auto_devops.sh -s -m 10 --connect-timeout 10 -w %{http_code} "${CHOERODON_URL}/devops-action/ci?gitlabProjectId=${CI_PROJECT_ID}&pipelineId=${CI_PIPELINE_ID}&token=${Token}&type=base&version=v1"`
  if [ "$http_status_code" != "200" ]; then
    cat .auto_devops.sh
    exit 1
  fi
  source .auto_devops.sh
before_script:
  - *auto_devops

核心修改点: 打包阶段每个项目设置不同的打包目录

  • export GRADLE_USER_HOME={GRADLE_USER_HOME}/{GROUP_NAME}/${CI_PROJECT_NAME}/.gradle

  • export PATH=GRADLE_USER_HOME/bin:$PATH

不知道各位大佬有没有更好的方法呢

相关推荐
Eminem8920 小时前
11、k8s控制器Replicaset
k8s
snow@li2 天前
服务器运维:K3S 下 Jenkins ↔ GitLab 的 CI/CD 闭环 / 访问成功
运维·gitlab·jenkins
旧梦星轨4 天前
Git Flow 工作流实践
git·gitee·gitlab·github
旧梦星轨4 天前
Github Flow 与 Gitlab Flow工作流实践解读
gitlab·github
ezreal_pan4 天前
Pod 重启多场景复盘:OOM、日志阻塞、并发 map 读写导致程序崩溃
docker·k8s
cg.family5 天前
containerd 1.6.33 + nerdctl 1.7.6 + Jenkins
k8s
Ningcode_cloud7 天前
Kubernetes 弹性伸缩实验手册:从集群搭建到 HPA / VPA 自动扩缩容
云原生·k8s·prometheus
极小狐7 天前
干掉流水线里的长期密钥:用 OIDC 让 CI/CD 与云以临时凭证对接
microsoft·ci/cd·gitlab·devops·ci·cd·oidc
snow@li7 天前
服务器运维:阿里云安装软件gitlab/智能体协助安装/智能体协同运维
运维·gitlab
极小狐8 天前
CI 流水线提速实战:缓存设计与依赖代理的工程实践
缓存·ci/cd·gitlab·devops