欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jenkins自動構(gòu)建SpringCloud流程

 更新時間:2025年02月08日 11:38:12   作者:微笑聽雨。  
文章介紹了如何使用Jenkins和docker-compose自動部署SpringCloud和Vue項目,首先,下載并安裝Jenkins,并配置Jenkins以自動啟動,然后,配置GitLab插件和NodeJS插件,以便可以從GitLab倉庫中獲取代碼并構(gòu)建,接下來,創(chuàng)建一個Jenkins任務(wù)來構(gòu)建Vue項目

jenkins依賴docker-compose自動部署SpringCloud和vue項目

本機環(huán)境

CentOS: 	CentOS Linux release 7.9.2009 (Core)
jdk: 		Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
NodeJs:		v14.15.4
npm: 		6.14.10
maven: 		3.6.3
git:		2.30.1

jenkins配置

Jenkins是一個開源軟件項目,是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個開放易用的軟件平臺,使軟件項目可以進行持續(xù)集成。

下載war包

下載地址:https://jenkins.io/download/,如圖所示:

這個war包在Windows和Linux是通用的,可以直接通過 wget 命令下載,或下載后再傳到Linux上。

這里不建議使用docker部署,因為本人之前是在docker部署的,jenkins會以容器形式啟動,linux本機的jdk,nodejs,maven等都需掛載,jar包啟動方式也會收到很大影響、如果依賴docker-compose啟動,很難進行多個docker-compose組合使用。

war包部署

war包上傳到指令目錄之后(/home/jenkins/war/),首先保證系統(tǒng)中已經(jīng)安裝了jdk,最好是jdk1.5以上。

這里先不闡述,之后在同級目錄新建腳本jenkins.sh,內(nèi)容如下:

#! /bin/bash
JAVA_OPTIONS="-server -Xmx2048m -Xms1024m"
Jenkins=$2
this_dir="$( cd "$( dirname "$0"  )" && pwd )"
log_file="${this_dir}/catalina.out"
jar_file="${this_dir}/${Jenkins}"

if [ "$1" = "" ];
then
    echo -e "\033[0;31m 未輸入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
    exit 1
fi

if [ "$Jenkins" = "" ];
then
    echo -e "\033[0;31m 未輸入應(yīng)用名 \033[0m"
    exit 1
fi

function start()
{
    count=`ps -ef |grep java|grep $Jenkins|grep -v grep|wc -l`
    if [ $count != 0 ];then
        echo "$Jenkins is running..."
    else
        nohup java $JAVA_OPTIONS -jar  ${jar_file}  --httpPort=8088 > "${log_file}" 2>&1 &
		echo -e "Start $Jenkins success...Please see the detail log in /logs/catalina.out"
    fi
}

function stop()
{
    echo "Stop $Jenkins"
    boot_id=`ps -ef |grep java|grep $Jenkins|grep -v grep|awk '{print $2}'`
    count=`ps -ef |grep java|grep $Jenkins|grep -v grep|wc -l`

    if [ $count != 0 ];then
        kill $boot_id
        count=`ps -ef |grep java|grep $Jenkins|grep -v grep|wc -l`

        boot_id=`ps -ef |grep java|grep $Jenkins|grep -v grep|awk '{print $2}'`
        kill -9 $boot_id
    fi
}

function restart()
{
    stop
    sleep 2
    start
}

function status()
{
    count=`ps -ef |grep java|grep $Jenkins|grep -v grep|wc -l`
    if [ $count != 0 ];then
        echo "$Jenkins is running..."
    else
        echo "$Jenkins is not running..."
    fi
}

case $1 in
    start)
    start;;
    stop)
    stop;;
    restart)
    restart;;
    status)
    status;;
    *)

    echo -e "\033[0;31m Usage: \033[0m  \033[0;34m sh  $0  {start|stop|restart|status}  {JenkinsJarName} \033[0m\033[0;31m Example: \033[0m\033[0;33m sh  $0  start jenkins.war \03[0m"
esac
  • 狀態(tài)查詢
/home/jenkins/war/jenkins.sh status jenkins.war
  • 啟動命令
/home/jenkins/war/jenkins.sh start jenkins.war
  • 停止命令
/home/jenkins/war/jenkins.sh stop jenkins.war
  • 重啟命令
/home/jenkins/war/jenkins.sh restart jenkins.war

設(shè)置開機自啟

給jenkins.sh文件授權(quán)

chmod +x /home/jenkins/war/jenkins.sh

在/etc/rc.d/rc.local文件底部,添加內(nèi)容:

/home/jenkins/war/jenkins.sh start

重啟計算機

reboot

訪問Jenkins

訪問Jenkins的地址:http://ip地址:8088(8088是上一步指定的端口)

第一次訪問,出現(xiàn)上面的界面,繼續(xù)等待,直到出現(xiàn)下面界面。

根據(jù)上面提示,到路徑 /root/.jenkins/secrets/initialAdminPassword 下找出密碼,然后復(fù)制填入即可。

[root@localhost ~]# cat /root/.jenkins/secrets/initialAdminPassword
ef66fdc63ddb49035a55c7cfaf796578

