小编Nic*_*ter的帖子

如何将 GitLab CI 文件变量传递给 Dockerfile 和 docker 容器?

GitLab CI 允许向项目添加自定义变量。

它允许使用类型的秘密变量,file其中我指定了一个作为变量名称的密钥和作为文件内容的值(例如证书的内容)

然后在管道执行期间,内容将保存为临时文件,调用变量名称将返回创建文件的路径。

最终,我需要将此文件复制到构建项目时创建的 Docker 容器中。(docker build ...在yml中)

当如果变量作品测试,我想echo $VARIABLE.gitlab-ci.yml和它的作品,临时文件的路径返回。但是在RUN echo $VARIABLEin 中执行时Dockerfile,它是空的。因此我也不能使用ADD $VARIABLE /tmp/这是我的目标。

有没有办法解决这个问题并使这个文件可供Dockerfile? 我是 Docker 和 GitLab 的新手,不知道还能去哪里找。

gitlab docker gitlab-ci dockerfile devops

13
推荐指数
2
解决办法
8610
查看次数

Gitlab CI服务端口是如何暴露的?

我有一个.gitlab-ci.yml文件:

integration_test:
  services:
    - name: registry.gitlab.com/group/project/testmailserver:1.1
      alias: "mail.email"
  stage: test
  script:
    - ./gradlew -g /cache/.gradle --stacktrace --info integrationTest
Run Code Online (Sandbox Code Playgroud)

该服务是基于此的完整堆栈电子邮件服务器:tvial/docker-mailserver:latest.在我的docker-compose配置本地,我能够运行它并连接到它.

version: '2'

services:
  mail:
    image: registry.gitlab.com/group/project/testmailserver:1.1
    hostname: mail
    domainname: localhost
    ports:
      - "25:25"
      - "143:143"
      - "587:587"
      - "993:993"
    environment:
      - ONE_DIR=1
      - DMS_DEBUG=0
      - MAIL_USER=invoicereader
      - MAIL_PASS=invoicereader
    cap_add:
      - NET_ADMIN
Run Code Online (Sandbox Code Playgroud)

如果我运行它docker-compose up并通过端口993上的IMAP连接到它,它工作正常.集成测试也顺利进行

但是,如果集成测试由gitlab CI执行,则会失败.我唯一能得到的例外是Connection拒绝.

可能是服务的端口没有正确暴露?CI服务器如何确定它必须向所述服务打开的端口?

使用CI运行时可能出现什么问题?我该如何以不同方式测试?

对不起,很多问题,我只是绝望地失去了..

continuous-integration imap docker gitlab-ci gitlab-ci-runner

11
推荐指数
2
解决办法
1789
查看次数

是否有任何与 Java 13 兼容的 SonarQube 版本

我目前正在使用 Maven 在 Java 8 JDK 上使用 SonarQube Community Edition 7.7 版,我想开始评估 OpenJDK 13 。Sonarqube 不支持 OpenJDK 13

maven spring-boot sonarqube java-13

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

如何在 gitlab-ci 中使用规则

我正在尝试构建一个可以有条件地执行的作业,这取决于是否WebClientdevelop分支中修改了文件或子目录,使用rules. 如果仅在开发分支中发现更改,则将构建管道。

目前我得到的.gitlab-ci.yml

deploy_dev_client:
  stage: client
  tags:
    - my tags
  script:
    - '& cd WebClient'
    - 'npm rebuild node-sass'
    - 'npm install @angular/cli@7.0.3'
    - '& npm run build-release --max_old_space_size=$NODE_MEMORY_SIZE'

  rules:
    - changes:
      - WebClient/**/*
      when: always
    - when: never
Run Code Online (Sandbox Code Playgroud)

但是,经过测试,我意识到每当我从本地存储库向 gitlab 推送某些内容时都会执行管道,即使在另一侧的分支上也是如此。

我试过使用only:-develop',但它导致yaml invalid错误,可能是因为only如果rules已经使用则无法使用。无论如何,我仍然可以使用rules仅针对develop分支吗?

pipeline gitlab gitlab-ci gitlab-ci-runner

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

jq 找到引用值中的最大值

这是我的 JSONtest.json文件:

[
  {
    "name": "nodejs",
    "version": "0.1.21",
    "apiVersion": "v1"
  },
  {
    "name": "nodejs",
    "version": "0.1.20",
    "apiVersion": "v1"
  },
  {
    "name": "nodejs",
    "version": "0.1.11",
    "apiVersion": "v1"
  },
  {
    "name": "nodejs",
    "version": "0.1.9",
    "apiVersion": "v1"
  },
  {
    "name": "nodejs",
    "version": "0.1.8",
    "apiVersion": "v1"
  }
]
Run Code Online (Sandbox Code Playgroud)

