标签: gitlab

gitlab-ci.yml 忽略私有运行器中的 docker 镜像

好吧,我在我的 Digital Ocean VPS 中创建了一个私人跑步者。这个私人跑步者正在使用shell executor,这是我的 gitlab-ci.yml 文件:

variables:
  VERSION_NAME: ${CI_COMMIT_REF_NAME}-${CI_CONCURRENT_ID}

before_script:
  - docker info

stages:
  - test
  - build
  - deploy
  - delivery

test_project:
  tags: 
    - safepark
  stage: test
  image: mcr.microsoft.com/dotnet/core/sdk:2.1
  script:
    - dotnet test

build_image:
  tags: 
    - safepark
  only:
    - master
  stage: build
  script:
    - docker build -f WebApi/Dockerfile -t myuser/myimage
    - docker tag -t myuser/myimage myuser/myimage:${VERSION_NAME}

push_image:
  tags: 
    - safepark
  only:
    - master
  stage: deploy
  script:
    - docker push myuser/myimage
    - docker push myuser/myimage:${VERSION_NAME}
Run Code Online (Sandbox Code Playgroud)

但在“测试”阶段,图像永远不会被拉出,我得到“dotnet …

gitlab gitlab-ci gitlab-ci-runner

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

无法访问 build.gradle UPD 中的 gitlab-ci 环境变量:使用 kaniko 时

我想获取 gitlab 环境变量并在 build.gradle 脚本中使用它。我在gitlab-ci中定义了变量:

 build:
  stage: build
  variables:
    TEST: "HELLO WORLD"
  script:
    - export
Run Code Online (Sandbox Code Playgroud)

