GitLab CI/CD 在构建 ASP.NET Core 之前从存储库中提取代码
GitLab CI/CD pull code from repository before building ASP.NET Core
我在计算机 A 上安装了 GitLab 运行ning,在计算机 B 上安装了开发环境 (Visual studio Pro),在计算机 C 上安装了 Windows 服务器。
我在计算机 C(Windows 服务器)上设置了 GitLab-Runner。我还设置了 .gitlab-ci.yml
文件以在每次提交时为 ASP.NET 核心应用程序执行构建和 运行 测试。
我不知道如何在计算机 C(Windows 服务器)上获取代码,以便构建它 (dotnet msbuild /p:Configuration=Release "%SOLUTION%"
)。令我困扰的是,我在网上找到的没有一个示例 .gitlab-ci.yml
在构建应用程序之前没有从 GitLab 中提取代码。为什么?
这样设置是否正确 CI/CD:
- 用户创建拉取请求(创建新分支)
- 用户编写代码
- 用户提交代码以从计算机 B 分支。
- GitLab 运行ner 在计算机 C 上启动。
- 需要从当前分支(CI_COMMIT_REF_NAME)中拉取代码
- 构建、测试、部署...
我应该使用常见的 git 命令来获取代码,还是 GitLab 运行 工程师已经这样做了?代码在哪里?
为什么 .gitlab-ci.yml
中没有人从 GitLab 拉取代码?
已编辑:
我收到错误
'"git"' is not recognized as an internal or external command
。我的解决方案是重启 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 所在的位置)目前持有这个 folder/files:
- 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:
答案是CI_PROJECT_DIR。
我不确定我是否完全遵循。
在每次提交时,Gitlab runner 都会将您的存储库提取到本地计算机(计算机 C)上的 C:\gitlab-runner\builds..,并且 builds/deploys或者执行您为舞台提供的任何动作。
此外,我认为没有必要再次构建源代码。如果您将计算机 C 用于跑步者和 tests/acceptance,只需让跑步者进行构建并在您的 .gitlab-ci.yaml 中添加 Artifacts 项目。 artifacts 中定义的路径将在计算机 C 上保留您的可执行文件,然后您可以将其用于任何目的。
希望对您有所帮助。
评论后编辑:
当您推送到存储库时,Gitlab CI/CD 会自动检查您的根文件夹中是否有 .gitlab-ci.yaml 文件。如果它在那里,运行器接管,解析文件并开始执行 jobs/stages.
只要文件本身有效并包含正确的作业和阶段,runner 就会(自动)获取最新的提交并执行 script
项告诉它执行的任何操作。
要验证一切正常,请转到您的 Gitlab -> CI / CD -> Pipelines
,并检查发生了什么。你应该看到这样的东西:
也许您最好发布您的 .yaml 文件,您的运行程序没有获取代码的原因可能有多种。例如,您的 .yaml 标签可能与创建的运行器不匹配等。
我在计算机 A 上安装了 GitLab 运行ning,在计算机 B 上安装了开发环境 (Visual studio Pro),在计算机 C 上安装了 Windows 服务器。
我在计算机 C(Windows 服务器)上设置了 GitLab-Runner。我还设置了 .gitlab-ci.yml
文件以在每次提交时为 ASP.NET 核心应用程序执行构建和 运行 测试。
我不知道如何在计算机 C(Windows 服务器)上获取代码,以便构建它 (dotnet msbuild /p:Configuration=Release "%SOLUTION%"
)。令我困扰的是,我在网上找到的没有一个示例 .gitlab-ci.yml
在构建应用程序之前没有从 GitLab 中提取代码。为什么?
这样设置是否正确 CI/CD:
- 用户创建拉取请求(创建新分支)
- 用户编写代码
- 用户提交代码以从计算机 B 分支。
- GitLab 运行ner 在计算机 C 上启动。
- 需要从当前分支(CI_COMMIT_REF_NAME)中拉取代码
- 构建、测试、部署...
我应该使用常见的 git 命令来获取代码,还是 GitLab 运行 工程师已经这样做了?代码在哪里?
为什么 .gitlab-ci.yml
中没有人从 GitLab 拉取代码?
已编辑:
我收到错误
'"git"' is not recognized as an internal or external command
。我的解决方案是重启 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 所在的位置)目前持有这个 folder/files:
- 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: 答案是CI_PROJECT_DIR。
我不确定我是否完全遵循。
在每次提交时,Gitlab runner 都会将您的存储库提取到本地计算机(计算机 C)上的 C:\gitlab-runner\builds..,并且 builds/deploys或者执行您为舞台提供的任何动作。
此外,我认为没有必要再次构建源代码。如果您将计算机 C 用于跑步者和 tests/acceptance,只需让跑步者进行构建并在您的 .gitlab-ci.yaml 中添加 Artifacts 项目。 artifacts 中定义的路径将在计算机 C 上保留您的可执行文件,然后您可以将其用于任何目的。
希望对您有所帮助。
评论后编辑:
当您推送到存储库时,Gitlab CI/CD 会自动检查您的根文件夹中是否有 .gitlab-ci.yaml 文件。如果它在那里,运行器接管,解析文件并开始执行 jobs/stages.
只要文件本身有效并包含正确的作业和阶段,runner 就会(自动)获取最新的提交并执行 script
项告诉它执行的任何操作。
要验证一切正常,请转到您的 Gitlab -> CI / CD -> Pipelines
,并检查发生了什么。你应该看到这样的东西:
也许您最好发布您的 .yaml 文件,您的运行程序没有获取代码的原因可能有多种。例如,您的 .yaml 标签可能与创建的运行器不匹配等。