标签: gitlab-ci-runner

通过 gitlab api 或 gitlab-cli 获取 gitlab 项目的 `id`

有什么办法可以id通过 GitLab API获得项目的一个。

我使用提供项目名称的 GitLab API 创建了一个项目 -

curl -kX POST --header "PRIVATE-TOKEN: <access_token>" https://gitlab.example.com/api/v4/projects/my_app&visibility=internal

它返回预期有类似项目信息的结果linksidusernamespace等现在我要创建issue或创建branch。我id现在需要这个项目。那么如何检索id我的项目的my_app. (不是来自用户界面)。

我没有找到任何可以创建issuebranch不使用 project 的API 查询id

我总是需要id 问题 API

POST /projects/:id/issues

同样,我没有找到任何可以id使用该项目检索的 API 查询name

我唯一可以通过 Search API 使用并使用的东西 project name curl -kX GET --header "PRIVATE-TOKEN: <access_token>" https://gitlab.example.com/api/v4/search?scope=projects&search=my_app

但它提供了大量信息。我只需要检索project id. 不知道如何获得项目id

有 …

git curl gitlab gitlab-ci gitlab-ci-runner

5
推荐指数
2
解决办法
3650
查看次数

Docker Trust:无法将信任轮换到新的受信任根:无法使用当前受信任的证书验证数据

经过一个月的 docker trust 通过 GitLab CI 为我工作正常后,我突然收到了这条消息。

我有一个 Gitlab Runner 挂载 ~/.docker/trust (所以它被持久化)并将它推送到我们的 QA 注册表。

tag_image_test:
  stage: tag_image
  script:
    - docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $CI_REGISTRY
    - docker pull "${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG}"
    - export DOCKER_CONTENT_TRUST=1
    - export DOCKER_CONTENT_TRUST_SERVER=$QA_REGISTRY_SIGNER
    - export DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE=$QA_REGISTRY_SIGNER_ROOT_PASSPHRASE
    - export DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE=$QA_REGISTRY_SIGNER_REPO_PASSPHRASE
    - docker login -u "$QA_REGISTRY_USERNAME" -p "$QA_REGISTRY_PASSWORD" $QA_REGISTRY_URL
    - export PROJ_PATH=$(echo -en $CI_PROJECT_PATH | tr '[:upper:]' '[:lower:]')
    - docker tag "${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG}" "${QA_REGISTRY_IMAGE}/${PROJ_PATH}:${CI_COMMIT_REF_SLUG}"
    - docker push "${QA_REGISTRY_IMAGE}/${PROJ_PATH}:${CI_COMMIT_REF_SLUG}"
Run Code Online (Sandbox Code Playgroud)

但是推送命令以:

time="2019-03-18T11:51:14Z" level=debug msg="failed to verify TUF data for: qa.registry.local/mygroup/myimage, valid …
Run Code Online (Sandbox Code Playgroud)

docker gitlab-ci gitlab-ci-runner notary

5
推荐指数
1
解决办法
872
查看次数

如何将值传递给 Gitlab CI 作业

我有一个 GitLab ci 作业来下载和构建几个文件,然后发布到另一台服务器。我做了一个 POC 并且成功了。问题是我想在手动或通过 API 触发时自定义作业。我如何传递动态值(用户给定)以反映 CI 作业(如文件名、格式等)?

我正在使用 Windows 运行程序。

我看到了触发器变量和环境变量,但是一旦在 UI 中设置了值,就可以在执行时检索。我想要从用户那里获取值的地方有点不同。

在 GitLab 中是不可能的吗?

编辑:

关于我如何使用管道的更多信息。我的管道有两个阶段 - 构建和部署。我希望构建运行一次,但我希望能够调用多个部署来部署到不同的服务器。我可以使用该变量来确定要部署到哪个服务器。通过 GitLab UI,这是可能的 - 我可以为管道设置变量,也可以为覆盖管道变量的作业设置变量。我只想通过 API 做同样的事情。

git gitlab gitlab-ci-runner

5
推荐指数
1
解决办法
5224
查看次数

用于通过 gitlab-ci 将 minio docker 容器作为服务运行以进行测试的配置

我曾多次尝试在 GitLab CI 中将 Minio 服务器作为服务启动,然后运行我需要 S3 存储桶的测试,但我一直收到“无法链接到非运行容器”的错误消息。这是 Minio Server 的 docker-compose.yaml 在官方网站上的样子:

services:
 minio1:
  image: minio/minio:RELEASE.2019-03-27T22-35-21Z
  volumes:
   - data1:/data
  ports:
   - "9001:9000"
  environment:
   MINIO_ACCESS_KEY: ***
   MINIO_SECRET_KEY: ***
  command: server http://minio1/data 
