执行以下脚本即可:
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