执行以下脚本即可:
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路径即可,如下图所示:
运行引入了pi4j的springboot项目无法运行,出现上图的错误。从报错信息看到,缺少了libwiringPi.so文件。
查阅资料,树莓派需要操作gpio则需要安装wiringPi,为了确认这个事情,我们输入gpio指令看看是否可以执行成功:
gpio
结果提示如下:
在树莓派上使用以下指令克隆github上最新的库:
git clone https://github.com/WiringPi/WiringPi.git
然后进入WiringPi的目录后使用“./build”指令进行编译安装:
然后使用“gpio -v”命令查看安装是否正确:
如上图显示,则代表安装正确,此时可以使用“gpio readall”命令来查看所有gpio的状态了:
如果哪天不需要使用wiringpi了,使用以下指令即可卸载:
./build uninstall
到官方的github中找到对应的release:
https://github.com/WiringPi/WiringPi/releases
下载对应版本的deb文件到树莓派的系统上,然后使用以下指令进行安装:
#32位系统: dpkg -i /wiringpi-2.61-1-armhf.deb #64位系统: dpkg -i /wiringpi-2.61-1-arm64.deb
省略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”参数,如下图所示: