我在计算机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的正确方法:
我应该使用常见的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
那么,7cab42e4
,0
是什么。或者更好的如何获得我的项目结构的正确路径?有预定义的变量吗?
Edited2: 答案是CI_PROJECT_DIR。
答案 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
,然后查看最新动态。你应该看到这样的东西:
如果您发布.yaml文件可能是最好的,可能有很多原因让您的跑步者没有拿起代码。例如,也许你的.yaml标签与创建的跑步者不匹配等等。