gpt4 book ai didi

c# - 如何为 C# 项目设置 Gitlab CI 作业工件?

转载 作者:行者123 更新时间:2023-12-04 04:28:44 27 4
gpt4 key购买 nike

这就是我使用 Github 的方式:

jobs:
run-tests:

runs-on: ubuntu-latest

defaults:
run:
working-directory: ./MyApp

steps:
- uses: actions/checkout@v2

- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x

- name: Restore dependencies
run: dotnet restore

- name: Build project
run: dotnet build --no-restore

- name: Run tests
run: dotnet test --no-build
这次在 Gitlab 上,我的项目解决方案文件位于存储库的根目录中。我创建了一个 .gitlab-ci.yml文件并开始于
image: mcr.microsoft.com/dotnet/sdk:5.0

stages:
- restore-dependencies
- build-solution
- run-tests

restore-dependencies:
stage: restore-dependencies
script:
- dotnet restore --packages packages
artifacts:
paths:
- packages

build-solution:
stage: build-solution
script:
- dotnet build --no-restore --source packages --output build
artifacts:
paths:
- build
dependencies:
- restore-dependencies

run-tests:
stage: run-tests
script:
- dotnet test --no-build --output build
dependencies:
- build-solution
第一个作业通过,但第二个作业失败,因为它无法从第一个作业中找到恢复的文件。所以我的解决方案有一个 TestProject1并且第二个作业无法在 ...\TestProject1\obj\project.assets.json 中找到资源文件
如何修复管道配置?

最佳答案

您正在使用单独的作业来运行每个命令。 Gitlab 在一个新容器中运行每个作业,销毁来自前一个命令的任何上下文,除了明确指定的工件。要像在 Github 操作中配置的那样运行顺序命令,您只需添加多个步骤,这些步骤将在同一图像中顺序运行,从而保留命令之间的上下文。

stages:
- build-solution

run-tests:
image: mcr.microsoft.com/dotnet/sdk:5.0
stage: build-solution
script:
- dotnet restore
- dotnet build --no-restore
- dotnet test --no-build
或者 ,您可以使用工件和标志在作业之间传输每个命令的输出:
我相信工件必须是您的 $CI_PROJECT_DIR (source) 的相对路径,并根据 dotnet restore文档默认写入位置在主目录中。
您可以尝试使用 dotnet restore --packages packages 将写入位置指定为包/ (source)
和读取位置为包/与 dotnet build --source packages (source)
然后你需要指定这个工件,如:
artifacts:
paths:
- packages
您需要类似的用法 --output将您的构建工件保存在 build-solution 中的标志阶段。
这更复杂,但在某些情况下可能是需要的。

关于c# - 如何为 C# 项目设置 Gitlab CI 作业工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68132456/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com