遇到的问题

发布于 2024年02月23日

1.docker搭建的平台迁移后,gerrit同步不了gitlab。

报错:在replication_log中显示

报错:
Caused by: org.eclipse.jgit.errors.UnsupportedCredentialItem: ssh://git@ip:2289: The authenticity of host 'ip' can't be established.
RSA key fingerprint is 7d:0a:ec:75:66:71:84:19:db:cc:9a:df:d9:bf:2a:54.
Are you sure you want to continue connecting?

报错: Auth fail

解决方法:是因为迁移完数据后同步到gitlab是不会成功的,报错为Auth fail,ssh_host文件值是之前服务器的值,容器内/var/gerrit/etc/下的ssh_host文件值是不会变的,需要重新生成ssh-host文件。在新服务器内创建新的gerrit容器,将/var/gerrit/ect/目录下的ssh_host所有文件拷贝到以前的数据目录内。重启后同步就会正常运行。

2.docker搭建的Jenkins 执行job Console Output中文乱码

由于slave节点也是容器,先看其他容器是否也一样中文乱码,如果是一样,则可以配置Jenkins--->Manage Jenkins--->Configure System--->Global properties

设置

Name:LANG

Value:es_EN.UTF-8

Name:JAVA_TOOL_OPTIONS -Dfile.encoding

Value:UTF8

Name:file.encoding

Value:UTF-8

也可以配置slave节点的环境变量,或者job内写入环境变量。

其他slave节点是可以显示中文的,那就说明是容器有问题,

那么就可以在容器内配置环境变量,或者是启动Jenkins agent.jar的时候配置环境变量

java -Dfile.encoding=UTF-8 -jar agent.jar -jnlpUrl ....

3.ubuntu ssmtp发送邮件显示root xxx@xxx.com

需要更改/etc/ssmtp/ssmtp.conf

FromLineOverride=YES
FromLineOverrideFrom=xxx@soimt.com
写上你想更改的邮箱

并且使用mail命令需要加上-aFrom:"xxx@soimt.com"

如:

mail -s "$(echo ""Account Password Expiration Notice"\nContent-Type: text/html; charset=utf-8")" -aFrom:"xxx@soimt.com" zhangyishuai@qq.com

然后发件人就会显示xxx@soimt.com

4. Jfrog日志时区问题

Artifactory 日志时区问题

更改 Artifactory 日志文件中的时区可以通过更改“logback.xml”文件中的时区来完成。该文件位于 $JFROG_HOME/var/etc/artifactory/logback.xml

需要将所有“UTC”时区替换为所需的 GMT+8北京时区。您需要更改“UTC”八次,并且需要更改REQUEST块的时区

在所有 appender name="REQUEST*" 所有的request块中添加

%date{yyyy-MM-dd'T'HH:mm:ss.SSS, GMT+8}Z [%-16X{uber-trace-id}] %m%n

不用重新启动 会自动加载

5.使用filebeat es pipeline解析日志,发送到kibana上进行查看报错

报错内容:
{"type":"mapper_parsing_exception","reason":"object mapping for [agent] tried to parse field [agent] as object, but found a concrete value"}, dropping event!

"agent" 字段的 mapping 映射错误,这表明 Elasticsearch 尝试将该字段解释为对象,但实际上却找到了一个具体的值,导致出现了映射解析异常

解决问题:

只需要在kibana中找到索引模板。将索引模板中的agent字段类型(Field type)改为Text,然后删除索引,不能删除模板。再继续给filebeat传入数据,然后创建索引再次打开Discover就可以看到已经被解析出来的message字段。

6.修改influxdb数据库名称

1.在命令行下执行数据库备份命令

-database后面是备份的数据库名称,最后是备份文件存放的地址

influxd backup -portable -database 数据库 /root/jfrog

2.然后把备份的数据导入到新的数据库中

influxd restore -portable -db 老数据库 -newdb 新数据库 /root/jfrog

7.gitlab点击项目报500错误

是在创建项目的时候多次创建,然后冲突。web页面上显示没有这个群组和项目,但是使用gitlab api查看是有这个群组的
查看命令

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups?search=<your-group-path>"

