Bash Gitlab.com CI/CD ssh权限问题
我正在使用CD将代码部署到VPS。这个VPS运行的是ubuntu 16.04,有一个用户“deployer” 现在当我使用Bash Gitlab.com CI/CD ssh权限问题,bash,ssh,gitlab-ci,gitlab-ci-runner,Bash,Ssh,Gitlab Ci,Gitlab Ci Runner,我正在使用CD将代码部署到VPS。这个VPS运行的是ubuntu 16.04,有一个用户“deployer” 现在当我使用ssh时deployer@server我获得了对服务器的shell访问权限,然后在使用cd/var/www时,我进入了/var/www目录 当我从.gitlab-ci.yml中定义的部署脚本中执行此操作时,我收到以下错误/bin/bash:line 101:cd:/var/www/data/:没有这样的文件或目录。我还做了ls-al来查看/var的目录结构,结果发现它不包含w
ssh时deployer@server
我获得了对服务器的shell访问权限,然后在使用cd/var/www
时,我进入了/var/www
目录
当我从.gitlab-ci.yml中定义的部署脚本中执行此操作时,我收到以下错误/bin/bash:line 101:cd:/var/www/data/:没有这样的文件或目录。我还做了ls-al
来查看/var
的目录结构,结果发现它不包含www
目录。很明显,现在我没有权限访问www
目录
-rsync-avz--exclude=.env。deployer@devvers.work:/var/www/data/staging/home
-sshdeployer@devvers.work
-cd/var
-ls-al
-cd/var/www
t这是脚本中失败的部分。有人知道为什么我的用户在从终端使用ssh时与在此脚本中使用ssh时拥有不同的权限吗?当一切正常且所有文件都已复制时,使用rsync处理文件。最好使用ssh执行器:
然后您可以.gitlab.yml
简单地包括
job:
script:
- "ls /var/www"
- "cd /var/www"
...
另请参见。我猜您正在尝试的cd
和ls
命令实际上是在运行程序环境中执行的(无论是主机还是docker容器,取决于您的设置),而不是在您通过ssh连接到的机器上执行的
我建议您使用ssh
执行这些命令。创建文件并检查其是否已创建的示例:
ssh deployer@devvers.work "touch /var/www/test_file && ls -al /var/www/"
如果您在配置为shell executor的gitlab runner上遇到第101行:cd:
问题,那么gitlab runner用户主目录中实际上可能有一个.bash_注销文件,该文件与我们使用的解决方案有点不同<代码>ssh“deployer@devvers.work“cd/var/www/data/staging/;other_command;other_command;
是的,这也是可能的。请记住,在使用&&
时,任何命令都取决于前一个命令的成功与否,这是您的情况下可能需要的,例如使用ssh”deployer@devvers.work" "cd/var/www/data/staging/&&first_命令和&second_命令“
如果first_命令
失败,将不会运行second_命令。
ssh deployer@devvers.work "touch /var/www/test_file && ls -al /var/www/"