我尝试将目录和多个文件从一个作业传递到另一个作业,根据脚本指令,我复制目录和文件,但在作业 job_b 中,我找不到它 ${HOME}= /home/user,所以我想找到:
${HOME}/.ssh/config
${HOME}/.ssh/id_rsa
${HOME}/files/
${HOME}/inventory
${HOME}/a_playbooks
${HOME}/site.yml
${HOME}/roles
job_a:
stage: build
script:
- mkdir -p $HOME/.ssh
- cp $ssh_key ${HOME}/.ssh/
- cp config ${HOME}/.ssh/config
- cp -r dir/files/ ${HOME}/files/
- cp -r dir/inventory/ ${HOME}/inventory
- cp -r playbooks ${HOME}/a_playbooks
- cp dir/ansible.cfg ${HOME}/ansible.cfg
- cp dir/site.yml ${HOME}/site.yml
- cp -r dir/roles ${HOME}/roles
- ansible-playbook -i ${HOME}/inventory/hosts.yml ${HOME}/site.yml
when: manual
artifacts:
paths:
- /home/user/
- /home/user/.ssh
expire_in: 1 week
job_b:
stage: build
dependencies:
- job_a
script:
- ls -lrth
- ls -lrth ${HOME}
- ansible-playbook -i ${HOME}/inventory/my-cluster/hosts.yml ${HOME}/a_playbooks/site.yml
when: manual
当我执行 job_a 时,我收到此消息
警告:processPath:工件路径不是项目目录的子路径:/home/user 错误:没有要上传的文件
目标是执行第二个作业,无需复制 ssk 密钥,ssh 配置 anf 文件再次倒入 ansible playbook。
据我所知,使用 GitLab 你不能或不应该操作工作目录之外的文件。
在您的情况下,您应该声明从
job_a
到 job_b
中所需的所有工件。 GitLab 将负责复制。但是,作业/管道工件也仅限于工作目录中的文件。因此,您可以将它们复制到artifacts#paths
中的工作目录,将它们声明为工件并将它们从工作目录复制到
job_a
中需要的位置。