在构建ASP.NET Core之前,GitLab CI / CD从存储库中提取代码

时间:2018-02-19 09:12:27

标签: gitlab gitlab-ci gitlab-ci-runner

我在计算机A上运行GitLab,在计算机B上运行开发环境(Visual Studio Pro),在计算机C上运行Windows Server。 我在计算机C(Windows服务器)上设置了GitLab-Runner。我还设置了.gitlab-ci.yml文件,以便在每次提交时为ASP.NET Core应用程序执行构建和运行测试。

我不知道如何在计算机C(Windows服务器)上获取代码,以便我可以构建它(dotnet msbuild /p:Configuration=Release "%SOLUTION%")。让我感到困扰的是,我没有在网上找到一个例子.gitlab-ci.yml,在构建应用程序之前不会从GitLab中提取代码。为什么呢?

这是设置CI / CD的正确方法:

  • 用户创建拉取请求(创建新分支)
  • 用户编写代码
  • 用户提交代码以从计算机B分支。
  • GitLab runner在计算机C上启动。
  • 需要从当前分支(CI_COMMIT_REF_NAME
  • 中提取代码
  • 构建,测试,部署......

我应该使用常见的git命令来获取代码,还是GitLab运行器已经做了什么?代码在哪里?

为什么在.gitlab-ci.yml中没有人从GitLab中提取代码?

已编辑:

我收到错误

  

'“git”'未被识别为内部或外部命令

。我的解决方案是重启GitLab-Runner。 Source

@MilanVidakovic解释说源是自动下载的(我不知道)。 我还有一个问题是如何获得.sln文件的正确路径 这是我完整的.gitlab-ci.yml文件:

variables:
    SOLUTION: missing_path_to_solution           #TODO

before_script:
    - dotnet restore

stages:
    - build

build:
    stage: build
    script:
        - echo "Building %CI_COMMIT_REF_NAME% branch."
        - dotnet msbuild /p:Configuration=Release "%SOLUTION%"
    except:
        - tags

我需要为SOLUTION设置正确的变量。我的目录(GitLab-Runner所在的位置)目前拥有此文件夹/文件:

- config.toml
- gitlab-runner.exe
- builds/
    - 7cab42e4/
        - 0/
            - web/                 # I think this is project group in GitLab
                - test/            # I think this is project name in GitLab
                    - .sln
                    - AND ALL OTHER PROJECT FILES      #Based on first look
                - testm.tmp

那么,7cab42e40是什么。或者更好的如何获得我的项目结构的正确路径?有预定义的变量吗?

Edited2: 答案是CI_PROJECT_DIR

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全遵循。

在每次提交时,Gitlab运行器都会将您的存储库提取到本地计算机(计算机C)上的 C:\ gitlab-runner \ builds .. ,并构建/部署或执行任何操作#39 ; ve作为舞台的动作。

另外,我还没有看到再次构建源代码的必要性。如果您正在使用计算机C进行跑步和测试/验收,只需让跑步者进行构建并在.gitlab-ci.yaml中添加 Artifacts 项。 工件中定义的路径将在计算机C上保留您的可执行文件,然后您可以将其用于任何目的。

希望它有所帮助。

评论后编辑:

当您推送到存储库时,Gitlab CI / CD会自动检查您的根文件夹中的 .gitlab-ci.yaml 文件。如果它在那里,运行器接管,解析文件并开始执行作业/阶段。

只要文件本身有效且包含正确的作业和阶段,运行器就会自动获取最新的提交(自动)并执行script项目所要求的操作。

要验证一切正常,请转到Gitlab -> CI / CD -> Pipelines,然后查看最新动态。你应该看到这样的东西: enter image description here

如果您发布.yaml文件可能是最好的,可能有很多原因让您的跑步者没有拿起代码。例如,也许你的.yaml标签与创建的跑步者不匹配等等。