Ubuntu20.04+docker+jenkins+飞书实现自动化发布

一、从0-1一点一滴实现如何本地提交代码到gitlab然后实现前后端自动发布

1.更新apt包索引

sudo apt- getupdate

2.安装必备的软件包以允许apt通过https使用存储库

sudo apt-get installca-certificates curl gnupg lsb- release

3.添加Docker官方版本的GPG密钥

sudomkdir -p /etc/apt/keyrings curl-fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg

4.添加阿里云的GPG密钥

curl-fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add –

?

5.设置存储库

sudo add-apt-repository “deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs)stable”

6.安装最新版本的docker

sudo apt-get update sudo apt- getinstalldocker-ce docker-ce-cli containerd.io docker-compose- plugin

7.验证docker是否安装成功

docker version

8.验证docker服务是否在运行

systemctlstatus docker

9.设置docker服务每次开机自启

sudo systemctl enabledocker

二、安装完docker之后我们按照jenkins,其中要注意的是我们需要构建出Jenkins的镜像要包含.net core/.net6 和node.js的环境。

docker中安装jenkins

  1. 编写带上述环境的dockerfile

FROMjenkins/jenkins

USERroot

RUNuname -a && cat /etc/*release

RUNapt-get updateRUNapt-get install -y curl libunwind8 gettext apt-transport-https

RUNcurl https://packages.microsoft.com/keys/microsoft.asc | gpg –dearmor > microsoft.gpgRUNmv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpgRUNsh -c ‘echo “deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main” > /etc/apt/sources.list.d/dotnetdev.list’

# Install the .NET Core frameworkRUNapt-get updateRUNapt-get install -y dotnet-sdk-3.1 && apt-get install -y dotnet-sdk-5.0 &&apt-get install -y dotnet-sdk-6.0

# Install the npm RUNapt-get install -y curl && curl -sL https://deb.nodesource.com/setup_16.x | bash – && apt-get install -y nodejs && curl -L https://www.npmjs.com/install.sh | sh# Install cnpmRUNnpm install cnpm -g

RUNnpm -vRUNcnpm -v

USERjenkins

2.根据dockerfile构建镜像

# 进入dockerfile所在目录dockerbuild -t complex_jenkins .

3.根据镜像生成容器

# docker run -d -p 8081: 8080–name complex_jenkins -v /etc/localtime: /etc/localtime -v /home/projects/jenkins_home: /var/jenkins_home complex_jenkins

?

三、.net core项目编写dockerfile

后端自动生成.net core dockerfile

打开VS2022,在启动项目上添加docker支持,这样VS2022就会帮我们生成dockerfile

这里有个坑,我们需要将生成的dockerfile移动到项目根目录。

将生成好的dockerfile提交到gitlab仓库中。

前端生成dockerfile

# 安装nginxdockerpull nginxdockerrun –name=nginx -d -p 4030:80 nginx

生成dockerfile,并将dockerfile放置在与dist文件夹同级目录下

FROM nginx #指定基础镜像MAINTAINER ps #说明信息RUN rm /etc/nginx/conf.d/ default.conf ADD default.conf /etc/nginx/conf.d/ #删除基础镜像中的Nginx配置文件替换成自己写的COPY dist/ /usr/share/nginx/html/ #将打包好的vue项目复制到基础镜像中Nginx配置文件的指定路径下

编写Nginx配置文件

生成一个nginx默认配置文件:default.conf 并将配置文件放置在与dockerfile同级目录下

server{ listen8081; # 配置端口server_name宿主机IP; # 修改为docker服务宿主机的iplocation/ { root/usr/share/nginx/html; indexindex.html index.htm; try_files$uri$uri/ /index.html = 404; }error_page500502503504/50x.html; location= /50x.html { roothtml; }}

配置Jenkins

  1. 登录

2.构建项目

构建执行脚本

shell脚本编写

#!/bin/bashpwdcd/var/jenkins_home/workspace/mes_bac_dev/ set-eux if[[ $(docker inspect bac_dev 2> /dev/null | grep ‘”Name”: “/bac_dev”‘)!= “”]]; thenecho‘exists container’docker stop bac_devdocker rm bac_devfiif[[ $(docker images -q bac_dev 2> /dev/null)!= “”]]; thenecho‘exists images’docker rmi bac_develseecho‘not exists’fidocker build -t bac_dev .docker run –name=bac_dev -v /etc/localtime:/etc/localtime -it -p 9995:80 -d bac_dev

前端脚本配置也如上:

构建成功后飞书消息通知

  1. 首先在飞书群配置一个机器人

保存好webhook,以供下文python脚本使用

2.Jenkins里面配置pyhon3环境

# 进入docker jenkins 容器docker exec -it 容器id /bin/bash# 使用apt-get 代替yum 安装apt-getapt-get updateapt- getinstallwget

# 设置个文件夹 解压缩python包cd / var/jenkins_home/ mkdir python3cd python3/wget https://www.python.org/ ftp/python/ 3.6.8/Python -3.6.8.tgz tar -xvf Python -3.6.8.tgz

# 安装gcc 依赖包apt- get-y installgcc automake autoconf libtool make apt- get-y installmake* apt- get-y installzlib* apt- get-y installopenssl libssl-dev apt- getinstallsudo

# 指定安装目录./configure –prefix=/var/jenkins_home/python3makemake install

3.编写python飞书脚本并放置项目上传到gitlab上

import sysimport requestsimport time#定义python系统变量JOB_URL = sys.argv[1]JOB_NAME = sys.argv[2]BUILD_NUMBER = sys.argv[3]GIT_BRANCH= sys.argv[4]

4.jenkins配置飞书

增加shell脚本构建

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月25日
下一篇 2022年8月25日

相关推荐