将其查看出来的群组id删除即可,删除命令

curl --header "PRIVATE-TOKEN: <your_access_token>" --request DELETE "https://your-gitlab-domain.com/api/v4/groups/ID"

8.gitlab仓库名称转换

gitlab创建仓库后,如果名称里有小数点,如4.1.2,就会在克隆的时候自动转换为4-1-2。

9.artifactory 上传文件后,创建的时区不一致

点击文件后发现Created显示的时区少八个小时

需要更改容器内/opt/jfrog/artifactory/app/bin/artifactory.default文件

DEFAULT_JAVA_OPTIONS="${DEFAULT_JAVA_OPTIONS} -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Djava.security.egd=file:/dev/./urandom -Duser.timezone=UTC+8"

最后面加上-Duser.timezone=UTC+8然后重启容器即可完成

注意:还需要进入容器内chown artifactory.artifactory artifactory.default

10.Jenkins ui与api都查不到node节点,但是创建节点的时候报错显示已经存在

报错:Agent called ‘slave’ already exists

使用Jenkins控制台,然后粘贴下面的命令,删除名为slave节点。

Jenkins.instance.slaves.find { it.name == 'slave' }.each { Jenkins.instance.removeNode(it) }

11.gerrit push代码报错

ERROR: commit e704ae2: missing Change-Id in message footer

使用其中的命令后又报错

gitdir=$(git rev-parse --git-dir); scp -p -P xxx xxx@xxx:hooks/commit-msg ${gitdir}/hooks/
subsystem request failed on channel 0
scp: Connection closed

解决办法:将提示方法中的scp -p改为scp -O,问题解决

gitdir=$(git rev-parse --git-dir); scp -O -P xxx xxx@xxx:hooks/commit-msg ${gitdir}/hooks/

之后重新进行git commit --amend --no-edit

然后继续git push即可

12.Jenkins使用publish html report插件展示HTML报告的方法

下载了html publish plugin插件后,在html report还是没有格式,点击 Mange Jenkins 页面,找到Script Console

运行命令:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

必须清除浏览器缓存重新进入Jenkins后才生效

13.重启docker容器后容器里的hosts文件配置消失

在创建容器的时候加上--network host即同步主机的hosts文件,就可以解决

14.在容器内,/etc/profile里配置的环境变量每次退出后都需要再source /etc/profile才会生效

解决办法:

编辑

vim ~/.bashrc

在最后面增加

if [ -f /etc/profile ]; then
     . /etc/profile
fi

15.No Subject Alternative Names

在对接SSO的时候,SSO使用的是自签名证书,还使用的是https+IP地址

报错内容:No Subject Alternative Names

创建 SSL 证书之前,使用openssl.cnf您的 IP 配置代理计算机中的文件:YYY.YYY.YYY.YYY

/etc/ssl/openssl.cnf

1.搜索[ req ]文件内的部分并设置以下行

req_extensions = v3_req

2.然后,搜索[ v3_req ]部分并添加以下行:

subjectAltName = @alt_names

3.在文件底部创建以下行:

[ alt_names ]
IP.1 = <YYY.YYY.YYY.YYY>

4.创建证书时,您可能需要在命令中添加以下参数以确保确实添加了备用名称

-extensions v3_req -extfile /etc/ssl/openssl.cnf

5.创建证书

openssl genrsa -out server.key 2048 -extensions v3_req -extfile /etc/ssl/openssl.cnf
openssl req -new -key server.key -out server.csr
#下面是一条命令
openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650 -extensions v3_req -extfile /etc/ssl/openssl.cnf

6.导入证书

#导入证书
/java/bin/keytool -import -alias server.crt -file /root/server.crt -keystore /java/lib/security/cacerts -storepass changeit -keyalg RSA -ext san=ip:10.0.0.10
#删除证书
/java/bin/keytool -delete -alias server.crt -keystore /java/lib/security/cacerts -storepass changeit

16.vim删除当前所在行之前的所有内容

在当前行输入以下内容并回车
:1,.-1d