执行以下脚本即可:
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
然后设置开机启动:
sudo systemctl enable docker
启动服务:
sudo systemctl start docker
执行以下脚本即可:
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
然后设置开机启动:
sudo systemctl enable docker
启动服务:
sudo systemctl start docker
实现接口CommandLineRunner,并且重写run()方法,便可以在springboot启动时同时运行一段方法,
import javafx.application.Application;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(TestApplication .class, args);
}
@Override
public void run(String... args) throws Exception {
Application.launch(MainApp.class, args);
}
}
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class MainApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
AnchorPane anchorPane=new AnchorPane();
Scene scene=new Scene(anchorPane, 200, 150);
primaryStage.setScene(scene);
primaryStage.show();
}
}

cd /etc/init.d/ touch autojar.sh vi autojar.sh
autojar.sh的内容如下:
#!/bin/sh
### BEGIN INIT INFO
# Provides: raspi.suidian.net.cn
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: autostartup of springboot for RaspberryPi
### END INIT INFO
#程序名
RUN_NAME="SpringBoot.jar"
#jar包位置
JAVA_OPTS=/home/pi/Desktop/raspi-0.0.1-SNAPSHOT.jar
#后台运行日志位置
LOG_OPTS=/home/pi/Desktop/raspi-nohup.out
#开始方法
start() {
nohup java -jar $JAVA_OPTS >$LOG_OPTS 2>&1 &
echo "$RUN_NAME started success."
}
#结束方法
stop() {
echo "stopping $RUN_NAME ..."
kill -9 `ps -ef|grep $JAVA_OPTS|grep -v grep|grep -v stop|awk '{print $2}'`
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Userage: $0 {start|stop|restart}"
exit 1
esac
chmod a+x /etc/init.d/autojar.sh chmod a+x /home/pi/Desktop/SpringBoot.jar
update-rc.d autojar.sh defaults 90
如果启动日志中出现下图所示情况:

可能由于执行脚本时写在/etc/profile中的环境变量还没有生效。此时在脚本中指定vava执行器的完整bin路径即可,如下图所示:

省略1万字,请看我前几篇文章
到以下网址下载sonar-scanner:(一般下载最新版即可)
下载sonar-scanner
https://docs.sonarqube.org/latest/analyzing-source-code/scanners/sonarscanner/

下载完毕后进行解压
编辑/etc/profile文件,补充以下两个配置:
#sonar-scanner的环境变量 export SONAR_SCANNER=/home/sonar-scanner-4.7.0.2747-linux #PATH环境变量 export PATH=$PATH:$SONAR_SCANNER/bin
使用管理员账号如下图所示进行操作即可获得令牌:

该令牌用于扫描器进行鉴权。
以下参数根据实际情况进行调整:
sonar-scanner
-Dsonar.projectKey=$CI_PROJECT_NAME
-Dsonar.host.url=https://******
-Dsonar.login=******
-Dsonar.sources=./src/
-Dsonar.sourceEncoding=UTF-8
-Dsonar.gitlab.commit_sha=$CI_BUILD_REF
-Dsonar.gitlab.ref_name=$CI_BUILD_REF_NAME
-Dsonar.gitlab.project_id=$CI_PROJECT_PATH
-Dsonar.gitlab.max_blocker_issues_gate=-1
-Dsonar.gitlab.max_critical_issues_gate=-1
-Dsonar.gitlab.query_max_retry=50
-Dsonar.gitlab.query_wait=100
执行后可在sonar后台中查看扫描结果:

通过此集成,您将能够:
使用 GitLab 进行身份验证- 使用您的 GitLab 凭据登录 SonarQube。
导入您的 GitLab 项目- 将您的 GitLab 项目导入 SonarQube 以轻松设置 SonarQube 项目。
使用 GitLab CI/CD 分析项目- 将分析集成到您的构建管道中。从Developer Edition开始,在 GitLab CI/CD 作业中运行的 SonarScanners 可以自动检测正在构建的分支或合并请求,因此您无需专门将它们作为参数传递给扫描仪。
将您的 Quality Gate 状态报告给您的合并请求-(社区版没有该功能)直接在 GitLab 中查看您的 Quality Gate 和代码指标结果,以便您知道合并更改是否安全。
sonarqube 支持多种认证登录方式,如果使用自带的账号体系,需要管理员一个个添加账号,使用起来多有不便。不过一般公司都部署了私有化的 Gitlab,我们可以利用私有的 gitlab 账号来登录 Sonarqube。
注意勾选项!另外涂抹掉的是您sonar的地址,/oauth2/callback/gitlab 是固定的。

保存后可以拿到应用id、密码,如下图所示:

https://www.sonarplugins.com/authgitlab
进入以上网址下载插件并放到sonar安装目录的/extensions/plugins下,然后重启。

在“通用”里面找到如下图所示的设置:

注销账号后,再次进入登录界面便可以看到效果,如下图所示:

使用gitlab账号登录后,对应gitlab账号在sonar中便会有该用户数据,此时用admin设置新的管理员后,就可以用赋予了sonar管理员权限的gitlab账号登录并把默认的admin账号注销了。
首先拉取SonarQube7.8镜像
sonar会自动创建数据库所需要的表,但是不会自动创建数据库,因此请提前创建名为sonar的数据库
然后使用以下指令启动mysql(注意修改mysql的链接参数):
docker run -d --restart=always --name sonar -p 9000:9000 -e SONARQUBE_JDBC_USERNAME=username -e SONARQUBE_JDBC_PASSWORD=password -e SONARQUBE_DATABASE_NAME=sonar -e SONARQUBE_JDBC_URL="jdbc:mysql://***.***.***.***:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" sonarqube:7.8-community
sonar的默认端口是9000,默认账号和密码是admin。
在gitlab跑cicd的时候使用docker stop命令时若容器不存在则会报错,因此docker服务器上如果不曾有对应的容器,则需要使用docker rm -f的命令代替。
docker rm [OPTIONS] CONTAINER [CONTAINER...]
| option | 作用 |
| -f | 通过 SIGKILL 信号删除一个正在运行的容器 |
| -l | 移除容器间的网络,而非容器本身 |
| -v | 删除与容器映射的目录 |
强制删除容器
docker rm -f CONTAINER
删除所有已停止的容器
docker rm $(docker ps -a -q)
删除所有容器
docker rm -f $(docker ps -aq) #删除所有的容器 docker ps -a -q|xargs docker rm #删除所有的容器
在cicd配置文件中加入“allow_failure: true”参数,如下图所示:

找到配置文件,可能是以下位置:
/www/server/mongodb/config.conf
## content
systemLog:
destination: file
logAppend: true
path: /www/server/mongodb/log/config.log
# Where and how to store data.
storage:
dbPath: /www/server/mongodb/data
directoryPerDB: true
journal:
enabled: true
# how the process runs
processManagement:
fork: true
pidFilePath: /www/server/mongodb/log/configsvr.pid
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1
bindIp: 127.0.0.1 172.17.0.4
# bindIpAll: true
#operationProfiling:
#replication:
# replSetName: bt_main
security:
authorization: disabled
javascriptEnabled: false
#sharding:
# clusterRole: shardsvr
修改原来的bindIp,改为以” “分隔的多个IP(注意:mongodb 4.x以前是用”,”分隔)
另外,配置bindIpAll: true的话则代表所有ip均能访问(bindIp: 0.0.0.0也能达到同样效果),重启mongodb服务后生效。
执行以下指令:
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list
apt-get update
apt-get install vim
apt-get install iputils-ping
apt-get install net-tools