2

我正在尝试使用 Jenkins 部署到带有 EFS 的 ECS。(/var/jenkins_home 已安装)

似乎一切都很好,除了当我部署服务时,我在日志中收到以下错误:

touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
No newer events found at the moment. Retry.

有没有办法解决这个问题,所以我有足够的权限/var/jenkins_home

4

3 回答 3

3

是的,它有点疯狂,但一个简单的解决方案就是在你的 efs 文件位置运行 chown 命令。例如,如果 '/efs' 是您的 EFS 挂载,则简单运行sudo chown 1000 efs/

应该可以立即正常工作

于 2017-06-21T12:05:26.090 回答
0

只是添加@jonathan 答案创建一个新的 docker 文件,它会像这样覆盖 jenkins 官方图像

from jenkins/jenkins

USER root


RUN chown -R 1000 /var

创建新的 docker 镜像docker build .这将创建一个新的 docker 镜像,该镜像不再受到EFS权限问题的影响。

于 2020-08-07T03:58:25.463 回答
0

对我有用的是创建 efs 的访问点: https ://github.com/aws-samples/serverless-jenkins-on-aws-fargate/blob/main/modules/jenkins_platform/efs.tf

这是我基于上述来源的简化解决方案:

resource "aws_efs_file_system" "jenkins" {
  creation_token = "jenkins"
  encrypted      = true

  lifecycle_policy {
    transition_to_ia = "AFTER_30_DAYS"
  }
  tags = {
    Name = "jenkins"
  }
}

resource "aws_efs_access_point" this {
  file_system_id = aws_efs_file_system.jenkins.id

  posix_user {
    gid = 0
    uid = 0
  }
  root_directory {
    path = "/"
    creation_info {
      owner_gid   = 1000 # jenkins
      owner_uid   = 1000 # jenkins
      permissions = "755"
    }
  }
  tags = {
    Name = "root"
  }
}

理想情况下,您想使用此模块或将其分叉并制作您自己的模块。

于 2022-02-10T09:13:59.487 回答