标签: gitlab

git 快进合并是否会更改合并提交的 SHA?

换句话说,快进合并是否保证产生与要合并的源分支的 HEAD 相同的 GIT SHA?

我在终端中测试了此行为,它适用于我的测试场景:

$ git rev-parse some-branch
0fc9fba2fb1c8a13556da4a333351bc12909c497

$ git merge some-branch --ff-only
Updating 90c6244..0fc9fba
Fast-forward
 b | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 b

$ git rev-parse HEAD  
0fc9fba2fb1c8a13556da4a333351bc12909c497
Run Code Online (Sandbox Code Playgroud)

我可以在我的工具中利用这个条件,例如,我使用源 GIT SHA 标记构建工件。如果快进保证 SHA 不会发生变化,我就不必进行一些可能成本高昂的重建检查。问题是我必须确定这是真的。

git github git-merge gitlab

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

通过 ssh 克隆时询问密码

我正在使用 gitlab 的自定义安装。我在 wsl2

ssh 版本:

ssh -V
OpenSSH_8.2p1 Ubuntu-4ubuntu0.2, OpenSSL 1.1.1f  31 Mar 2020
Run Code Online (Sandbox Code Playgroud)

我创建了 ssh 密钥,然后将其添加到 gitlab

我还使用 ssh-add 添加了密钥

ssh-add -l
4096 SHA256:XXX...XXX (RSA)
Run Code Online (Sandbox Code Playgroud)

但是当我想通过 ssh 克隆 git 存储库时出现错误

git clone git@XX.XX.XX.XX:user/repo_name.git
git@XX.XX.XX.XX's password:
Permission denied, please try again.
Run Code Online (Sandbox Code Playgroud)

但当我这样做时

ssh -T git@XX.XX.XX.XX
Welcome to GitLab, user
Run Code Online (Sandbox Code Playgroud)

它不会要求我输入密码。

有人有解决办法吗?我已经到处寻找但一无所获

git ssh git-clone gitlab

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

使用 Gitlab API 令牌的 Jenkins 自由式项目永远不会克隆存储库,没有错误,构建总是成功

我已经按照这个 gitlab教程链接将我的 jenkins 服务器连接到 Gitlab。

一切都很顺利,我已经:

  • 在我的 GitLab 个人资料中创建了个人访问令牌
  • 使用 jenkins 系统配置中的我的 GitLab 访问令牌创建了一个 GitLab API 令牌,如教程中所述
  • 创建一个自由式詹金斯作业并从下拉列表中选择我的 GitLab 连接
  • 选中将更改推送到 GitLab 时构建复选框。
  • 选中“已接受的合并请求事件”“已关闭的合并请求事件”复选框
  • 从上述自由式项目中生成了一个秘密令牌
  • 使用 freestyle jenkins 项目秘密令牌在 GitLab 项目存储库集成设置中创建 Webhook

直到那里一切都很顺利。然后我将包含 a 的代码添加并推jenkinsFile送到我的 GitLab 存储库,并进入 Jenkins WebUI 查看构建状态,但管道显示绿色表示构建成功,虽然没有任何反应,但没有从 GitLab 检索到任何代码(如附加控制台输出屏幕截图),因此没有jenkinsFile执行,也没有显示错误消息。

我尝试从 WebUI 手动运行构建,但结果相同,无法git push events从 GitLab触发我的管道

在此输入图像描述

我想我可能应该GitSource Code Management部分中选择(我将其保留None,因为教程没有提及它),但如果我选择 Git 作为 SCM,我无法选择我的 GitLab API 令牌凭据,似乎我们无法使用 GitLab 插件(API 令牌)和同一构建项目的 Git …

jenkins gitlab jenkins-pipeline

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

我可以引用 gitlab 管道中的另一个项目而不是克隆它吗?

我对 gitlab pipeline 完全陌生,所以我不确定最好的方法是什么。我已经阅读了有关子模块和依赖项、触发其他管道的内容,但我很难理解什么有助于我在这里尝试实现的目标。

我有project_b,它是project_a 的子模块。在project_b的.gitlab-ci.yml中,project_a当前正在被克隆,然后project_b被移动到子模块通常位于project_a中的位置:

