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

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

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

jenkins依賴docker-compose自動(dòng)部署SpringCloud和vue項(xiàng)目

本機(jī)環(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是一個(gè)開源軟件項(xiàng)目,是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個(gè)開放易用的軟件平臺(tái),使軟件項(xiàng)目可以進(jìn)行持續(xù)集成。

下載war包

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

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

這里不建議使用docker部署,因?yàn)楸救酥笆窃赿ocker部署的,jenkins會(huì)以容器形式啟動(dòng),linux本機(jī)的jdk,nodejs,maven等都需掛載,jar包啟動(dòng)方式也會(huì)收到很大影響、如果依賴docker-compose啟動(dòng),很難進(jìn)行多個(gè)docker-compose組合使用。

war包部署

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

這里先不闡述,之后在同級(jí)目錄新建腳本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
  • 啟動(dòng)命令
/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è)置開機(jī)自啟

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

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

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

/home/jenkins/war/jenkins.sh start

重啟計(jì)算機(jī)

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

啟動(dòng)時(shí)候,提示:該jenkins實(shí)例似乎已離線

  • 修改/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對(duì)應(yīng)目錄下,修改default.json文件,依次執(zhí)行上述命令。

插件配置

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

2.NodeJS插件

3.Maven 插件

注意:插件下載失敗時(shí)重新執(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并寫上主機(jī)地址,點(diǎn)擊【add】來添加證書。

這里我們選擇添加 GitLab API token

登陸GitLab

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

輸入令牌名稱,然后勾選api,點(diǎn)擊下方 創(chuàng)建個(gè)人訪問令牌,復(fù)制token,并保存下來。因?yàn)橄麓尉筒豢梢娏恕H缓笤贘enkins中粘貼

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

vue項(xiàng)目

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

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

Source Code Management配置如下

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

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

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

  • Build Environment:前端項(xiàng)目點(diǎn)選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,是因?yàn)閖enkins默認(rèn)用root用戶登錄,執(zhí)行install命令時(shí)會(huì)自動(dòng)切到nobody用戶,會(huì)提示沒有權(quán)限。我們可以在服務(wù)器給jenkins創(chuàng)建專用用戶,或者加--unsafe-perm參數(shù)。

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

springcloud項(xiàng)目

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

docker部署,并部署公共項(xiàng)目

安裝docker環(huán)境

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

docker命令自動(dòng)補(bǔ)全

#安裝補(bǔ)全工具 
[root@localhost ~]# yum install -y bash-completion 
#安裝完后,關(guān)閉當(dāng)前命令窗口,重新打開,再輸入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默認(rèn)的端口號(hào)是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

啟動(dòng)SkyWalking,只需運(yùn)行【bin/startup.bat】或【bin/startup.sh】即可

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

注意:測(cè)試時(shí)啟動(dòng),測(cè)試完成記得關(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鏡像,進(jìn)入項(xiàng)目的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
# 時(shí)區(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命令,啟動(dòng)項(xiàng)目,如下所示:

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

jenkins配置正式項(xiàng)目

創(chuàng)建目錄

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

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

docker-compose.yml文件配置如下

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

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é)

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

相關(guān)文章

最新評(píng)論