敏捷持續集成簡介html
什麼是持續集成?
持續集成是一種軟件開發實踐,即團隊開發成員常常集成他們的工做,經過每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。每次集成都經過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘早地發現集成錯誤。
好處
節省人力成本
加快軟件開發進度
實時交付
總體流程
成員經過git提交代碼--》持續集成引擎來去代碼並使用構建工具自動構建--》發佈項目
重要組成部分
git
gitlab
jenkins 持續集成引擎
maven 構建工具
sonarqube 代碼質量管理
junit 自動執行單元測試
JDK
Tomcatjava
幾個war--》微服務架構mysql
jdk及maven的安裝linux
版本說明
jdk1.8(目前大部分公司內部使用的仍是JDK8,大部分依賴java的工具或框架,對JDK8的支持度是最好的)
maven3.5.3
安裝步驟
1.將下載好的jdk跟maven上傳到服務器上
2.解壓jdk到/usr/local/
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
3.配置環境變量
vim /etc/profile
在最下面,按i進入insert模式,添加一下內容
JAVA_HOME=/usr/local/jdk1.8.0_91
export JAVA_HOME
CLASSPATH=.:$JAVA_HOME/lib
export CLASSPATH
PATH=$PATH:$JAVA_HOME/bin:$CLASSPATH
export PATH
按esc進入命令行模式,再按:wq保存退出
激活配置
source /etc/profile
5.解壓maven
tar -zxvf apache-maven-3.5.3-bin.tar.gz -C /usr/local/
6.配置maven環境變量
vim /etc/profile
在最下面,按i進入insert模式,添加一下內容
MAVEN_HOME=/usr/local/apache-maven-3.5.3
export MAVEN_HOME
PATH=$PATH:$MAVEN_HOME/bin
export PATH
按esc進入命令行模式,再按:wq保存退出
激活配置
source /etc/profilec++
nexus安裝git
1.下載nexus
https://www.sonatype.com/download-oss-sonatype
2.上傳到服務器/root/
3.解壓
tar -zxvf nexus-3.12.1-01-unix.tar.gz -C /usr/local/
4.修改配置文件
vim /usr/local/nexus-3.12.1-01/etc/nexus-default.properties
修改對應的端口
修改防火牆
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPTgithub
5.瀏覽器打開並登錄
http://192.168.56.102:8081/
帳號admin
密碼 admin123
System Requirement: max file descriptors [4096] likely too low, increase to at least [65536].
6.修改ulimit
vim /etc/security/limits.conf
新增
* soft nofile 65535
* hard nofile 65535
7.配置開機自啓動
su - nexus -c '/usr/local/nexus-3.12.1-01/bin/nexus start'web
nexus的使用spring
1.倉庫類型
proxy:代理倉庫,用於代理遠程倉庫
group:倉庫組,一般包含了多個代理倉庫和宿主倉庫,在項目中只要引入倉庫組就能夠下載到代理倉庫和宿主倉庫中的包
hosted:宿主倉庫,內部項目、付費jar
releases 發佈內部release版本的倉庫
snapshots 發佈內部snapshots版本的倉庫
third 自建第三方jar
2.配置代理
選擇阿里雲http://maven.aliyun.com/nexus/content/groups/public/sql
3.本地maven配置 修改maven目錄下的conf/setting.xml <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <pluginGroups/> <proxies/> <servers> <server> <id>xdclass-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>xdclass-snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers> <mirrors/> <profiles> <profile> <id>xdclass</id> <activation> <activeByDefault>false</activeByDefault> </activation> <!-- 私有庫地址--> <repositories> <repository> <id>xdclass</id> <url>http://192.168.56.101:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <!--插件庫地址--> <pluginRepositories> <pluginRepository> <id>xdclass</id> <url>http://192.168.56.101:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>xdclass</activeProfile> </activeProfiles> </settings> 10.修改編輯器中maven的配置,將配置指向setting.xml 11.修改pom <!--pom.xml 遠程倉庫的配置 id要跟本地maven的setting.xml相同 --> <distributionManagement> <repository> <id>xdclass-releases</id> <name>Ruizhi Release Repository</name> <url>http://192.168.56.101:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>xdclass-snapshots</id> <name>Ruizhi Snapshot Repository</name> <url>http://192.168.56.101:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement> 12.測試是否nexus搭建成功 pom添加本地沒有的依賴,看nexus會不會代理 mvn deploy 看是否成功推送至nexus
編譯安裝mysql
linux下安裝mysql的方式
yum 安裝簡單
自行編譯安裝 自由
mysql下載
http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17.tar.gz
編譯安裝mysql
1.解壓
tar -zxvf mysql-5.7.17.tar.gz
2.安裝相應的依賴
yum install make cmake gcc gcc-c++ bison bison-devel ncurses ncurses-devel autoconf automake wget
3.下載boost
mkdir /usr/local/boost
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz --no-check-certificate
4.添加用戶並建立相應目錄存放數據
useradd mysql
cd /home/mysql/
mkdir data logs temp
chown -R mysql:mysql data logs temp
4.執行cmake
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/home/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=/usr/local/boost
5.編譯安裝
make 進行編譯
make install 安裝
6.修改mysql安裝目錄權限
chown -R mysql:mysql /usr/local/mysql
7.初始化mysql
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data
產生密碼 eqK:iH;+S6dC
8.刪除/etc下的my.cnf
rm /etc/my.cnf
9.複製服務啓動腳本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
10.啓動 MySQL 服務:
service mysql start
11.設置mysql服務開機自啓動
chkconfig mysql on
12.登錄mysql並設置可遠程登錄
mysql -u root -p 回車
粘貼初始化時產生的臨時密碼 eqK:iH;+S6dC
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xdclass' WITH GRANT OPTION;此時不讓改,提示要先設置下密碼
SET PASSWORD = PASSWORD('xdclass');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
exit;
從新登錄,使用剛剛設置的密碼
mysql -u root -p
登錄完成以後,便可設置容許遠程登錄
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xdclass' WITH GRANT OPTION;
13.開啓防火牆端口
vim /etc/sysconfig/iptables
加入
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
14.使用鏈接工具測試遠程鏈接
代碼質量管理平臺--sonarqube安裝
前置依賴 mysql 5.6 or 5.7 jdk 1.8 1.下載 https://www.sonarqube.org/ 2.安裝unzip並解壓sonarqube並移動到/usr/local yum install unzip unzip sonarqube-6.7.4.zip mv sonarqube-6.7.4 /usr/local/ 3.mysql裏新增數據庫 CREATE DATABASE sonar DEFAULT CHARACTER SET utf8; 4.修改sonarqube相應的配置 vim /usr/local/sonarqube-6.7.4/conf/sonar.properties sonar.jdbc.username=root sonar.jdbc.password=wiggin sonar.jdbc.url=改爲步驟4建立的庫名 sonar.web.context=/sonar sonar.web.host=0.0.0.0 5.新增用戶,並將目錄所屬權賦予該用戶 useradd sonar chown -R sonar:sonar sonarqube-6.7.4/ 6.啓動 su soanr /usr/local/sonarqube-6.7.4/bin/linux-x86-64/sonar.sh start 7.界面訪問 http://192.168.56.101:9000/sonar 開啓防火牆 vim /etc/sysconfig/iptables 新增9000端口 在界面產生令牌,並將項目代碼使用如下命令進行提交由sonarqube進行分析,完成後,查看相應的分析結果 mvn sonar:sonar \ -Dsonar.host.url=http://192.168.56.101:9000/sonar \ -Dsonar.login=830edadfcb2c6326b1c6e2110f43c9f74d008450
Jenkins安裝及常見問題分析定位
1.前置條件 JDK、tomcat 2.安裝tomcat 下載地址: https://tomcat.apache.org/download-90.cgi useradd tomcat --新增一個名爲tomcat的用戶 passwd tomcat --給tomcat用戶設置密碼 tar -zxvf apache-tomcat-9.0.8.tar.gz -C /usr/local/ --將tomcat解壓到相應目錄 chown -R tomcat:tomcat /usr/local/apache-tomcat-9.0.8 --將整個目錄的所屬權轉移給tomcat用戶、tomcat組 3.安裝Jenkins 下載地址: https://jenkins.io/download/ 將Jenkins上傳到tomcat的webapp目錄 chown tomcat:tomcat Jenkins.war 修改Jenkinswar包爲tomcat用戶全部 啓動tomcat --經過瀏覽器沒法訪問tomcat 1.看tomcat是否存活 ps aux | grep tomcat 2.看端口 netstat -tlun 看到8080端口已經使用了 3.檢查防火牆 vim /etc/sysconfig/iptables 加入8080 4.查看tomcat日誌 --》出現異常,地址已經被使用 5.關閉tomcat --》 查看端口(步驟2)--》發現8080依舊存在 6.判定8080被其餘程序佔用 --》netstat -tlunp | grep 8080 -->看到被gitlab相關的程序使用了 7.修改tomcat端口 vim conf/server.xml ,找到8080 --》將8080改爲不被佔用的9999端口 8.防火牆開啓9999端口 9.能夠正常訪問tomcat 瀏覽器打開http://192.168.56.101:9999/jenkins more /home/tomcat/.jenkins/secrets/initialAdminPassword 將裏面的內容複製粘貼 此時發現提示Jenkins離線 訪問 http://192.168.56.101:9999/jenkins/pluginManager/advanced 拉到最底下,將https--》改爲http,以後提交 重啓tomcat 瀏覽器打開http://192.168.56.101:9999/jenkins more /home/tomcat/.jenkins/secrets/initialAdminPassword 選擇默認安裝
Jenkins插件安裝及配置
插件安裝:
系統管理--》插件管理
1.安裝Maven Integration plugin
2.安裝SonarQube Scanner for Jenkins
3.Publish Over SSH --發佈到遠程服務器
系統配置:
系統管理--》全局工具配置
1.配置jdk
2.配置maven
3.配置sonar
4.郵件配置
系統管理--》系統設置--》郵件通知--》
smtp服務器 smtp.qq.com
用戶默認郵件後綴 @qq.com
勾選ssl
Reply-To Address發件者郵箱
以後測試一下配置,無誤便可
5.配置gitlab受權
Credentials--》system--》Global credentials
6.配置免密登錄
yum -y install openssh-clients
ssh-keygen -t rsa -- 產生私鑰
配置git登錄
將Jenkins所在機子的公鑰 more ~/.ssh/id_rsa.pub 的內容拷貝到gitlab項目上
Jenkins儀表盤簡介
1.用戶 --顯示Jenkins裏的用戶
2.構建歷史 --以時間軸的形式,顯示項目的構建歷史
3.系統管理 --跟Jenkins相關的配置都在裏面
3.1 系統設置
全局設置相關的都在裏面(maven、郵件、ssh服務器等都在裏面配置)
3.2 全局安全配置
用戶權限、是否容許用戶登陸等配置
3.3 configure credentials
配置證書相關的
3.4 全局工具配置
JDK Git Maven 等都在裏面配置
3.5 讀取配置
放棄當前配置,而讀取配置文件
3.6 管理插件
全部的插件都是在此處管理的,安裝,升級
3.7 系統信息
系統相關的信息
3.8 系統日誌
系統日誌,幫助定位問題
3.9 負載統計
3.10 Jenkins cli
3.11 腳本命令行
3.12 管理節點
3.13 關於Jenkins
3.14 manage old data
3.15 管理用戶
Jenkins用戶的管理
4.個人視圖 --咱們配置的要構建的項目
5.Credentials --證書相關,受權相關
實戰
nohup 的用途就是讓提交的命令忽略 hangup 信號,那什麼叫作hangup信號?這裏給出了答案 0:標準輸入 1:標準輸出,2:標準錯誤 --本地手動構建 1.新建job並配置 General --可不配 源碼管理 --按項目所使用的源碼管理選擇,課程使用git 填寫項目地址,Credentials選擇配置好的認證 選擇分支 能夠是項目中的任意分支 構建觸發器 觸發遠程構建 (例如,使用腳本) 其餘工程構建後觸發 -- 在Jenkins中其餘項目構建以後,觸發本項目構建,通常用於項目間有依賴關係,一方修改,另外一方需實時感知 定時構建 --定時進行構建,不管是否有變動 (相似cron表達式) GitHub hook trigger for GITScm polling --github的hook觸發構建,通常不使用 輪詢 SCM --設置定時檢查源碼變動,有更新就構建(相似cron表達式) 定時表達式含義 * * * * * --五個字段 分 時 天 月 周 構建環境 Delete workspace before build starts:在構建以前清空工做空間 Abort the build if it's stuck:若是構建出現問題則終止構建 Add timestamps to the Console Output:給控制檯輸出增長時間戳 Use secret text(s) or file(s):使用加密文件或者文本 執行shell #!/bin/bash mv target/*.jar /root/demo/ cd /root/demo BUILD_ID= java -jar springboot-demo.jar >log 2>&1 & --本地gitlab觸發構建 2.配置gitlab webhook 系統管理員登錄 http://192.168.56.101:8888/admin/application_settings settings Outbound requests 勾選Allow requests to the local network from hooks and services 5.sonarqube整合 #required metadata #projectKey項目的惟一標識,不能重複 sonar.projectKey=xdclass sonar.projectName=xdclass sonar.projectVersion=1.0 sonar.sourceEncoding=UTF-8 sonar.modules=java-module # Java module java-module.sonar.projectName=test java-module.sonar.language=java # .表示projectBaseDir指定的目錄 java-module.sonar.sources=src java-module.sonar.projectBaseDir=. java-module.sonar.java.binaries=target/
更多學習資料可查看
https://xdclass.net/html/sort.html
如需針對此內容進行深刻了解可查看
Jenkins持續集成視頻教程Git