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

GitLab CI/CD在构建ASP.NET核心之前从存储库中提取代码,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我在计算机A上运行GitLab,在计算机B上运行开发环境Visual studio Pro,在计算机C上运行Windows Server。 我在计算机C Windows server上设置了GitLab Runner。我还设置了.gitlab-ci.yml文件,以便在每次提交时为ASP.NET核心应用程序执行构建和运行测试 我不知道如何在计算机C Windows server上获取代码,以便构建它。dotnet msbuild/p:Configuration=Release%SOLUTION%。

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

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

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

用户创建拉请求创建新分支 用户编写代码 用户从计算机B向分支提交代码。 GitLab runner已在计算机C上启动。 它需要从当前分支提取代码 构建、测试、部署。。。 我应该使用commongit命令来获取代码,还是GitLab运行程序已经这样做了?密码在哪里

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

编辑:

我犯了一个错误

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

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

@米兰维达科维奇解释说,源代码是自动下载的,我不知道。 我还有一个问题,就是如何获得.sln文件的正确路径。 这是我完整的.gitlab-ci.yml文件:

我需要为解决方案设置正确的变量。GitLab Runner所在的My dir当前包含以下文件夹/文件:

- 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
那么,什么是7cab42e4,0。或者更好的方法是如何获得项目结构的正确路径?是否有任何预定义的变量

编辑2:
答案是

我不确定我是否完全听懂了

每次提交时,Gitlab runner都会将您的存储库提取到C:\Gitlab runner\builds。。在本地计算机C上,构建/部署或执行您作为舞台动作提供的任何操作

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

希望能有帮助

评论后编辑:

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

一旦文件本身有效并且包含正确的作业和阶段,runner就会自动获取最新的提交,并执行脚本项要求它执行的任何操作

要验证一切工作是否正常,请转到Gitlab->CI/CD->Pipelines,查看发生了什么。您应该看到如下内容:


如果你发布了你的.yaml文件,可能会有很多原因导致你的跑步者没有收到代码。例如,您的.yaml标记可能与创建的runner拾取的内容不匹配。

谢谢。我担心我的职位不清楚。问题是我的GitLab Runner并没有在计算机C上获取存储库的当前分支,或者它获取了?我想不是。我没有下这样的命令。这是自动完成的吗?或者我必须使用git fetch命令?您编辑的答案已经回答了我的问题。我只有一个问题,如何获得项目结构的路径。我编辑了我的问题。你知道如何获得项目结构的路径吗?你是说.yaml中的$CI_project_DIR吗?是的,你赢了我10秒钟。很高兴这有帮助。
- 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