Gitlab CI 无法在阶段之间传递目录

问题描述 投票:0回答:1

我尝试将目录和多个文件从一个作业传递到另一个作业,根据脚本指令,我复制目录和文件,但在作业 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 continuous-integration dependencies
1个回答
0
投票

据我所知,使用 GitLab 你不能或不应该操作工作目录之外的文件。

在您的情况下,您应该声明从

job_a
job_b
中所需的所有工件。 GitLab 将负责复制。
但是,作业/管道工件也仅限于工作目录中的文件。因此,您可以将它们复制到

artifacts#paths

中的工作目录,将它们声明为工件并将它们从工作目录复制到

job_a
中需要的位置。
    

© www.soinside.com 2019 - 2024. All rights reserved.