背景
公司的sonarqub安装在swarm环境,并且自建postgresql数据库,现公司所有容器服务迁移Kubernetes,包含sonarqub,soanr历史数据备份迁移阿里云RDS。
- 数据备份
pg_dump -h localhost -U sonar sonar > sonar.bak
- 新建阿里云RDS
- DTS迁移
- 创建sonar project
下载sonarqube-7.0.zip包并解压,在/sonarqube-7.0/extensions/plugins 目录中下载加入以下jar包。压缩成sonarqube.zip放入工程。
sonar-csharp-plugin-6.7.1.4347.jar
sonar-flex-plugin-2.3.jar
sonar-java-plugin-5.1.0.13090.jar
sonar-javascript-plugin-4.0.0.5862.jar
sonar-php-plugin-2.12.1.3018.jar
sonar-python-plugin-1.9.0.2010.jar
sonar-scm-git-plugin-1.3.0.869.jar
sonar-scm-svn-plugin-1.6.0.860.jar
sonar-typescript-plugin-1.5.0.2122.jar
sonar-xml-plugin-1.4.3.1027.jar
Dockerfile
FROM registry-vpc.cn-hangzhou.aliyuncs.com/r_d_arch_team/baseimage-java:8
RUN yum -y install zip unzip
ENV SONAR_VERSION=7.0 \
SONARQUBE_HOME=/opt/sonarqube \
SONARQUBE_JDBC_USERNAME=sonar \
SONARQUBE_JDBC_PASSWORD=2I88PhvI9NGjQJU2 \
SONARQUBE_JDBC_URL=jdbc:postgresql://pgm-bp16q397n3428o76.pg.rds.aliyuncs.com:3433/sonar
# Http port
EXPOSE 9000
RUN groupadd -r sonarqube && useradd -r -g sonarqube sonarqube
COPY sonarqube.zip /opt/
RUN set -x \
&& cd /opt \
&& unzip -q sonarqube.zip \
&& mv sonarqube-$SONAR_VERSION sonarqube \
&& chown -R sonarqube:sonarqube sonarqube \
&& rm sonarqube.zip* \
&& rm -rf $SONARQUBE_HOME/bin/*
VOLUME "$SONARQUBE_HOME/data"
WORKDIR $SONARQUBE_HOME
COPY run.sh $SONARQUBE_HOME/bin/
RUN set -x \
&& chown -R sonarqube:sonarqube $SONARQUBE_HOME/bin/run.sh \
&& chmod 777 $SONARQUBE_HOME/bin/run.sh
USER sonarqube
ENTRYPOINT ["./bin/run.sh"]
run.sh
#!/usr/bin/env bash
set -e
if [ "${1:0:1}" != '-' ]; then
exec "$@"
fi
# Parse Docker env vars to customize SonarQube
#
# e.g. Setting the env var sonar.jdbc.username=foo
#
# will cause SonarQube to be invoked with -Dsonar.jdbc.username=foo
declare -a sq_opts
while IFS='=' read -r envvar_key envvar_value
do
if [[ "$envvar_key" =~ sonar.* ]] || [[ "$envvar_key" =~ ldap.* ]]; then
sq_opts+=("-D${envvar_key}=${envvar_value}")
fi
done < <(env)
exec java -jar lib/sonar-application-$SONAR_VERSION.jar \
-Dsonar.log.console=true \
-Dsonar.jdbc.username="$SONARQUBE_JDBC_USERNAME" \
-Dsonar.jdbc.password="$SONARQUBE_JDBC_PASSWORD" \
-Dsonar.jdbc.url="$SONARQUBE_JDBC_URL" \
-Dsonar.web.javaAdditionalOpts="$SONARQUBE_WEB_JVM_OPTS -Djava.security.egd=file:/dev/./urandom" \
"${sq_opts[@]}" \
"$@"
- 问题
1、soanr 数据库DTS迁移过成中,迁移失败,目标数据库和源数据库lc_monetary不一样,
set lc_monetary=‘en_US.utf8’ 解决
2、sonarqub启动之后,登录页面,没有默认Rules和Quality Profiles,启动日志无报错信息。
原因是soanrqub数据库中已存在表和数据,soanr启动不会初始化下载plugins。可以将数据库中表都删除或者自己下载plugins在sonarqube-7.0/extensions/plugins中,本公司需要保留历史数据,所以此处自行下载plugins。启动后默认Rules和Quality Profiles加载成功。