如何制作(在哪里找到)GitLab CI脚本来运行GitLab页面?

时间:2018-12-26 18:43:24

标签: gitlab gitlab-ci

我想使用带有纯HTML / CSS(实际上是SCSS)的GitLab存储库来部署静态页面。据我了解,静态页面至少需要.gitlab-ci.yml/public文件夹。文件.gitlab-ci.yml的最低要求如下:(an example from official doc

pages:
  stage: deploy
  script:
    - mkdir .public
    - cp -r * .public
    - mv .public public
  artifacts:
    paths:
      - public
  only:
    - master

我的问题在script行中。
(我假设下面的脚本将创建一个隐藏的文件夹名称.public并复制其中的所有文件,然后将其从.public移到公用文件夹。如果我输入错了,请纠正我。)

  script:
    - mkdir .public
    - cp -r * .public
    - mv .public public

对我来说,它类似于Linux的shell脚本。 GitLab doc中还确认它是由运行程序运行的。但是问题是,我怎么知道在GitLab中安装了多少个shell脚本?可以制造一个吗?

我想创建2个文件夹:srcpublic。 GitLab CI将运行脚本并从src编译SCSS,然后将其移至public

我正在使用 gitlab.com

2 个答案:

答案 0 :(得分:1)

没有“在Gitlab中安装了shell脚本”。 Gitlab支持多个shells,示例中的脚本部分只是纯bash命令。由于您很可能使用的是默认的dockerRunner,因此您可以从脚本部分执行bash命令,以仓库中的其他语言运行脚本,在docker容器上安装软件包,甚至准备和运行自己的docker映像。

答案 1 :(得分:1)

需要考虑的几件事。 gitlab中的每个作业都在容器中运行。通常,您指定要使用的那个。 Pages是一种特殊情况,因此您不必关心容器的图像。

pages作业将填充您的公用文件夹。但是您可以更改gitlab-ci.yml文件并添加步骤。

这将使用节点构建应用程序:

build_stuff:
 stage: build
 image: node:11
 before_script:
 - npm install
 script:
 - npm run build
artifacts:
  paths:
 - build

pages:
  stage: deploy
  script:
    - mkdir .public
    - cp -r build/ .public
    - mv .public public
  artifacts:
    paths:
      - public
  only:
    - master

格式已关闭

注意事项。第一步是运行构建步骤,以生成输出文件夹的所有资产。然后,它将存储在artifacts块中声明的所有内容(在本例中为build文件夹),并将其传递到下一个作业。相应地调整此步骤,以构建应用程序所需。

我在第二步中所做的唯一更改是,将构建文件夹的内容而不是整个存储库复制到.public文件夹中。还要根据您的需要进行调整。

对于shell脚本,除了带到存储库中的脚本外,没有其他脚本。默认运行程序支持Bash,因此您可以像在终端中一样执行bash命令。

如果您在仓库中创建文件foo.sh并执行bash foo.sh,它将执行脚本(如果它是可执行文件)。记住在推送之前对其进行修改。