敏捷持續集成(Jenkins)

在前面已經完成git和gitlab的相關操做java

1.持續集成的概念:

1. 什麼是持續集成:
    持續集成是一種軟件開發實踐,即團隊開發成員常常集成他們的工做,經過每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。每次集成都經過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘早地發現集成錯誤。
2. 好處:
    節省人力成本
    加快軟件開發進度
    實時交付
3. 總體流程
    成員經過git提交代碼--》持續集成引擎來去代碼並使用構建工具自動構建--》發佈項目
4. 重要組成部分:
    git : 版本管理
    gitlab : 遠程倉庫
    jenkins 持續集成引擎
    maven 構建工具
    sonarqube 代碼質量管理
    junit 自動執行單元測試
    JDK
    Tomcat

    幾個war--》微服務架構

2.jdk與maven的安裝

1. 版本說明:
    * jdk1.8(目前大部分公司內部使用的仍是JDK8,大部分依賴java的工具或框架,對JDK8的支持度是最好的)
    * maven3.5.3
2. 將下載好的jdk跟maven上傳到服務器上(jdk的安裝能夠參考linux命令)
3. jdk的安裝
    解壓jdk到/usr/local/
        tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
    配置環境變量
         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/
      配置: vim /etc/profile
        MAVEN_HOME=/usr/local/apache-maven-3.5.3
        export MAVEN_HOME
        PATH=$PATH:$MAVEN_HOME/bin
        export PATH
        按esc進入命令行模式,再按:wq保存退出
         激活配置
            source /etc/profile

3.nexus私服搭建

1. 上傳到服務器
2. 解壓:tar -zxvf nexus-3.12.1-01-unix.tar.gz -C /usr/local/
3. 修改配置文件(文件在安裝目錄的etc下):
    vim /usr/local/nexus-3.12.1-01/etc/nexus-default.properties
    修改對應的端口:默認是8081,沒有使用的就能夠不用修改
    修改防火牆
        vim  /etc/sysconfig/iptables
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -ACCEPT
    重啓防火牆:
        service iptables restart
4. 進入bin目錄進行啓動:
    ./nexus start (若是是root用戶啓動會有提示不建議使用root用戶)
5. 關閉nexus服務:
    ps aux | grep nexus
    kill 進程號
6. 新建用戶:
    useradd nexus
    chown -R nexus:nexus /usr/local/nexus-3.12.1-01 (本身的目錄,解壓出來有兩個文件夾,兩個文件夾的權限都要給該用戶)
    su nexus(若是出現bash-4.2$,就使用su root切換回root用戶,使用cp -a /etc/skel/. /home/nexus以後再切換用戶)
    使用cd命令進入nexus的bin目錄,使用./nexus start執行就好。
7. 經過 ps aux | grep nexus 能夠查看nexus是否真正啓動, 若是沒有,可使用 ./nexus run來查看沒有啓動的問題(錯誤信息)
8. 訪問: 在本地使用 ip:8081 進行訪問,若是能夠正常訪問,就安裝成功(默認的帳戶是admin,密碼是admin123),進行登陸.
9. 使用root帳戶進入到bin目錄下,修改上傳的文件大小,使用 ulimit -a能夠看到open file是1024,將他增長到65536,使用 vi /etc/security/limits.conf,在倒數第二行添加兩行:
    * soft nofile 65536    
    * hard nofile 65536
10. 修改nexus自啓動: vi /etc/rc.d/rc.local,添加一行:
    su - nexus -c  '/usr/local/software/nexus/nexus-3.12.1-01/bin/nexus start'
11. 切換回nexus帳戶: su nexus,使用./nexus restart 從新啓動

4. 私服的使用

1. 倉庫的類型:
    * proxy: 代理倉庫,主要代理遠程的倉庫,私服和遠程倉庫之間的鏈接
    * group: 倉庫組,一般包含了多個代理倉庫和宿主倉庫,在項目中只要引入倉庫組就能夠下載到代理倉庫和宿主倉庫中的包
    * hosted:宿主倉庫,內部項目、付費jar
        1. releases  發佈內部release版本的倉庫
        2. snapshots 發佈內部snapshots版本的倉庫
        3. third 自建第三方jar
2. 新建
    * 點擊設置,就是小齒輪那個標籤
    * 點擊左側導航的Repositories
    * 點擊create repository
    * 選擇 maven hosted,輸入字段(maven-third),點擊create完成
3. 配置本地的maven(家目錄下的.m2,沒找到,就去maven_home下的setting),修改maven的setting文件
    * 在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>
    * 在<profiles>中配置私有庫和插件庫的地址(地址指向私服的group地址):
        <profile>
          <id>xdclass</id>
          <activation>
            <activeByDefault>false</activeByDefault>
          </activation>
          <!-- 私有庫地址-->
          <repositories>
            <repository>
              <id>xdclass</id>
              <url>http://192.168.88.128: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.88.128:8081/repository/maven-public/</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
              </snapshots>
            </pluginRepository>
          </pluginRepositories>
        </profile>
    * 新加標籤在setting結束標籤以前加上下面代理,用來激活配置
        <activeProfiles>
            <activeProfile>xdclass</activeProfile>
         </activeProfiles>
    * 修改私服上的代理地址,將代理地址改成阿里雲的:
        http://maven.aliyun.com/nexus/content/groups/public