另外,我使用 -export 命令来打印所有变量。我在 gitlab 作业控制台中看到了我的 TEST 变量。但是当我试图在 build.gradle 中获取这个变量时,它是空的。这是build.gradle代码片段:

    if (System.getenv('TEST') != null) {
    repositories {
        println 'CI=' + System.getenv('CI')
        println 'M- ' + System.getenv('MAVEN_REPO_USER')
        println 'T- ' + System.getenv('TEST')
        println 'CI_JOB_STAGE ' + System.getenv('CI_JOB_STAGE')
        mavenCentral()
    }
} else {
    repositories {
        println '*CI= ' + System.getenv('CI')
        println '*MAven ' + System.getenv('MAVEN_REPO_USER')
        println '* ' + System.getenv('CI_JOB_STAGE')
        println 'T-+++ ' + System.getenv('TEST')
        mavenCentral()
        mavenLocal()
    } …
Run Code Online (Sandbox Code Playgroud)

environment-variables gradle gitlab gitlab-ci

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

切换到新的 git 分支时 -b 和 -B 有区别吗?

这可能是一件很小的事情。我注意到有人在互联网上打字,-B而不是-b在切换到新分支时打字。

git checkout -B new_branch
Run Code Online (Sandbox Code Playgroud)

这意味着什么?我们什么时候使用大写 B。如果-D我们用大写 D 标志强制删除。资本 B 会发生什么?

Force deletion:
git branch -D local_branch
Run Code Online (Sandbox Code Playgroud)

我尝试查看这些很棒的git Flight Rules,但没有找到任何内容。

任何帮助,将不胜感激。

git github gitlab

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

从以前的 GIT 作业中获取工件

我的管道有 3 个阶段,所有 3 个阶段中的每个作业都创建一个 xml 数据文件。这些作业并行运行。

在此输入图像描述

我想在第四阶段合并所有 xml 数据文件。下面是我的yml代码

stages:
  - deploy
  - test
  - execute
  - artifact
script:
   - XYZ
artifacts:
  name: datafile.xml
paths:
  - data/
Run Code Online (Sandbox Code Playgroud)

问题:我如何收集以前作业中的所有 xml 来合并它?文件名是唯一的。

pipeline artifact gitlab git-archive gitlab-ci

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

连接 gitlab 时面临 ssh 身份验证失败

当尝试使用 gitlab 克隆 git 帐户时,

git克隆 git@gitlab.com:用户名/project.git

面对以下错误,

git@gitlab.com:权限被拒绝(公钥)。致命:无法从远程存储库读取。

gitlab 是使用我的 custom.pub 公共 ssh 密钥注册的。Windows 客户端 PC 的私钥和公钥都存储在“C:/Users/username/.ssh”中。

如何修复此故障

git ssh gitlab

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

GitLab 包注册表作为 Maven Artifactory

我正在尝试使用 GitLab Maven 包注册表将 GitLab 项目设置为所有其他项目的远程 Maven 存储库。我已将所有依赖项 jar 文件上传到包注册表。所有 jar 文件都已使用 maven 的部署功能上传。我现在尝试将此项目的包注册表设置为所有其他项目的远程 Maven 存储库。包注册表本身的每个单独的工件页面中提供了必要的存储库设置,如下所示:

<repositories>
  <repository>
    <id>gitlab-maven</id>
    <url>https://<gitlab_instance>/api/v4/projects/<project_id>/packages/maven</url>
  </repository>
</repositories>

<distributionManagement>
  <repository>
    <id>gitlab-maven</id>
    <url>https://<gitlab_instance>/api/v4/projects/<project_id>/packages/maven</url>
  </repository>

  <snapshotRepository>
    <id>gitlab-maven</id>
    <url>https://<gitlab_instance>/api/v4/projects/<project_id>/packages/maven</url>
  </snapshotRepository>
</distributionManagement>
Run Code Online (Sandbox Code Playgroud)

然而,即使将其添加到其他项目的 pom.xml 中,它们的构建也会因依赖项不可用而失败。似乎该项目的包注册表无法从其他项目访问。我在这里做错了什么?我还需要采取任何其他步骤吗?

dependencies repository maven gitlab github-package-registry

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

更改合并请求的一个文件而不引发新的合并请求

我在 dev 分支中做了一些更改,提交并推送 ( git push origin dev) 并从 gitlab 前端创建了一个新的合并请求。但现在我想在同一合并请求中修改 1 个文件而不引发新的文件。我可以删除远程上的开发分支并在本地更改该文件,然后再次提交并推送为git push origin dev. 这会损害我当前的合并请求吗?

git gitlab merge-request

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

如何使用 ansible 的 gitlab 部署令牌?

我的公司有一个自托管的 GitLab 服务器。我正在编写一个 Ansible 剧本,它使用 GitLab 服务器中的多个项目来配置服务器。

为了让目标服务器自动(非交互式)克隆项目,我使用了部署令牌。

首先,在我们的 GitLab 服务器的 Web 界面上,我进入我的第一个项目并为其生成了一个部署密钥。我可以将目标服务器配置为使用 ansible 的部署密钥,如下所示:

- name: Have git store credentials on disk
  community.general.git_config:
    name: credential.helper
    scope: global
    value: store

- name: Add credentials for project A
  copy:
      dest: /root/.git-credentials
      content: "https://{{ gitlab_project_A_deploy_username }}:{{ gitlab_project_A_deploy_password }}@company_gitlab_server.com"

- name: Clone Project A git repo
  git:
    repo: 'https://company_gitlab_server.com/USER/Project_A.git'
    dest: /some/dir/
Run Code Online (Sandbox Code Playgroud)

我设置gitlab_project_A_deploy_usernamegitlab_project_A_deploy_password在 ansible 保险库中。这很有效,除了在 中/root/.git-credentials,凭据不是特定于 git-repo 的 - 它们是特定于服务器的。

当我获得项目 B 的部署密钥时,它具有完全不同的用户名和密码,但服务器是相同的。即使我将两组凭据添加到ansible/root/.git-credentials模块git,甚至只是常规git …

git gitlab ansible

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

使用 Gitlab api 在 Gitlab 存储库中创建标签

我在 GitLab 中有 4 个存储库,名为 Repo1、Repo2、Repo3 和 Repo4

现在我如何使用 GitLab api 为所有 Repo 的 master 分支创建标签 v1.0 ?

git api gitlab devops gitlab-api

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

Gitlab Maven 部署到包注册表

我正在尝试 gitlab,它看起来很有前途。我遇到了一个巨大的问题,似乎整个互联网上没有人知道如何解决这个问题。

我添加了一个 Maven 项目(只有一个 pom.xml)项目,我想将其部署到包注册表中。如果我在家用计算机上执行此操作,则很简单。我只是将部署令牌添加到我的settings.xml 中并执行mvn deploy.

我想在每次构建时都对包注册表进行 Maven 部署,因此当我提交并推送代码时,它需要构建。问题是,如何将 Deploy 令牌传递到管道?简而言之,我想自动部署 Maven 库/依赖项,以便其他项目可以使用该依赖项。这就是它应该如何工作,但是在 gitlab 中完全没有记录如何做到这一点,而且似乎这个星球上没有人这样做。

简而言之,如何将 Maven 项目部署到项目/组包注册表?

maven gitlab

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