啟動時候,提示:該jenkins實例似乎已離線

  • 修改/root/.jenkins/hudson.model.UpdateCenter.xml
  • 把url改為https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

插件安裝失敗解決方法

[root@localhost updates]# cd /root/.jenkins/updates/
[root@localhost updates]# sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json
[root@localhost updates]# sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
[root@localhost updates]#

到j(luò)enkins對應(yīng)目錄下,修改default.json文件,依次執(zhí)行上述命令。

插件配置

1.安裝GitLab相關(guān)插件

2.NodeJS插件

3.Maven 插件

注意:插件下載失敗時重新執(zhí)行【插件安裝失敗解決方法】中

sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json

命令。

全局工具配置

建議插件提前在服務(wù)器部署好。

配置GitLab

Manage Jenkins(系統(tǒng)管理)–>Configure System(系統(tǒng)設(shè)置),找到GitLab,填寫上名稱與GitLab并寫上主機地址,點擊【add】來添加證書。

這里我們選擇添加 GitLab API token

登陸GitLab

點擊右上角頭像–>設(shè)置–>訪問令牌

輸入令牌名稱,然后勾選api,點擊下方 創(chuàng)建個人訪問令牌,復(fù)制token,并保存下來。因為下次就不可見了。然后在Jenkins中粘貼

創(chuàng)建任務(wù)

vue項目

登錄jenkins之后,單擊New Item,輸入任務(wù)名稱,點選“Freestyle project”,點擊確定。

general 丟棄舊的構(gòu)建選上,輸入保持最大記錄數(shù),節(jié)省空間。

Source Code Management配置如下

Build Triggers我們點選,當GitLab提交觸發(fā)【Build when a change …】,點擊下面的【advanced…】

拉到下面創(chuàng)建一個token

創(chuàng)建完成后,進入GitLab上對應(yīng)的前端項目,點擊【Settings】–>【W(wǎng)ebhooks(集成)】將上面Build when a change is pushed to GitLab. GitLab webhook URL: 后面跟項目鏈接與剛剛生成的token輸入,點擊【Add webhook】添加成功后,點選測試,Push events 如果彈出 200 說明測試通過。

  • Build Environment:前端項目點選Provide Node & npm bin/ folder to PATH,配置無需改變。
  • Build:構(gòu)建這里,我們選擇shell腳本。

配置如下:

npm -v
npm install --unsafe-perm
npm run build:prod
tar -zcvf dist.tar.gz ./dist
mv ./dist.tar.gz /home/nginx/html;
cd /home/nginx/html;
rm -rf ./dist
tar -zxvf ./dist.tar.gz;
rm -rf ./dist.tar.gz;

注意 npm install 后面加--unsafe-perm,是因為jenkins默認用root用戶登錄,執(zhí)行install命令時會自動切到nobody用戶,會提示沒有權(quán)限。我們可以在服務(wù)器給jenkins創(chuàng)建專用用戶,或者加--unsafe-perm參數(shù)。

配置完之后,點擊保存,初次構(gòu)建選擇Build Now。然后可看Build History中出現(xiàn)新的構(gòu)建進度,緊接著我們選中,可在Console Output中看到構(gòu)建信息。

springcloud項目

創(chuàng)建Spring Cloud 跟創(chuàng)建 Vue前端任務(wù)類似,只是構(gòu)建環(huán)境可以不選,然后更改構(gòu)建中的shell。我們項目采用docker-compose部署,具體如下:

docker部署,并部署公共項目

安裝docker環(huán)境

#安裝docker
[root@localhost~]# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
#啟動docker
[root@localhost~]# service docker start
#看docker版本信息
[root@localhost~]# docker version

docker命令自動補全

#安裝補全工具 
[root@localhost ~]# yum install -y bash-completion 
#安裝完后,關(guān)閉當前命令窗口,重新打開,再輸入docker 按2下tab鍵,則可出現(xiàn)所有docker命令
 [root@localhost ~]# docker 
 attach config create exec history import kill logout node port push rm save service stats system trust version build container diff export image info load logs pause ps rename rmi search stack stop tag unpause volume commit cp events help images inspect login network plugi n pull restart run secret start swarm top update wait 
 [root@localhost ~]# docker e 
 events exec export

通過Dockfile文件,構(gòu)建docker鏡像

搭建SkyWalking環(huán)境

下載地址:https://www.apache.org/dyn/closer.cgi/skywalking/6.6.0/apache-skywalking-apm-6.6.0.zip

webapp-ui默認的端口號是8080,修改成8480,以免造成端口沖突,修改文件:webapp/webapp.yml

server: 
  port: 8480 
collector: 
  path: /graphql 
  ribbon: 
  	ReadTimeout: 10000 
  	# Point to all backend's restHost:restPort, split by , 
  	listOfServers: 127.0.0.1:12800

啟動SkyWalking,只需運行【bin/startup.bat】或【bin/startup.sh】即可

訪問SkyWalking,地址:http://localhost:8480 

