ubuntu20.04 docker jenkins 飞书实现自动化发布 -火狐体育

  • 1,494 views
  • 阅读模式

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


1.更新apt包索引

sudo apt-get update


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

sudo apt-get install ca-certificates curl gnupg lsb-release

3.添加docker官方版本的gpg密钥

sudo mkdir -p /etc/apt/keyringscurl -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 updatesudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

7.验证docker是否安装成功

docker version

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

systemctl status docker

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

sudo systemctl enable docker

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

docker中安装jenkins

  1. 编写带上述环境的dockerfile

from jenkins/jenkins
user root
run uname -a && cat /etc/*release
run apt-get updaterun apt-get install -y curl libunwind8 gettext apt-transport-https
run curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpgrun mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpgrun sh -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 frameworkrun apt-get updaterun apt-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 run apt-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 cnpmrun npm install cnpm -g
run npm -vrun cnpm -v
user jenkins

2.根据dockerfile构建镜像

# 进入dockerfile所在目录docker build -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

# 安装nginxdocker pull nginxdocker run --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 {    listen       8081;# 配置端口    server_name  宿主机ip; # 修改为docker服务宿主机的ip     location / {        root   /usr/share/nginx/html;        index  index.html index.htm;        try_files $uri $uri/ /index.html =404;    }     error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   html;    }}

配置jenkins

  1. 登录

    图片

2.构建项目

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

构建执行脚本

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

shell脚本编写

#!/bin/bashpwdcd /var/jenkins_home/workspace/mes_bac_dev/set -euxif [[ "$(docker inspect bac_dev 2> /dev/null | grep '"name": "/bac_dev"')" != "" ]];        then      echo 'exists container'      docker stop bac_dev      docker rm bac_devfiif [[ "$(docker images -q bac_dev 2> /dev/null)" != "" ]];        then      echo 'exists images'      docker rmi bac_develse        echo '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. 首先在飞书群配置一个机器人

    图片
ubuntu20.04 docker jenkins 飞书实现自动化发布

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

2.jenkins里面配置pyhon3环境

# 进入docker jenkins 容器docker exec -it  容器id /bin/bash# 使用apt-get 代替yum 安装apt-getapt-get updateapt-get install wget
# 设置个文件夹 解压缩python包cd /var/jenkins_home/mkdir python3cd python3/wget https://www.python.org/ftp/python/3.6.8/python-3.6.8.tgztar -xvf python-3.6.8.tgz
# 安装gcc 依赖包apt-get -y install gcc automake autoconf libtool makeapt-get -y install make*apt-get -y install zlib*apt-get -y install openssl libssl-devapt-get install sudo
# 指定安装目录./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]
currenttime = time.strftime("%y-%m-%d %h:%m:%s", time.localtime()) # 飞书机器人的webhook地址url = '此处为上文创建飞书机器人的webhook地址'method = 'post'headers = {'content-type':'application/json'} data = { "msg_type": "interactive", "card": { "config": { "wide_screen_mode": true, "enable_forward": true }, "elements": [{ "tag": "div", "text": { "content": "项目名称:" job_name "\n构建编号:第" build_number "次构建\n运行时间:" currenttime "\n分支:" git_branch, "tag": "lark_md" } }], "header": { "title": { "content": job_name "构建报告", # job_name 调用python定义的变量,这是卡片的标题 "tag": "plain_text" } } }}res= requests.request(method=method,url=url,headers=headers,json=data)print(res)print(res.json())

4.jenkins配置飞书

增加shell脚本构建

# 进入python脚本所在的目录 安装脚本的需要的requests包 并指定镜像源pip3 install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com# 执行脚本 其中 $... 为jenkins传递给脚本的变量 python3 autoresult.py $job_url $job_name $build_number $git_branch

转自:

weinxin
扫码关注微信公众号--it老五
微信扫一扫关注公众号,获取更多实用app,订阅地址不定时更新
  • 火狐体育的版权声明 本文源自 , 整理 发表于 2022-10-20 18:43:00
  • 转载请务必保留本文链接:https://itlao5.com/9542.html
评论  0  访客  0

发表评论

匿名网友 填写信息


确定