4. 上傳本地項目到私服,在maven項目的pom.xml中進行配置:
     <!--pom.xml 遠程倉庫的配置  id要跟本地maven的setting.xml相同 -->
    <distributionManagement>
        <repository>
            <id>xdclass-releases</id>
            <name>Wangzhi Release Repository</name>
            <url>http://192.168.88.128:8081/repository/maven-releases/</url>
        </repository>

        <snapshotRepository>
            <id>xdclass-snapshots</id>
            <name>Wangzhi Snapshot Repository</name>
            <url>http://192.168.88.128:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
5. 點擊deploy就能夠發佈了
6. 上傳第三方jar包到私服:
    * 選擇私服的upload,選擇上傳到哪一個?通常選擇本身新建的.
    * 選項的填寫:
        1. file : 選擇本地的第三方jar
        2. extension: 是什麼jar包,也就是後綴名
        3. group id : com.xdclass
        4. artifact id : wiggin
        5. version: 1.0
        6. 選中generate a pom那一行,點擊upload就能夠了
        7. 本地項目的引用按照上面填寫的引用就能夠

5. 安裝Mysql(能夠參考linux經常使用命令中的安裝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.使用鏈接工具測試遠程鏈接

6. 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=改爲步驟3建立的庫名
    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   (可能會啓動失敗,能夠查看 logs下的日誌文件來查看失敗緣由)
7.界面訪問
    http://192.168.56.101:9000/sonar
    開啓防火牆
        firewall-cmd --zone=public --add-port=9000/tcp --permanent
        firewall-cmd --reload
8. 進行登陸:
    默認的帳戶名和密碼都是admin,登陸成功以後須要生成token(8e8d2ede68954ddf387e50efb24a140f0e3ff7d4)
    
    在界面產生令牌,並將項目代碼使用如下命令進行提交由sonarqube進行分析,完成後,查看相應的分析結果
    mvn sonar:sonar \
      -Dsonar.host.url=http://192.168.88.128:9000/sonar \
      -Dsonar.login=8e8d2ede68954ddf387e50efb24a140f0e3ff7d4
      
    在項目的根目錄,使用git bash命令,將上面3行放入git bash命令行中運行,就能夠build success

Jenkins的安裝及常見問題定位

安裝tomcat
    1. 安裝tomcat(建立用戶操做tomcat)
        useradd tomcat    新建用戶
        passwd tomcat     修改密碼(密碼不能過於簡單)--Mypwd123456$
    2. 使用root命令進行解壓tomcat
    3. 將解壓的目錄的權限給tomcat用戶:
        chown -R tomcat:tomcat apache-tomcat-9.0.12

安裝Jenkins(基於Java開發的一種持續集成工具,用於監控持續重複的工做,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。)
    1. 下載 https://jenkins.io/download/
        下載長期支持的war包(通用)
    2. 將下載的war包上傳到安裝的tomcat的webapps目錄下 
    3. 將jenkins的war包操做權限給tomcat用戶
        chown tomcat:tomcat  jenkins.war
    4. 啓動tomcat
        進入bin目錄,   ./startup.sh
    5. 配置防火牆
        firewall-cmd --zone=public --add-port=8080/tcp --permanent
        firewall-cmd --reload
    6. 不能訪問查看日誌: 進入logs目錄, more catalina.out能夠看到端口已經被使用,關閉tomcat,使用netstat -tlun能夠看到8080端口還在被使用,使用netstat -tlunp | grep 8080.能夠看到哪一個程序佔用了80端口,發現是與gitlab相關,因此修改tomcat的端口號.
    7. 修改端口號:
        進入tomcat的conf目錄,修改server.xml,找到8080端口,將端口修改成9999,從新進入bin目錄進行啓動,可使用netstat -tlun查看到9999端口已經啓動
    8. 防火牆
        firewall-cmd --zone=public --add-port=9999/tcp --permanent
        firewall-cmd --reload
    9. 就能夠在本機訪問了:
        訪問 http://192.168.88.128:9999/jenkins 就能夠進行安裝jenkins了,會提示到某一個目錄下去查找密碼,使用 more + 目錄就能夠進行查看了,複製內容,進行操做就好
    10. 安裝(若是出現離線問題)
        離線解決:
           訪問 http://192.168.56.101:9999/jenkins/pluginManager/advanced 目錄,拉到最底下,將https--》改爲http,以後提交,重啓tomcat, 再次訪問就能夠進行安裝了,默認安裝就好.
    11. 建立管理員用戶:
        用戶名: wangzhi
        密碼 : nrblwbb7
        全名 : wangzhi
        電子郵件: 2585700076@qq.com
        點擊保存並完成就好
    12. 發現一片空白,重啓tomcat.而後再次訪問,就能夠了
相關文章
相關標籤/搜索