Run Code Online (Sandbox Code Playgroud)

这里它尝试在我的 gitlab-ci 中使用 Docker 中的 Docker 启动 Minio Server:

stages:
-test
image: my_image

u_tests:
  services:
    - name: minio/minio:RELEASE.2019-03-27T22-35-21Z
      alias: miniotest
    - name: docker:stable-dind
      command:
        - docker run -p 9000:9000 --name minio1 \
          -e "MINIO_ACCESS_KEY=key" \
          -e "MINIO_SECRET_KEY=key" \
          minio/minio server /data
  variables:
    MINIO_ACCESS_KEY: ***
    MINIO_SECRET_KEY: ***
  stage: test
  script: …
Run Code Online (Sandbox Code Playgroud)

docker gitlab-ci gitlab-ci-runner minio

5
推荐指数
1
解决办法
1044
查看次数

如何在 Gitlab-ci 中正确登录以使用来自 GCR 的私有图像?

我正在尝试登录 CGR 并在 Gitlab-ci runner 中使用一些私有 docker 图像。

我在 Google Cloud 中创建了一个新项目并激活了 Google Cloud Registry API。我还创建了一个新的服务帐户 (IAM),我在其中授予了先前 Cloud Registry 实例的所有权权限。然后我生成了一个json密钥。我使用以下 gitlab-ci 配置并在本地机器上测试了密钥:

image: docker:latest
services:
  - docker:dind
auth:
  stage: auth
  script:
    - docker login -u _json_key --password-stdin https://gcr.io < ./keyfile.json
Run Code Online (Sandbox Code Playgroud)

它似乎经过身份验证和授权推/拉图像。

我需要做的是拥有以下内容,我需要转到我的私人存储库并在 gitlab-ci runner 中使用这些图像。像这样的东西:

before_script:
    - docker login -u _json_key --password-stdin https://gcr.io < ./keyfile.json

build:
  stage: build
  image: gcr.io/image-repo/image
  script:
    - gradle clean build

deploy:
  stage: deploy
  image: gcr.io/image-repo/image
  script:
    - gradle publish
  only:
    - master
Run Code Online (Sandbox Code Playgroud)

但是,我不断收到此错误:

在 docker-auto-scale …

docker google-cloud-platform gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
1785
查看次数

致命:无法访问“https://gitlab-ci-token:[MASKED]@gitlab.mydomain.com/xxx.git/”:SSL 证书问题:无法获得颁发者证书

我无法成功运行 autodevops 管道。我已经阅读了多个教程、指南、问题、修复和解决方法,但现在我需要您的支持。

我有一个家庭 kubernetes 集群(两个虚拟机)和一个使用 HTTPS 的 GitLab 服务器。我已经设置了集群并在 GitLab 组级别(安装了 helm、ingress、runner)中定义了它。我必须做一些调整才能使跑步者在 gitlab 中注册(它最初不接受证书)。

现在,当我运行 autodevops 管道时,我在日志中收到如下错误:

Running with gitlab-runner 11.9.0 (692ae235)
  on runner-gitlab-runner-5976795575-8495m cwr6YWh8
Using Kubernetes namespace: gitlab-managed-apps
Using Kubernetes executor with image registry.gitlab.com/gitlab-org/cluster-integration/auto-build-image/master:stable ...
Waiting for pod gitlab-managed-apps/runner-cwr6ywh8-project-33-concurrent-0q7bdk to be running, status is Pending
Running on runner-cwr6ywh8-project-33-concurrent-0q7bdk via runner-gitlab-runner-5976795575-8495m...
Initialized empty Git repository in /testing/helloworld/.git/
Fetching changes...
Created fresh repository.
fatal: unable to access 'https://gitlab-ci-token:[MASKED]@gitlab.mydomain.com/testing/helloworld.git/': SSL certificate problem: unable to get issuer certificate
Run Code Online (Sandbox Code Playgroud)

我尝试了许多解决方法,例如在下添加我的域的 CA 证书,/home/gitlab-runner/.gitlab-runner/certs/gitlab.mydomain.com.crt …

certificate ssl-certificate x509certificate kubernetes gitlab-ci-runner

5
推荐指数
1
解决办法
5110
查看次数

在本地使用 gitlab-runner 并传递上一步中的工件

我正在尝试调试 GitLab CI 管道中的一些问题。我有一个步骤 B,它使用了步骤 A 中的一些工件。

步骤 A 很长(并且在 CI 中工作),所以我不想在本地运行它:我只是从 GitLab 下载生成的工件。所以我有一个artifacts.zip,我提取它以获得一个output和一个logs目录。到现在为止还挺好。