注意:測試時啟動,測試完成記得關(guān)掉,后續(xù)都由docker完成。

#將下載的SkyWalking6.6,解壓到docker目錄下,如下:

[root@localhost docker]# pwd 
/work/docker 
[root@localhost docker]# ll 
total 4 
drwxr-xr-x. 8 root root 137 Dec 24 06:30 apache-skywalking-apm-bin 
-rw-r--r--. 1 root root 509 Feb 26 15:32 Dockerfile 
#構(gòu)建docker鏡像,進入項目的docker目錄,執(zhí)行如下命令即可 
[root@localhost docker]# docker build -t spring_cloud_demo:1.0 . 
#查看Docker鏡像 
[root@localhost docker]# docker images

Dockfile配置如下:

# 構(gòu)建鏡像,執(zhí)行命令:【docker build -t spring_cloud_demo:3.2 .】
FROM openjdk:8u212-jre
MAINTAINER Jack
# 時區(qū)問題
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

ADD apache-skywalking-apm-bin/agent/ /agent

ENTRYPOINT ["java", "-server", "-Xms512M", "-Xmx512M", "-Djava.security.egd=file:/dev/./urandom", "-Dfile.encoding=UTF-8", "-XX:+HeapDumpOnOutOfMemoryError", "-javaagent:/agent/skywalking-agent.jar", "-jar", "/app/app.jar" ]

安裝docker-compose,用來管理容器

#下載docker-compose 
[root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-co mpose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 
  % Total % Received % Xferd Average Speed Time Time Time Current 
  						Dload Upload Total Spent Left Speed 
  100 617 0 617 0 0 555 0 --:--:-- 0:00:01 --:--:-- 556 
  100 11.2M 100 11.2M 0 0 1661k 0 0:00:06 0:00:06 --:--:-- 2845k 
#增加可執(zhí)行權(quán)限 
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose 
#查看版本信息 
[root@localhost ~]# docker-compose version 
docker-compose version 1.22.0, build f46880fe 
docker-py version: 3.4.1 
CPython version: 3.6.6 
OpenSSL version: OpenSSL 1.1.0f 25 May 2017

docker-compose官方文檔

https://docs.docker.com/compose/compose-file/compose-file-v2/

創(chuàng)建公用docker-compose.yml文件,主要是為了部署elasticsearch,skywalking-oap,skywalking-ui,可放到docker目錄下,具體為:

ersion: '3.3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0
    container_name: elasticsearch
    restart: always
    ports:
      - 9200:9200
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
  skywalking-oap:
    image: apache/skywalking-oap-server:6.6.0-es7
    container_name: skywalking-oap
    depends_on:
      - elasticsearch
    links:
      - elasticsearch
    restart: always
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      - SW_STORAGE=elasticsearch
      - SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200
  skywalking-ui:
    image: apache/skywalking-ui:6.6.0
    container_name: skywalking-ui
    depends_on:
      - skywalking-oap
    links:
      - skywalking-oap
    restart: always
    ports:
      - 8480:8080
    environment:
      - SW_OAP_ADDRESS=skywalking-oap:12800

通過docker-compose命令,啟動項目,如下所示:

#啟動項目 進入docker目錄執(zhí)行
[root@localhost docker]# docker-compose up -d 
#查看啟動的容器 
[root@localhost docker]# docker ps 
#查看啟動的logs 
[root@localhost docker]# docker logs -f skywalking-oap
#項目異常時,關(guān)閉項目命令
[root@localhost docker]# docker-compose down

jenkins配置正式項目

創(chuàng)建目錄

[root@localhost docker]# cd /home/data

[root@localhost docker]# mkdir allocation-protocol
# 創(chuàng)建存放項目jar包目錄
[root@localhost docker]# mkdir project	
# 創(chuàng)建存放docker-compose.yml文件目錄
[root@localhost docker]# mkdir docker-compose

docker-compose.yml文件配置如下

一個git倉庫下多個服務(wù)時services下直接配置就可以了,然后對應(yīng)在shell腳本中新增所需項目

version: '3.3'
services: 
  allocation-protocol:
    image: renren_io:3.2
    container_name: allocation-protocol-server
    ports:
      - 10021:10021
    networks:
      - skywalking-oap
    environment:
      - JAVA_OPTS=-DSW_AGENT_NAME=allocation-protocol -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=skywalking-oap:11800
    env_file:
      - /home/docker/common.env
    volumes:
      - /home/data/allocation-protocol/project/allocation-server.jar:/app/app.jar
networks:
  skywalking-oap:
    external: true

jenkins中shell腳本

# jdk版本
java -version
# maven版本
mvn -version

# clean install 清除之前的包,并將所有模塊 打包
mvn clean 
mvn install

# 刪除所有舊包
cd /home/data/allocation-protocol
rm -rf ./project;
mkdir project;

# allocation-protocol
mv /root/.jenkins/workspace/allocation-protocol/allocation-server/target/allocation-server.jar /home/data/allocation-protocol/project

cd /home/data/allocation-protocol/docker-compose/
# docker-compose
docker-compose down
docker-compose up -d

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論