GitLab CI 允许向项目添加自定义变量。
它允许使用类型的秘密变量,file其中我指定了一个作为变量名称的密钥和作为文件内容的值(例如证书的内容)
然后在管道执行期间,内容将保存为临时文件,调用变量名称将返回创建文件的路径。
最终,我需要将此文件复制到构建项目时创建的 Docker 容器中。(docker build ...在yml中)
当如果变量作品测试,我想echo $VARIABLE在.gitlab-ci.yml和它的作品,临时文件的路径返回。但是在RUN echo $VARIABLEin 中执行时Dockerfile,它是空的。因此我也不能使用ADD $VARIABLE /tmp/这是我的目标。
有没有办法解决这个问题并使这个文件可供Dockerfile? 我是 Docker 和 GitLab 的新手,不知道还能去哪里找。
我有一个.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
我目前正在使用 Maven 在 Java 8 JDK 上使用 SonarQube Community Edition 7.7 版,我想开始评估 OpenJDK 13 。Sonarqube 不支持 OpenJDK 13
我正在尝试构建一个可以有条件地执行的作业,这取决于是否WebClient在develop分支中修改了文件或子目录,使用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分支吗?
这是我的 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_by,jq返回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 的元素?
我在 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) 我使用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服务器中部署.
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) 我有以下漂亮的一个班轮:
boolean outcome = count > 0 ? false : true;
Run Code Online (Sandbox Code Playgroud)
但是从 sonaqube 我得到“删除文字“假”布尔值”
该解决方案似乎假设你可以重新写一个函数
但即使那个功能也会有那么简单的一个衬垫并将我放在相同的位置,我不太明白如何修复?想法?