我有一个指向ab12.xy24.com的服务器,其中的项目放置在其中:

 Path-1  
 /home/ab12/public_html/project1/*  
 /home/ab12/public_html/project2/*  
 ................................
 /home/ab12/public_html/projectn/{project-files}


我正在使用gitlab-runner来配置CI和CD。构建的构建方式为:

 Path-2  
 /home/ab12/build/{runner-token}/{commit-id}/{group-name}/project1/{project-files}
 /home/ab12/build/{runner-token}/{commit-id}/{group-name}/project1/{project-files}


我希望构建路径采用Path-1样式,而不是path-2样式。


我尝试了什么?

我尝试更改仅更改的build_path="path1"变量:

/home/ab12/build/{runner-token}/{commit-id}/{group name}/project1/{project-files}




/home/ab12/path1/{runner-token}/{commit-id}/{group-name}/project1/{project-files}


由于其虚拟化概念,我也不能使用docker,因为它占用了很多空间,这是不希望的。

评论

据我所知您不能(避免两次构建之间的比赛条件)。但是,如果您确定构建的唯一性,那么在上一节中从path1到path2的符号链接应该不行吗?

#1 楼

从概念上讲,这种方法不是可行的方法。 build目录不是一个部署目录,它是一个临时目录,可以从中进行构建或部署,而在shell执行程序上,可以固定此目录。

因此,您需要的是从该目录进行按照下面gitlab-ci.yml的脚本将其部署到正确的部署目录。

stages:
- deploy

variables:
  TARGET_DIR: /home/ab12/public_html/$CI_PROJECT_NAME

deploy:
  stage: deploy
  script:
     mkdir -pv $TARGET_DIR
     rsync -r --delete ./ $TARGET_DIR
  tags:
    - myrunner


这会将projectfiles移动到/ home / ab12 / public_html /

将项目命名为project1 .. projectn,所有项目都可以使用相同的.gitlab-ci.yml文件。

评论


你能解释一下使用.gitignore处理的文件的工作原理吗?

–克里希纳(Krishna Chalise)
17年11月24日在5:53



@Wildfire不知道我是否理解这个问题。 .gitignore用于您的本地树,这意味着.gitignore中的项目不会被提交(git commit),因此也不会被推送到git存储库,因此也不会出现在CI_PROJECT_DIR中。

–丹尼·古森(Danny Goossen)
17年11月25日在4:54

我很确定你知道我的问题。我的最后一句话只是我的错觉...谢谢

–克里希纳(Krishna Chalise)
17年11月27日在11:23