我想在本地运行步骤 B,使用gitlab-runner. 请注意,我使用的是 9.5 版(https://docs.gitlab.com/runner/install/old.html)。

我正在使用这个命令:

gitlab-runner exec docker step-b
Run Code Online (Sandbox Code Playgroud)

正如我所解释的,step-b需要来自step-a. 这是我尝试过的:

gitlab-runner exec docker --docker-volumes ~/Downloads/output step-b 
Run Code Online (Sandbox Code Playgroud)

在步骤 B 中执行的脚本之一正在执行类似mv ../output /some/where/else. 但是,此脚本失败并出现以下错误:

mv: cannot stat '../output': No such file or directory
Run Code Online (Sandbox Code Playgroud)

出现此错误后,我有两个问题:

  • 这个脚本在哪里执行?它是这样调用的.gitlab-ci.yml

    ./scripts/my_script.sh.
    
    Run Code Online (Sandbox Code Playgroud)

    什么是.在这种情况下?

  • 如何确保使用--docker-volumes ~/Downloads/output将目录安装在正确的位置以便我的脚本可以找到它?

编辑

根据要求,这里是步骤 A 的描述。

script: …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
1170
查看次数

如何将 `extends` 与 `gitlab-runner exec` 一起使用

我有一个.gitlab-ci.yamlextends指令,这对gitlab-CI工作,但我不能测试它gitlab-runner exec,它看起来像extends被忽略gitlab-runner

我有两个文件,例如:

# .2extend.yml
.job2extend:
  image: some/docker/img
  stage: test
  script:
    - echo do things with "${myvar}"
Run Code Online (Sandbox Code Playgroud)

# .gitlab-ci.yml
include:
  - project: 'project/to/extend'
    ref: master
    file: '.2extend.yml'

myjob:
  extends: .job2extend
  variables:
    myvar: 'My Variable'
Run Code Online (Sandbox Code Playgroud)

这是我遇到的错误:

$ gitlab-runner exec docker myjob
Runtime platform                                    arch=amd64 os=linux pid=29785 revision=45d9c1d6 version=12.4.0~beta.1935.g45d9c1d6
FATAL: missing 'script' for job
Run Code Online (Sandbox Code Playgroud)

我正在扩展的工作既有指令script又有image指令。

我遇到了这个问题,它和我有同样的问题。

那么,在问题没有解决的情况下,有没有办法做到这一点?

gitlab gitlab-ci gitlab-ci-runner

5
推荐指数
1
解决办法
525
查看次数

Maven Nexus 问题 - 403 Forbidden 授权失败

我们已经讨论这个问题好几天了。

为 Java 应用程序创建了一个 Gitlab CI 管道,从 Maven 和 Nexus 读取依赖项

gitlab 管道被配置为以具有管理员权限的 Nexus 用户身份运行,这已经被多次验证。

但是,当执行 gitlab 管道时,我们收到以下错误:

[ERROR] Failed to execute goal on project hello-component: Could not resolve dependencies for project x.y.z:hello-component:jar:1.6-SNAPSHOT: Failed to collect dependencies at a.b:c:jar:4.5.1132100: Failed to read artifact descriptor for b:c:jar:4.5.1132100: Could not transfer artifact a.b:c:pom:4.5.1132100 from/to maven-snapshots (http://host:8081/repository/maven-snapshots): Authorization failed for http://host:8081/repository/maven-snapshots/a/b/c/4.5.1132100/nidp-4.5.1132100.pom 403 Forbidden -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project hello-component: Could not resolve dependencies for project x.y.z:hello-component:jar:1.6-SNAPSHOT: Failed to …
Run Code Online (Sandbox Code Playgroud)

java nexus maven gitlab gitlab-ci-runner

5
推荐指数
1
解决办法
4641
查看次数

Gitlab 运行程序无法启动。此作业被卡住,因为您没有任何活跃的在线跑步者并分配了以下任何标签:ios

我有一个远程跑步者:

ci$ gitlab-runner --version 版本:12.2.0

.gitlab-ci.yml :

stages:
  - build
  - deploy

variables:
  LANG: "en_US.UTF-8"
  LC_ALL: "en_US.UTF-8"

build:
  tags:
    - ios
  stage: build
  script:
    - bundle exec fastlane build
  except:
    - develop
    - master
    - /^rc\/.*$/
  environment:
    name: production

deploy:
  tags:
    - ios
  stage: deploy
  before_script:
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client git -y )'
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
    - mkdir -p ~/.ssh
    - …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci-runner

5
推荐指数
2
解决办法
9335
查看次数