当我使用时max_byjq返回0.1.9而不是0.1.21可能由于引用的值:

cat test.json | jq 'max_by(.version)'
{
  "name": "nodejs",
  "version": "0.1.9",
  "apiVersion": "v1"
}
Run Code Online (Sandbox Code Playgroud)

如何获取 version=0.1.21 的元素?

versioning json maxby jq

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

使用正则表达式替换 Go 中的文本

我在 Go 中工作,我有一个文本文件,我想在其中替换基于正则表达式的文本,但是即使我已经在这里测试了正则表达式并且它说存在匹配,它也没有按预期工作。

我在操场上做了一个基本的例子,我得到了同样的结果。我有 3 个具有相同标签 ( //==start== and //==end==) 的文本文件,它适用于第一个,但不适用于第二个和第三个。什么可以避免正则表达式正确替换文本?

https://play.golang.org/p/nZdHg5IfZ89

这是我使用的代码,我粘贴了所有字符串,因为我想确保它不是影响我的那个

package main

func main() {

    var re = regexp.MustCompile(Myregex)
    s := re.ReplaceAllLiteralString(originalString,"replaced")
    fmt.Println(s)

}

var Myregex = `\/\/==start==\n(.+\n)*\/\/==end==`

var originalString = `// @Author: someone
// @Date:   2018-01-23T16:46:09-04:00
// @Email:  dddddddd@gmail.com
// @Filename: _material.themes.scss
// @Last modified by:   Someone
// @Last modified time: 2018-01-23T18:40:39-04:00

@include angular-material-theme($theme);

.app-dark {
    @include angular-material-theme($dark-theme);
}

.app-pink {
    @include angular-material-theme($pink-theme);
}

//==start==
//==end==`
Run Code Online (Sandbox Code Playgroud)

regex go

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

mule服务器自动部署详细信息

我使用mmc来部署基于mule的应用程序.通过mmc部署的所有应用程序都转到mule服务器下的apps目录.如果我将应用程序直接放在mule-server/apps下,启动应用程序,应用程序运行成功,但我无法在mmc中查看部署详细信息.我需要在mule服务器上进行更改以查看mmc中已部署的应用程序详细信息?

我需要通过shell脚本进行自动部署.为此,我正在创建一个示例项目,创建zip文件,在mule服务器应用程序方向下复制此zip文件.最后,一旦mmc启动,我需要在mmc中查看已部署的应用程序,以查看流量​​,运行应用程序,流量分析器等.

编辑

根据下面给出的答案来部署一个新的应用程序,我给了我的网址:

curl --basic -u admin:admin -F file=@C:/apps/testserver-1.0.0-SNAPSHOT.zip -F name=test-app -F version=2.0 --header 'Content-Type: multipart/form-data' http://almule1.ux.corp.local:8585/mmc/api/repository

我收到的回复:

curl: (6) Could not resolve host: multipart {"versionId":"local$5015b8d6-b149-4245-a218-55c12aecc8e7","applicationId":"local$74616cb9-9ecb-4fd6-b167-bf153c8e59fb"}

我正在使用windows env在unix服务器中部署.

mule

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

错误:作业失败:构建目录需要是绝对路径

  • 在 Windows 上安装 Gitlab runner
  • 挂号的
  • 使用 test gitlab ci yaml 配置文件配置了一个测试 repo
  • CI/CD 管道显示错误
ERROR: Job failed: build directory needs to be an absolute path
Run Code Online (Sandbox Code Playgroud)

这是.gitlab-ci.yml

image: busybox:latest

before_script:
  - echo "Before script section"
  - echo "For example you might run an update here or install a build dependency"
  - echo "Or perhaps you might print out some debugging details"

after_script:
  - echo "After script section"
  - echo "For example you might do some cleanup here"

build1: …
Run Code Online (Sandbox Code Playgroud)

gitlab-ci-runner

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

如何在 Gitlab 中启用推送规则

根据文档推送规则在以下情况下不可见:

Settings > Repository 并展开 Push Rules

如何在我的 gitlab 存储库中启用推送规则

git gitlab

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

Sonarqube:布尔文字不应该是多余的

我有以下漂亮的一个班轮:

boolean outcome = count > 0 ? false : true;
Run Code Online (Sandbox Code Playgroud)

但是从 sonaqube 我得到“删除文字“假”布尔值”

解决方案似乎假设你可以重新写一个函数

但即使那个功能也会有那么简单的一个衬垫并将我放在相同的位置,我不太明白如何修复?想法?

java sonarqube sonarlint

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