敏捷持續集成詳解

敏捷持續集成簡介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

相關文章
相關標籤/搜索