在部署阶段发布 CI GitLab

Posted

技术标签:

【中文标题】在部署阶段发布 CI GitLab【英文标题】:Issue CI GitLab on deploy stage 【发布时间】:2022-01-11 16:55:40 【问题描述】:

我在 GitLab 上的 CI 管道存在问题,在服务器 Cloudways 上进行阶段部署。 CI 在 prod 中正确部署...但失败并出现错误:

错误:无法锁定配置文件 /home/123456.cloudwaysapps.com/xxxxxxx/.gitconfig:权限被拒绝

我读到这是 .gitconfig.lock 的问题,但我在此路径中没有看到任何文件“gitconfig.lock”或 .git config。

请问您对此有何看法?错误是什么?

deploy:

stage: deploy
  
before_script:
    - apt-get update -y && apt-get install -y git openssh-client
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh

script:
    - ssh -o StrictHostKeyChecking=no $APP_USER@$APP_HOST "cd public_html/ && git config --global user.name "my-user-name" && git pull origin main && composer dump-autoload && php bin/console d:m:m -n"

only:
    - main

这里的屏幕:

【问题讨论】:

如果您需要做的只是拉取更改,那么您不需要设置作业的 git config 部分。如果这是需要完成的事情,那么您最好登录到服务器并只运行一次配置,而不是让 CI 每次都设置相同的配置。因此,如果您删除作业的git config 部分会发生什么,它是否有效? 【参考方案1】:

如评论所述,拉动不需要git config

但是,为了进行更多调查,请将其替换为 ls -alrth $HOME && id -a,以便:

检查是否有~/.gitconfig 查看是否需要更改其chmod 以使其可写

【讨论】:

嗨@VonC,只是一个小问题:在我的Debian上,man id告诉我-a → ignore, for compatibility with other versions;您是否知道-a 选项产生某些作用的其他上下文/操作系统? (我猜可能是一种“全部”:) @ErikMD 是的,它适用于-all。在您的情况下,id 就足够了。

以上是关于在部署阶段发布 CI GitLab的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab CI/CD 不会运行我的部署阶段

用于 Maven 部署的 Gitlab CI/CD 的适当阶段是啥?

实施具有通用部署和测试阶段的多项目 gitlab 管道

问:Gitlab CI 谁重试旧管道

gitlab ci:sbt 在每个阶段重新编译

.gitlab-ci.yml配置参数