电竞比分网-中国电竞赛事及体育赛事平台

分享

CentOS7 安裝 Jenkins( 構(gòu)建 Vue 和 dotNET Core )

 黃爸爸好 2020-03-10

之前的自動構(gòu)建工具 Jenkins 是部署在公司內(nèi)網(wǎng)的 Windows 服務(wù)器上,現(xiàn)在武漢處于非常時期,兄弟們都在家自我隔離,為了遠(yuǎn)程提交的代碼能自動構(gòu)建,需要在外網(wǎng)的 CentOS 服務(wù)器上搭建 Jenkins 環(huán)境來進(jìn)行構(gòu)建工作。

目的

產(chǎn)品采用前后端分離架構(gòu),前端使用 Vue,后端使用 dotNET Core ,當(dāng)代碼提交 GitLab后,需要自動構(gòu)建前后端代碼,并發(fā)布到測試環(huán)境的容器中,步驟如下:

  • 安裝 Jenkins

  • 設(shè)置 Jenkins 權(quán)限

  • 安裝其他依賴

  • 配置 Jenkins

環(huán)境

  • CentOS:7.5

  • Jenkins:2.204.2

  • node:12.14.1

  • dotNET Core:2.1

安裝 Jenkins

1、安裝 wget

yum -y install wget

2、安裝 jdk

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

3、安裝 Jenkins

#下載依賴
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg./redhat-stable/jenkins.repo 
#導(dǎo)入秘鑰
sudo rpm --import https://pkg./redhat-stable/.key
#安裝
yum install jenkins

設(shè)置 Jenkins 權(quán)限

1、Jenkins 安裝后,執(zhí)行命令 vim /etc/sysconfig/jenkins 進(jìn)行修改,將用戶修改為root

#修改配置
$JENKINS_USER='root'

2、修改目錄權(quán)限

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

安裝其他依賴

1、安裝git

yum install git

2、安裝 node

curl --silent --location https://rpm./setup_10.x | sudo bash
yum -y install nodejs

3、安裝vue

npm install -g @vue/cli

4、安裝 netcore2.1

rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
yum -y install dotnet-sdk-2.1

5、安裝docker

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download./linux/centos/docker-ce.repo
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum-config-manager --enable docker-ce-edge
sudo yum install docker-ce
#啟動docker
systemctl start docker
#設(shè)置開機啟動
chkconfig docker on

配置 Jenkins

在之前的文章《 GitLab 配合 Jenkins 打造自動化部署 》中介紹過在 Windows 環(huán)境下配置 Jenkins,可以作為參考,下面介紹在 CentOS 中的具體步驟:

創(chuàng)建相關(guān)目錄和文件

在 CentOS 中創(chuàng)建相關(guān)的目錄和文件,創(chuàng)建完后的目錄結(jié)構(gòu)如下圖:

  • build 目錄:用來存放構(gòu)建相關(guān)的目錄和文件

    • conf.d

      • default.conf:nginx 的配置文件

    • web

      • devops.sh:vue 項目的構(gòu)建批處理命令

      • Dockerfile:構(gòu)建 vue 項目到 docker 容器的文件

    • webapi

      • devops.sh:api 項目的構(gòu)建批處理命令

      • Dockerfile:構(gòu)建 api 項目到 docker 容器的文件

    • conf.d

      • default.conf:nginx 的配置文件

  • code 目錄:用來存放 git 拉取的源代碼的目錄

    • web:vue 前端代碼

    • webapi:api 接口代碼

build/conf.d/default.conf:

server {
    listen       80;
    server_name  10.10.10.10;
    client_max_body_size 100M;
   location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html; 

    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

build/web/devops.sh:

#!/bin/bash
echo 'del none images'
docker ps -a | grep 'Exited' | awk '{print $1 }'|xargs docker stop
docker ps -a | grep 'Exited' | awk '{print $1 }'|xargs docker rm
docker images|grep none|awk '{print $3 }'|xargs docker rmi
echo 'container del success'

docker stop web
docker rm web
echo 'container web del success'

echo 'begin docker build'

if [ ! -d web ]; then
  mkdir -p web
fi

cp /root/jenkins/build/web/Dockerfile ./web
cp -r /root/jenkins/code/web/dist/* ./web

echo 'begin docker build'
cd web
docker build -t web .
echo 'build end'

docker run -d -p 9001:80 --name web -v /root/jenkins/build/conf.d:/etc/nginx/conf.d:ro  --restart=always  web

cd ..
rm -rf web

build/web/Dockerfile:

FROM nginx:latest
COPY . /usr/share/nginx/html/
EXPOSE 80
CMD ['nginx''-g''daemon off;']

build/webapi/devops.sh:

#!/bin/bash
echo 'del none images'
docker ps -a | grep 'Exited' | awk '{print $1 }'|xargs docker stop
docker ps -a | grep 'Exited' | awk '{print $1 }'|xargs docker rm
docker images|grep none|awk '{print $3 }'|xargs docker rmi
echo 'container del success'

docker stop webapi
docker rm webapi
echo 'container webapi del success'

echo 'begin docker build'
if [ ! -d web ]; then
  mkdir -p web
fi
cp /root/jenkins/build/webapi/Dockerfile ./web
cp -r /root/code/webapi/myapi/bin/Debug/netcoreapp2.1/publish/* ./web

echo 'begin docker build'
cd web
docker build -t webapi .
echo 'build end'

docker run -d -p 5000:5000 --restart=always --name webapi webapi

build/webapi/Dockerfile:

FROM microsoft/dotnet:2.1-aspnetcore-runtime
COPY . /app
WORKDIR /app
EXPOSE 80/tcp
ENTRYPOINT ['dotnet''myapi.dll']

全局配置

配置 git 目錄,可以先執(zhí)行命令 whereis git 找到 git 的目錄,然后進(jìn)行設(shè)置,如下圖:

Vue 項目的配置

1、設(shè)置運行目錄

2、構(gòu)建的命令設(shè)置

WebAPI 項目的配置

1、設(shè)置運行目錄

2、構(gòu)建的命令設(shè)置

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多