一 摘要
本文主要介绍gitlabrunner 与sonar 集成,实现代码扫描
二 环境信息
2.1 软件版本信息
软件 | 版本 | 安装方式 |
---|---|---|
操作系统 | centos7.9 | |
gitlab | 14.10 | docker |
gitlabrunner | 14.10 | docker |
jdk | 1.8 | 制作镜像里 |
maven | 3.6.3 | 制作镜像里 |
sonar | 7.9.3 | docker |
sonar-scanner | 4.8.0 | 制作镜像里 |
三 集成
我这边集成是基于gitlabrunner 官方镜像,然后下载sonar 包,重新制作一个含sonar 软件包的gitlabrunner 镜像。此方法有点就是gitlab-ci.yml 里不需要安装sonar,缺点就是sonar 版本固化.
sonar 、gitlab、gitlabrunner 安装本文不在熬述!
3.1 准备工作
需自行安装好gitlab\sonar 。并下载好本文需要的软件
3.2 制作镜像
下面是存放文件目录
[root@localhost gitlabrunner]# ls -al
总用量 342960
drwxr-xr-x 5 root root 4096 8月 8 09:35 .
drwxr-xr-x 4 root root 40 6月 28 09:50 ..
drwxr-xr-x 6 root root 99 6月 15 20:01 apache-maven-3.6.3
-rw-r--r-- 1 root root 9506321 6月 14 16:53 apache-maven-3.6.3-bin.tar.gz
-rw-r--r-- 1 root root 9248920 6月 19 14:26 apache-maven-3.9.2-bin.tar.gz
-rw-r--r-- 1 root root 47706112 6月 14 17:06 docker-compose-linux-x86_64
-rw-r--r-- 1 root root 1714 8月 8 09:35 gitlabrunner.dockerfile
-rw-r--r-- 1 root root 1067 6月 25 14:58 gitlabrunner.dockerfile.bak.20230625
-rw-r--r-- 1 root root 1541 8月 7 17:07 gitlabrunner.dockerfile.bak.20230807
-rw-r--r-- 1 root root 1104 6月 16 11:32 gitlabrunner.dockerfile.bak.otheruser
-rw-r--r-- 1 root root 1104 6月 16 14:29 gitlabrunner.dockerfile.gitlabuser
-rw-r--r-- 1 root root 194151339 6月 15 17:05 jdk-8u231-linux-x64.tar.gz
-rw-r--r-- 1 root root 23131523 8月 8 09:31 node-v12.22.12-linux-x64.tar.gz
drwxr-xr-x 6 yunwei yunwei 108 7月 18 20:00 node-v18.17.0-linux-x64
-rw-r--r-- 1 root root 23839664 8月 7 15:46 node-v18.17.0-linux-x64.tar.xz
drwxr-xr-x 6 root root 51 12月 22 2022 sonar-scanner-4.8.0.2856-linux
-rw-r--r-- 1 root root 43565694 6月 25 14:58 sonar-scanner-cli-4.8.0.2856-linux.zip
[root@localhost gitlabrunner]# pwd
/root/dockerfile/gitlabrunner
[root@localhost gitlabrunner]#
3.2.1 制作镜像脚本
制作镜像
gitlabrunner_chinese:v14.10.1 是基于官网版本加了中文包
制作支持中文和zip 命令的gitlabrunner 镜像
FROM gitlab/gitlab-runner:v14.10.1
MAINTAINER weibi2
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y zip
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
dpkg-reconfigure --frontend=noninteractive locales && \
update-locale LANG=en_US.UTF-8
ENV LANG en_US.UTF-8
VOLUME ["/etc/gitlab-runner", "/home/gitlab-runner"]
ENTRYPOINT ["/usr/bin/dumb-init", "/entrypoint"]
CMD ["run", "--user=gitlab-runner", "--working-directory=/home/gitlab-runner"]
以下是集成了jdk\maven\node\sonar 的镜像脚本,大家可以把node 相关的内容删除
FROM xxx.com/gitlab/gitlabrunner_chinese:v14.10.1
MAINTAINER xxx
RUN mkdir /usr/local/jdk
ADD jdk-8u231-linux-x64.tar.gz /usr/local/jdk/
RUN mkdir /usr/local/buildtools
ADD apache-maven-3.6.3-bin.tar.gz /usr/local/buildtools/
ADD node-v12.22.12-linux-x64.tar.gz /usr/local/buildtools/
RUN mkdir /usr/local/buildtools/sonar-scanner-4.8.0.2856-linux
COPY sonar-scanner-4.8.0.2856-linux /usr/local/buildtools/sonar-scanner-4.8.0.2856-linux/
COPY docker-compose-linux-x86_64 /usr/local/bin/docker-compose
RUN chmod +x /usr/local/bin/docker-compose
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_231
ENV MAVEN_HOME /usr/local/buildtools/apache-maven-3.6.3
ENV SONAR_HOME /usr/local/buildtools/sonar-scanner-4.8.0.2856-linux
ENV NODE_HOME /usr/local/buildtools/node-v12.22.12-linux-x64
ENV PATH /usr/local/buildtools/node-v12.22.12-linux-x64/bin:/usr/local/buildtools/sonar-scanner-4.8.0.2856-linux/bin:/usr/local/buildtools/apache-maven-3.6.3/bin:/usr/local/jdk/jdk1.8.0_231/bin:/opt/gitlab/embedded/bin:/opt/gitlab/bin:/assets:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN echo export JAVA_HOME=/usr/local/jdk/jdk1.8.0_231 >> /etc/profile
RUN echo export PATH=$PATH:$JAVA_HOME/bin >> /etc/profile
RUN echo export MAVEN_HOME=/usr/local/buildtools/apache-maven-3.6.3 >> /etc/profile
RUN echo export PATH=$PATH:$MAVEN_HOME/bin >> /etc/profile
RUN echo export SONAR_HOME=/usr/local/buildtools/sonar-scanner-4.8.0.2856-linux >> /etc/profile
RUN echo export PATH=$PATH:$SONAR_HOME/bin >> /etc/profile
VOLUME ["/etc/gitlab-runner", "/home/gitlab-runner"]
ENTRYPOINT ["/usr/bin/dumb-init", "/entrypoint"]
CMD ["run", "--user=gitlab-runner", "--working-directory=/home/gitlab-runner"]
3.2.2 制作镜像命令
3.3 集成node
node 集成后需要配置代理