我正在尝试使用Gitlab-runner和docker在本地运行我的Gitlab CI,然后再承诺确保它们可以正常工作。但是我有一些奇怪的问题!
不幸的是,我别无选择,只能使用Windows(过去在Linux上取得了成功)。
每次我在Powershell中运行工作时:
C:/Gitlab-runner/gitlab-runner exec docker npm
我收到一个错误:
Job failed (system failure): Error response from daemon: invalid volume specification: '/host_mnt/c/builds/project-0/Users/Lewsmith/api:C:/Users/Lewsmith/api:ro' (executor_docker.go:921:0s)
我试过设置docker卷(多种组合)和builds-dir:
C:/Gitlab-runner/gitlab-runner exec docker --builds-dir /builds --docker-privileged --docker-volumes "/builds:C:/Gitlab-runner/builds" npm
Error response from daemon: invalid mode: /Gitlab-runner/builds由于C.之后的冒号而导致失败。
当我感到困惑时,有人能指出我正确的方向吗?
使用gitlab-runner版本11.5.0
我有一个连接到在Google(GKE)上运行的k8s集群的Gitlab云。该集群是通过Gitlab云创建的。
我想自定义的config.toml,因为我想解决的K8S缓存中提出这个问题。
我config.toml在runner-gitlab-runnerConfigMap中找到了配置。我更新了ConfigMap以包含此config.toml设置:
config.toml: |
concurrent = 4
check_interval = 3
log_level = "info"
listen_address = '[::]:9252'
[[runners]]
executor = "kubernetes"
cache_dir = "/tmp/gitlab/cache"
[runners.kubernetes]
memory_limit = "1Gi"
[runners.kubernetes.node_selector]
gitlab = "true"
[[runners.kubernetes.volumes.host_path]]
name = "gitlab-cache"
mount_path = "/tmp/gitlab/cache"
host_path = "/home/core/data/gitlab-runner/data"
Run Code Online (Sandbox Code Playgroud)
要应用更改,我删除了runner-gitlab-runner-xxxx-xxxpod,因此使用更新的来创建一个新的pod config.toml。
但是,当我查看新的广告连播时,/home/gitlab-runner/.gitlab-runner/config.toml现在包含两个[[runners]]部分:
listen_address = "[::]:9252"
concurrent = 4
check_interval = 3
log_level = "info"
[session_server]
session_timeout = 1800 …Run Code Online (Sandbox Code Playgroud) 我在不同的网络上有两个单独的 git-lab 实例。我可以为每个人使用相同的跑步者吗?假设两个 git-lab 实例都可以访问带有运行器的服务器。是否可以为我的两个 git-lab 实例使用一个运行程序?我已经阅读了大部分关于跑步者的 git-lab 文档,但它似乎没有谈论这种情况,至少据我所知是这样。
我目前正在使用.env文件来获取 FASTFILE 中的环境变量,但现在我正在尝试使用 GitLab CI/CD 自动化 fastlane。
由于.env包含所有键的文件无法推送到分支,因此我必须.env在 GitLab 运行程序的环境变量中声明所有或环境变量。
我想知道如何在我的 fastfile 中使用 GitLab 运行程序的环境变量。
lane :build_staging do |options|
environment_variable(set: { 'ENVFILE' => '.env.staging' }) // I want to use the GitLab environment variable
clean
gradle(task: options[:task], build_type: 'Staging', project_dir: 'android/')
end
Run Code Online (Sandbox Code Playgroud) 我有兴趣列出在特定时期(在我的例子中是最后六个月)在 GitLab Runner 上运行的所有作业。或者更准确地说:我想找到所有已运行作业的项目。有没有办法通过网络界面或登录跑步者来做到这一点?
在网络界面中,我尝试查看管理区域 > 跑步者 > [Select_specific_runner]。在这里我可以看到“此运行者最近提供的作业”,但这仅列出了最近 30 次运行。
我也尝试过gitlab-runner从命令行使用该命令,但我还没有找到列出实际运行的方法。
如果用户触发管道并且没有设置使用options值调用的变量,是否有办法使我的整个管道失败?
我尝试过诸如 only 和规则之类的东西,但它们只是跳过作业而不是让所有作业失败。
这就是我使用 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
Run Code Online (Sandbox Code Playgroud)
这次在 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 …Run Code Online (Sandbox Code Playgroud) 我想根据本教程为我的 C# 项目生成单个覆盖率报告
https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-code-coverage
使用以下配置启动 Gitlab CI 管道时
image: mcr.microsoft.com/dotnet/sdk:5.0
stages:
- build
- unit-tests
build:
stage: build
script:
- dotnet build --output build
artifacts:
paths:
- build
unit-tests:
stage: unit-tests
script:
- |-
dotnet test --no-build --output build --collect:"XPlat Code Coverage";
dotnet tool install -g dotnet-reportgenerator-globaltool;
reportgenerator -reports:'**/coverage.cobertura.xml' -targetdir:'CoverageReports' -reporttypes:'Cobertura';
artifacts:
reports:
cobertura: CoverageReports/Cobertura.xml
dependencies:
- build
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
报告文件模式“**/coverage.cobertura.xml”无效。没有找到匹配的文件。
ls在运行 reportgenerator 命令之前使用检查目录时,我可以看到没有匹配的文件(尽管它们应该存在)。
我希望每个测试项目有一个coverage.cobertura.xml 文件,例如
...\myRepo\xUnitTestProject1\TestResults\380e65f7-48d5-468f-9cbc-550c8e0aeda8\coverage.cobertura.xml...\myRepo\xUnitTestProject2\TestResults\c96c55f7-40d3-483e-a136-573615e3a9c3\coverage.cobertura.xml我目前的解决方案:
看来我必须再次运行构建。所以我替换了这条线
dotnet test --no-build --output build --collect:"XPlat Code Coverage";
和
dotnet …
我在WSL Ubuntu 20中安装了Gitlab-runner。首先,我已经注册了runner并成功运行。但是当我检查 Gitlab-runner 的状态时,它显示:
namlb@Admin:/etc/init.d$ sudo gitlab-runner status
Runtime platform arch=amd64 os=linux pid=2170 revision=e0218c92
version=14.3.2
gitlab-runner: the service is not installed
Run Code Online (Sandbox Code Playgroud)
另一件让我困惑的事情是,当我已经运行gitlab-runner run命令时,我的跑步者只是执行作业,而在某些指南中,他们只需要运行gitlab-runner start,并且作业将在触发时执行。
以下是有关我的 gitlab-runner 的一些信息:
namlb@Admin:~$ sudo gitlab-runner start
[sudo] password for namlb:
Runtime platform arch=amd64 os=linux pid=2563 revision=e0218c92 version=14.3.2
namlb@Admin:~$ gitlab-runner status
Runtime platform arch=amd64 os=linux pid=2609 revision=e0218c92 version=14.3.2
FATAL: The --user is not supported for non-root users
namlb@Admin:~$ sudo gitlab-runner status
Runtime platform arch=amd64 os=linux pid=2635 revision=e0218c92 version=14.3.2
gitlab-runner: the service …Run Code Online (Sandbox Code Playgroud) 我对尝试实现 GitLab 的 CI/CD 管道完全陌生,但进展顺利。事实上,对于我的 ASP.NET 项目,如果我在msbuild使用 Web Deploy 的命令中指定发布配置文件,它实际上会将代码成功部署到 Web 服务器。
但是,我现在想让“构建”作业创建工件,将其上传到 GitLab,然后我可以随后进行部署。我们正在使用 GitLab 的自托管实例,我不是该实例的管理员,但如果我知道我要什么,我可以与管理员交谈!
所以我gitlab-ci.yml像这样配置了我的文件:
variables:
NUGET_PATH: 'C:\Program Files\Nuget\Nuget.exe'
NUGET_SOURCES: 'https://api.nuget.org/v3/index.json'
MSBUILD_PATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\msbuild.exe'
stages:
- build
build-job:
variables:
CI_DEBUG_TRACE: "true"
stage: build
script:
- '& "$env:NUGET_PATH" restore ApplicationTemplate.sln -Source "$env:NUGET_SOURCES"'
- '& "$env:MSBUILD_PATH" ApplicationTemplate\ApplicationTemplate.csproj /p:DeployOnBuild=true /p:Configuration=Release /p:PublishProfile=FolderPublish.pubxml'
artifacts:
paths:
- '.\ApplicationTemplate\bin\Release\Publish\'
Run Code Online (Sandbox Code Playgroud)
输出显示这可以很好地构建代码,并且似乎也成功找到了要上传的工件。但是,当它上传工件时,即使请求得到响应200 OK,该过程也会失败。这是日志输出:
因此,它找到工件,尝试上传它们,甚至获得响应200 OK(与我在网上找到的有关此错误的少数类似报告相反),但由于参数无效,它仍然失败。
我已经启用了详细调试,正如您从输出中看到的那样,但我一无所知。查看托管运行程序的盒子上的 Windows 事件日志中的 GitLab 运行程序条目也无法提供任何信息。工件的总大小为 61.1MB,所以我认为我的问题与此无关。
谁能从这个输出中看出什么是无效的?我可以确定哪个参数无效和/或为什么无效?
artifacts:expire_in …