标签: gitlab-ci-runner

Gitlab-runner + Docker + Windows-无效的卷规格

我正在尝试使用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

gitlab docker gitlab-ci gitlab-ci-runner

8
推荐指数
2
解决办法
1448
查看次数

如何在Kubernetes上自定义config.toml?

我有一个连接到在Google(GKE)上运行的k8s集群的Gitlab云。该集群是通过Gitlab云创建的。

我想自定义的config.toml,因为我想解决的K8S缓存中提出这个问题

config.tomlrunner-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)

gitlab gitlab-ci kubernetes gitlab-ci-runner

8
推荐指数
1
解决办法
1965
查看次数

我可以对多个 gitlab 实例使用相同的 gitlab-runner 吗?

我在不同的网络上有两个单独的 git-lab 实例。我可以为每个人使用相同的跑步者吗?假设两个 git-lab 实例都可以访问带有运行器的服务器。是否可以为我的两个 git-lab 实例使用一个运行程序?我已经阅读了大部分关于跑步者的 git-lab 文档,但它似乎没有谈论这种情况,至少据我所知是这样。

gitlab gitlab-ci gitlab-ci-runner

8
推荐指数
1
解决办法
5753
查看次数

如何在fastlane fastfile中使用gitlab CI环境变量?

我目前正在使用.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 gitlab-ci-runner fastlane

8
推荐指数
1
解决办法
3052
查看次数

如何列出 GitLab Runner 最近的所有工作?

我有兴趣列出在特定时期(在我的例子中是最后六个月)在 GitLab Runner 上运行的所有作业。或者更准确地说:我想找到所有已运行作业的项目。有没有办法通过网络界面或登录跑步者来做到这一点?

在网络界面中,我尝试查看管理区域 > 跑步者 > [Select_specific_runner]。在这里我可以看到“此运行者最近提供的作业”,但这仅列出了最近 30 次运行。

我也尝试过gitlab-runner从命令行使用该命令,但我还没有找到列出实际运行的方法。

gitlab gitlab-ci-runner

8
推荐指数
1
解决办法
7313
查看次数

Gitlab CI:如果未设置变量,管道就会失败?

如果用户触发管道并且没有设置使用options值调用的变量,是否有办法使我的整个管道失败?

我尝试过诸如 only 和规则之类的东西,但它们只是跳过作业而不是让所有作业失败。

gitlab gitlab-ci gitlab-ci-runner

8
推荐指数
1
解决办法
9944
查看次数

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

这就是我使用 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)

.net c# gitlab gitlab-ci gitlab-ci-runner

7
推荐指数
2
解决办法
297
查看次数

在 Gitlab CI 管道内运行时,dotnet-reportgenerator 无法找到任何coverage.cobertura.xml

我想根据本教程为我的 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 …

c# continuous-integration gitlab-ci gitlab-ci-runner

7
推荐指数
1
解决办法
208
查看次数

Gitlab 运行器状态显示“服务未安装”,但已安装并成功运行

我在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 gitlab-ci gitlab-ci-runner

7
推荐指数
1
解决办法
8651
查看次数

GitLab Runner 无法上传工件并出现“无效参数”错误

我对尝试实现 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,该过程也会失败。这是日志输出:

调试模式下 GitLab Runner 的输出屏幕截图

因此,它找到工件,尝试上传它们,甚至获得响应200 OK(与我在网上找到的有关此错误的少数类似报告相反),但由于参数无效,它仍然失败。

我已经启用了详细调试,正如您从输出中看到的那样,但我一无所知。查看托管运行程序的盒子上的 Windows 事件日志中的 GitLab 运行程序条目也无法提供任何信息。工件的总大小为 61.1MB,所以我认为我的问题与此无关。

谁能从这个输出中看出什么是无效的?我可以确定哪个参数无效和/或为什么无效?

编辑:我尝试过的事情

  • 指定 的值artifacts:expire_in …

gitlab-ci gitlab-ci-runner

7
推荐指数
1
解决办法
3932
查看次数