标签: gitlab

是否可以允许 CI/CD 作业中的脚本失败?

可以允许整个作业失败

job1:
  stage: test
  script:
    - execute_script_that_will_fail
  allow_failure: true
Run Code Online (Sandbox Code Playgroud)

是否有可能在一系列脚本中,有一个允许失败(而其他则不允许)?

job1:
  stage: test
  script:
    - execute_script_that_MAY_fail_and_should_be_marked_somehow_in_this_config_as_such
    - execute_script_that_MUST_NOT_fail
Run Code Online (Sandbox Code Playgroud)

理由是可能存在相关的脚本,应该组合在一起并且按顺序排列,并且只允许其中一些脚本失败。

例如,docker 部署具有 a build(不得失败)、stop容器的 a(如果容器未运行,则可能会失败)和 a run(不得失败)。

我当前的解决方法是将其分成单独的工作,但这是一个丑陋的黑客:

stages:
  - one
  - two
  - three

one:
  stage: one
  script:
    - execute_script_that_MUST_NOT_fail

two:
  stage: two
  script:
    - execute_script_that_MAY_fail
  allow_failure: true

three:
  stage: three
  script:
    - execute_script_that_MUST_NOT_fail
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci

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

搞乱了 gitlab 权限,现在不知道该怎么办

我试图让我的 gitlab-runner 工作,但我把我的 gitlab 配置弄得非常糟糕......我希望可以恢复我的自托管 gitlab 实例。

首先,当我运行时,sudo gitlab-ctl status我得到输出

down: alertmanager: 1s, normally up, want up; run: log: (pid 8770) 1438s
down: prometheus: 0s, normally up, want up; run: log: (pid 8742) 1438s
Run Code Online (Sandbox Code Playgroud)

其余部分按我猜测的方式工作。正如我之前所说,由于配置混乱,导致权限被拒绝错误相关的问题sudo chown ...

有没有办法恢复旧的用户权限?或者有没有办法获取gitlab所需的权限配置信息?

非常感谢!

PS:当我运行时sudo gitlab-ctl reconfigure出现此错误

 ================================================================================
    Error executing action `run` on resource 'execute[/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-keys check-permissions]'
    ================================================================================

    Mixlib::ShellOut::ShellCommandFailed
    ------------------------------------
    Expected process to exit with [0], but received '1'
    ---- Begin output of /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-keys check-permissions ----
    STDOUT: error: could not open …
Run Code Online (Sandbox Code Playgroud)

gitlab

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

Jenkins Groovy 无法通过 https 端口使用 oauth 令牌克隆 gitlab 存储库

我无法使用 https 上的 oauth2 令牌通过 jenkins groovy 从 gitlab 签出代码。

使用相同的 oauth 令牌在 git cli 上进行克隆。我还可以通过同一台计算机上的curl 列出我的所有Gitlab 项目。

但无法通过 groovy 管道使用 Oauth2 令牌调用 git clone。

约束:Jenkins 服务器需要通过 groovy 脚本使用 oauth2 令牌通过 https 端口(仅)与 gitlab 服务器进行通信。我想使用 jenkins 凭证管理器来存储 Oauth2 令牌 - 而不是直接通过 s 脚本传递它

错误:状态代码 128:stderr:远程:HTTP 基本:访问被拒绝

**用于结帐的 Groovy 代码 **

checkout([$class: 'GitSCM', branches: [[name: "*/$GIT_BRANCH"]], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'Default', submoduleCfg: [], userRemoteConfigs: [[credentialsId: "$GIT_CREDS_ID", url: "$GIT_URL"]]])

Run Code Online (Sandbox Code Playgroud)

问题是 $GIT_CREDS_ID :仅选择具有 SSH 私钥或用户名/密码组合的凭证 ID。但不选择具有 Oauth 令牌的凭证 ID(安装 git lab 插件后创建) …

groovy oauth-2.0 jenkins gitlab jenkins-groovy

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

从 git 分支中删除文件但将其保留在另一个分支中?

最近,我在同一个项目的两个不同分支中与其他人一起工作。我不小心将包含他的代码的分支合并develop到我的分支中。然后我在我的合并请求中看到了他的文件,随后我经历了惨痛的教训

git rm HIS_FILES

在我的分支中删除他不需要的文件,不仅会从我的分支中删除它们,还会从他的分支(以及整个 git 索引)中删除它们。

我想知道的是,我如何正确地从我的分支中删除他的文件,以便它们不会从他的分支中删除?一旦我意识到他的文件在我的分支中,我是否会创建一个新分支?在将分支合并develop到本地分支之前,我是否会恢复到上一个​​提交?

谢谢你的帮助

git version-control branch repository gitlab

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

Kubernetes & Gitlab:如何存储私有注册表的密码?

我想运行托管在 Kubernetes 集群上的私有容器注册表中的应用程序。我按照此处的说明创建了一个像这样的秘密:

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> \
      --docker-username=<your-name> \
      --docker-password=<your-pword> \
      --docker-email=<your-email>