...
default:
...
    before_script:
        - git clone (project_a)
        - mv project_a /src
        - rm -rf /src/submodules/project_b/*
        - mount --bind /src/submodules/project_b
...
Run Code Online (Sandbox Code Playgroud)

这是因为project_b 依赖于project_a。

不过,据我了解,这意味着project_b是project_a的下游。

我不想每次运行project_b 管道时都必须克隆整个project_a 存储库。

我已经看到了大量有关为依赖项目触发下游管道的信息,但我唯一能找到的似乎与我的案例相关的是不久前提出的关于 gitlab 缺乏触发上游管道的功能的问题: 上游在 Gitlab-CI 中触发,又名管道依赖项

有添加这个功能吗?因为我确实在网上找不到任何信息。否则,关于如何绕过克隆整个project_a存储库的任何建议?我可能完全不在这儿,但我想知道的一件事是,是否有某种方法可以让project_b触发project_a的特定管道,而该管道只做我需要它做的事情来测试project_b?

任何建议将不胜感激,谢谢!

gitlab gitlab-ci

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

gitlab 静态应用程序安全测试出现错误“sast job:选择的阶段不存在;可用的阶段是”

我尝试按照这些相当简单的说明将静态应用程序安全测试 (SAST) 集成到 Gitlab 上的 Android CI/CD 管道中。但是,我在使用CI lint 工具时遇到以下错误:

sast job: chosen stage does not exist; available stages are .pre, stg_build, stg_test, .post
Run Code Online (Sandbox Code Playgroud)

这是我的 .gitlab-ci.yml 的最简单版本,它重现了错误:

sast job: chosen stage does not exist; available stages are .pre, stg_build, stg_test, .post
Run Code Online (Sandbox Code Playgroud)

我在 GitLab 中发现了类似的错误:选择的阶段不存在,但这是关于尝试使用环境变量作为阶段名称。

如何防止此错误并让 SAST 处理 Gitlab 上的合并请求?

gitlab gitlab-ci

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

Docker Push --all-tags 在管道中不起作用

我正在尝试将管道中构建的映像推送到 Docker 注册表,并且我的映像上有两个标签(latestcommit hash),但是当使用该命令时docker push --all-tags registry.gitlab.com/group/image-name,它不起作用,并且出现此错误:

未知标志:--all-tags

我正在使用最新版本的 docker,GitLab CI/CD 阶段定义如下

Build Docker Image:
  stage: Build Docker Image
  image: docker:stable
  needs: ["Build & Test App"]
  services:
    - docker:dind
  script:
    - echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin
    - docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
    - docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:latest"
    - docker push --all-tags "$CI_REGISTRY_IMAGE"
Run Code Online (Sandbox Code Playgroud)

当我在本地计算机上尝试时,似乎这个标志是已知的并且它可以工作。你知道,可能是什么问题吗?多谢。

gitlab docker gitlab-ci

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

如何将项目从IDEA连接到Gitlab

是否可以将IDEA中的项目连接到Gitlab?GitHub 没有问题,你指定一个 github 帐户,然后 VCS-> Import into ,它会在你的帐户中创建一个项目。但对于 GitLab,我看不到这种可能性。也许有什么办法?还是直接手动扔进去?

intellij-idea gitlab

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

如何使用预定义的 GitLab CI 变量和流入 GitLab Pipeline 日志的 Tekton 日志直接从 GitLab CI 触发 Tekton Pipeline

我们有一个正在运行的 AWS EKS(使用 Pulumi 设置),我们在其中安装了 Tekton,如云原生 Buildpacks Tekton 文档中所述。示例项目可用

我们的 Tekton 管道配置如下(也源自Cloud Native Buildpacks Tekton 文档):

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: buildpacks-test-pipeline
spec:
  params:
    - name: IMAGE
      type: string
      description: image URL to push
    - name: SOURCE_URL
      type: string
      description: A git repo url where the source code resides.
    - name: SOURCE_REVISION
      description: The branch, tag or SHA to checkout.
      default: ""
  workspaces:
    - name: source-workspace # Directory where application source is located. …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci kubernetes amazon-eks tekton

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

使用 gitlab-ci 构建多个 Docker 镜像

我正在尝试配置一个gitlab-ci.yml文件来自动构建两个 Docker 映像。我已经看到它是用 docker-compose 完成的,但就我而言,我不想使用 docker-compose。

我见过的配置docker-compose.yml是这样的:

version: '3'

services:
  vcxagency-base:
    build:
      context: https://github.com/AbsaOSS/vcxagencynode.git#master
      dockerfile: ./vcxagency-base/vcxagency-base.Dockerfile
    image: vcxagency-base:1.15.0
  
  vcxagency-node:
    build:
      context: https://github.com/AbsaOSS/vcxagencynode.git#master
      dockerfile: ./vcxagency-node/Dockerfile
    image: vcxagency-node:0.3.1
    ports:
      - 8080:8080
    depends_on:
      - postgres
    environment:
      - LOG_LEVEL=debug
      - LOG_ENABLE_INDYSDK=false
      - LOG_JSON_TO_CONSOLE=false
      - SERVER_PORT=8080
      - SERVER_MAX_REQUEST_SIZE_KB=300
      - SERVER_ENABLE_TLS=false
Run Code Online (Sandbox Code Playgroud)

我根本没有真正使用过 Docker。我尝试浏览文档,但找不到具体的内容。

目标是让这些在 Kubernetes 集群上运行,但现在我只想在 GitLab 中构建图像。

gitlab docker gitlab-ci kubernetes docker-compose

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

语义发布不接受 gitlab 私有存储库上的 GITLAB_TOKEN

这是错误日志消息:

\n
\n

[3:40:55 PM] [语义发布] \xe2\x80\xba \xe2\x9c\x96 命令“git push --dry-run\n--no-verify https://gitlab-ci-令牌:[secure]@[repository-url].git\nHEAD:main" 失败,并显示错误消息远程:不允许您上传代码。\n致命:无法访问 \'https://gitlab-ci- token:[secure]@[repository-url]/\': 请求的 URL 返回错误:403。

\n
\n

GITLAB_TOKEN在存储库设置中设置了所有必要的权限,但似乎它甚至没有被使用:

\n

在此输入图像描述

\n

这是我的.releaserc.json配置:

\n
{\n  "branches": ["main", { "name": "beta", "prerelease": true }],\n  "plugins": [\n    "@semantic-release/commit-analyzer",\n    "@semantic-release/release-notes-generator",\n    "@semantic-release/changelog",\n    "@semantic-release/npm",\n    "@semantic-release/gitlab",\n    [\n      "@semantic-release/git",\n      {\n        "assets": ["package.json", "package-lock.json", "CHANGELOG.md"],\n        "message": "chore(release): ${nextRelease.version} [skip ci]\\n\\n${nextRelease.notes}"\n      }\n    ]\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的.gitlab-ci.yml配置:

\n
# NodeJs image\nimage: node:16\n\n# STAGES\nstages:\n  - checks\n  - build\n  - release\n\n# SETUP\nbefore_script:\n  - node -v\n …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci gitlab-api semantic-release

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