Jenkins发布django

1. 代码准备

在项目根目录下新建一个docker_env目录, 其下文件如下 https://gitee.com/wzj66/jenkins-test-code/tree/master/docker_env
在项目根目录下新建四个文件, 分别为Dockerfile, Jenkinsfile, requirements.txt, uwsgi.ini

1.1 Dockerfile内容

FROM ubuntu:18.04
# 支持中文
ENV LANG C.UTF-8

#创建项目文件夹, 设项目名为 project
RUN mkdir /project/
COPY . /project
RUN mkdir /root/.pip/
#时区配置
RUN mkdir -p /usr/share/zoneinfo/Asia
RUN cp /project/docker_env/Shanghai /usr/share/zoneinfo/Asia/Shanghai
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 换源
RUN cp /project/docker_env/sources.list /etc/apt/sources.list
RUN cp /project/docker_env/pip.conf /root/.pip/pip.conf
# 软件安装
RUN apt update
RUN apt install software-properties-common -y
RUN add-apt-repository ppa:deadsnakes/ppa -y
RUN apt update
RUN apt install python3.6 -y
RUN apt-get install python3-pip -y
RUN pip3 install --upgrade pip
RUN apt-get install build-essential python3.6-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev -y
# 安装pip模块
RUN pip3 install -r /project/requirements.txt
# 如果有celery,执行这一个, 没有注释
# RUN echo "nohup python3 /project/manage.py celery worker & >/dev/null 2>&1 &" >> /root/run.sh
RUN echo "uwsgi --ini  /project/uwsgi.ini" >> /root/run.sh
EXPOSE 8003
ENTRYPOINT  ["bash", "/root/run.sh"]

1.2 Jenkinsfile内容

设镜像名为image_name
设容器名为container_name

pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        sh 'docker build -t image_name .'
      }
    }

    stage('Deploy') {
      steps {
        sh '''if [ $(docker ps -aq --filter name=container_name) ];then docker rm -f container_name;fi
docker run \\
    --detach \\
    --publish 8003:8003 \\
    --publish 5553:5555 \\
    --name container_name \\
    image_name'''
      }
    }
  }
}

1.3 requirements.txt内容

Django==2.2.2
django-cors-headers==3.1.1
django-redis==4.10.0
djangorestframework==3.10.3
mysql-connector==2.2.9
PyJWT==1.7.1
PyMySQL==0.9.3
redis==2.10.6
requests==2.22.0
SQLAlchemy==1.2.11
SQLAlchemy-Utils==0.35.0
uWSGI==2.0.20
python-dateutil==2.8.1

1.4 uwsgi.ini内容

[uwsgi]
http  = 0.0.0.0:8003
chdir      = /project
module     = project.wsgi
master     = true
processes    = 4
vacuum     = false

2. Jenkins流水线

2.1 创建流水线

进入页面以后点击打开Blue Ocean

点击创建新的流水线

image.png

代码仓库选择git

输入仓库url, 用户名密码

点击创建证书, 创建流水线

image.png

创建完流水线之后会自动运行流水线


image.png

2.2 编辑脚本

如果想在Jenkins页面编辑流水线步骤(Jenkinsfile)
点击右上角编辑可以编辑流水线脚本

image.png
image.png

编辑完流水线脚本也回自动运行一次流水线
编辑完脚本后会帮你提交一次代码, 本地的项目里面记得pull一下代码

2.3 完成

流水线运行完成则可以访问自己的django项目


image.png

你可能感兴趣的:(Jenkins发布django)