Run Code Online (Sandbox Code Playgroud)

在我的部署中使用它是这样的:

      containers:
      - image: registry.gitlab.com/xxxxx/xxxx
        name: dockerdemo
        resources: {}
      imagePullSecrets:
      - name: regcred
Run Code Online (Sandbox Code Playgroud)

K8s 现在可以从我的私有注册表中提取映像。无论如何,我对我的用户和密码以纯文本形式存储在集群中感到不舒服。是否有更好/更安全的方法让 K8s 集群通过令牌访问注册表?

gitlab docker kubernetes

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

GitLab CI 无需 DinD 即可登录私有仓库

我是 GitLab 的新手,不确定这是否可行,我已经在本地设置了 GitLab 并正在运行,还有 Artifactory 私人存储库。

我总是使用 DinD 配置,使用 Docker 作为带有 DinD 服务的主映像,然后在各个阶段登录并从私有存储库中提取不同的映像。

但我听说没有 DinD 也可以做到这一点,从而缩短执行时间。所需的图像是在阶段开始时拉取的。

而不是这个:

image: docker:latest

services:
  - docker:18.09.8-dind

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_HOST: tcp://localhost:2375 

stages:
  - run_script

run_script:
  stage:
    run_script
  script:
    - docker login -u $DOCKER_TECHNICAL_USER -p $DOCKER_TECHNICAL_USER_PASSWORD $DOCKER_REGISTRY_URL
    - docker pull artifactory.example.com:5000/repo/powershell-core:6.3
    - docker run -it artifactory.example.com:5000/repo/powershell-core:6.3 pwsh -command "get-process"
Run Code Online (Sandbox Code Playgroud)

我想这样做(整个yml):

stages:
  - run_script

run_script:
  before_script:
    - docker login -u $DOCKER_TECHNICAL_USER -p $DOCKER_TECHNICAL_USER_PASSWORD $DOCKER_REGISTRY_URL
  image: artifactory.example.com:5000/repo/powershell-core:6.3
  stage:
    run_script
  script:
    - pwsh -command "get-process"
Run Code Online (Sandbox Code Playgroud)

如果我尝试这样做,它会说它无法进行身份验证:

ERROR: …
Run Code Online (Sandbox Code Playgroud)

continuous-integration gitlab gitlab-ci gitlab-ci-runner devops

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

github合并“拉请求”和gitlab合并“合并请求”的区别

为了更好地理解这些操作,我想知道 github 或 gitlab 到底是如何合并这些请求的。当压缩、变基、合并……时,详细执行哪些 git 命令?

git github pull-request gitlab merge-request

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

Python GitLab 如何获取项目中的所有文件名?

我想获取 git 项目中的所有文件( python 文件 esp )。虽然我可以根据文件名输入一次访问一个文件。我不确定如何获取目录下的所有文件名。

我现在的代码如下

gl=gitlab.Gitlab('https://git.sys.xxx.com', private_token=pwd, api_version=4)
gl.auth()
project=gl.projects.get('hadoop-d/xyz')
a='src/main/python/xyz_inbound/baseline/*.*'
b='file_name'
c='.py'
d=a+b+c
f=project.files.get(file_path=d, ref='master')

Run Code Online (Sandbox Code Playgroud)

python git api gitlab

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

如何在 gitlab CI/CD 中使用 zappa 将应用程序部署到 AWS Lambda?

我正在尝试通过 gitlab CI 通过 zappa 在 aws lambda 上部署 Flask 应用程序。由于无法通过 gitlab CI 进行内联编辑,因此我zappa_settings.json在远程计算机上生成了该文件,并且尝试使用它来执行zappa deploy dev.

我的zappa_settings.json文件:

{
    "dev": {
        "app_function": "main.app",
        "aws_region": "eu-central-1",
        "profile_name": "default",
        "project_name": "prices-service-",
        "runtime": "python3.7",
        "s3_bucket": -MY_BUCKET_NAME-
    }
}
Run Code Online (Sandbox Code Playgroud)

我的.gitlab-ci.yml文件:

image: ubuntu:18.04

stages:
  - deploy

before_script:
  - apt-get -y update
  - apt-get -y install python3-pip python3.7 zip
  - python3.7 -m pip install --upgrade pip
  - python3.7 -V
  - pip3.7 install virtualenv zappa

deploy_job:
  stage: deploy
  script:
    - …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services zappa gitlab gitlab-ci aws-lambda

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

适用于 Python 的 GitLab CI 共享 Windows 运行器

我在 GitLab 中有一个 python 项目仓库。我看到 GitLab 共享了可用的测试版 Windows 运行程序(请参阅这篇文章)。

gitlab-ci.yml我想知道Windows 共享运行器上的 python是否有任何标准?如果是这样,由于这仍然是测试版,我很好奇它的稳定性如何?对于那些使用过这个并且有 AppVeyor 经验的人来说,我使用 AppVeyor 还是这个更好?

谢谢!

python windows continuous-integration gitlab

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