Jenkins之job类型部署Django

Jenkins之job类型部署Django

1、创建Job

1.1、基础部分

1.2、参数化

1.2.1、文本参数(变量)

​ 输出内容

​ 构建

​ 控制台输出

1.2.2、布尔参数

在线构建执行shell加入echo $名称

构建

输出结果

1.2.3、密码参数

可以在下面添加一条shell里echo一下看看内容

构建

输出结果

1.2.4、选项参数

可以在下面添加一条shell里echo一下看看内容

构建

输出结果

1.2.5、List Git branches参数(分支)

构建

1.2.6、级联参数

在添加一个 级联

改内容

构建页面

1.2.7、隐藏参数

可以在下面添加一条shell里echo一下看看内容

构建

输出结果

1.2.8、凭证参数

可以在下面添加一条shell里echo一下看看内容

构建输出凭证id

2、凭证

2.1、jenkins拉去girlab的代码

2.2、缺少凭证 创建凭证

连接

直接保存即可

构建输出

拉下来的代码

3、构建触发器

每分钟执行一次 其实就是使用crontab表达式构建

3.1、其他工程构建后触发

通过回调钩子方式来构建

3.2、将更改推送到 GitLab 时构建

代码一提交到gitlab 、jenkins就构建

要去掉安全认证

加上token连接就好了

4.构建

执行在jenkins服务器上,没有在远程服务器执行,构建后操作是发送到远程服务器上

4、部署Django

4.1、部署实验环境

先部署一个标签 然后 构建里执行shell git checkout $list git branaches的名字 找到node1服务器 安装python3-devel、django、uwsgi

远程连接机器

如果失败 给机器做免密 在jenkins给node01做免密

yum install python3 python3-devel -y
pip3 install django==2.2.2
pip3 install uwsgi


#node01 实验环境
mkdir /opt/linux

yum install nginx -y

vim /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
}


vim /etc/nginx/conf.d/django.conf

server {
        # 监听的端口
        listen 80;
        # 配置域名
        server_name bbs.test.com;
        # 配置路径
        location / {
                # 加载Nginx代理uwsgi的配置项 
                include uwsgi_params;
                # 指定uwsgi的访问地址
                uwsgi_pass 127.0.0.1:8000;
                # 连接uwsgi的超时时间
                uwsgi_read_timeout 2;
                # 自定义uwsgi代理项目的路径及配置项
                uwsgi_param UWSGI_SCRIPT linux.wsgi;
                # 指定python项目的路径
                uwsgi_param UWSGI_CHDIR /opt/linux;
                # 索引文件
                index  index.html index.htm;
                # 客户端上传文件的最大值
                client_max_body_size 35m;
        }
}

4.2、在Jenkins中增加实验环境

总结

gitlib作为仓库  Python上传代码到gitlab   ,jenkins 设置了只有gitlab push了 就拉取代码 连接gitlab通过了jenkins的私钥  ,拉取到 genkins服务器下面的/var/lib/jenkins/workspace/cao, 然后又设置构建后操作  先判断pid文件是不是存在,重新启动uwsgi: /usr/local/bin/uwsgi --reload  /var/run/haha.pid
不在启动uwsgi :/usr/local/bin/uwsgi   --uid 666 --gid 666 myweb.ini

5、流水线

5.1、片段生成

5.2、声明性指令生成器

5.3、生成切换分支脚本

5.4、部署代码生成

5.5基本语法

pipeline {   #pipeline流水线的意思  有且只有一个
    agent any   #agent:指定环境,any当前环境   还有参数:docker、kubernetes、dockerfile
    stages {       #代表某个阶段,阶段可以有多个步骤
      stage('拉取代码') {  #步骤
        steps {
          git credentialsId: '42c93c1c-de13-42ad-a7f7-6df55d16f770', url: 'git@192.168.11.223:aoteman/test.git'
        }
      }

    }
}

5.6、组合之后

pipeline {   
    agent any   
    stages {       
      stage('拉取代码') { 
        steps {
          git credentialsId: '42c93c1c-de13-42ad-a7f7-6df55d16f770', url: 'git@192.168.11.223:aoteman/test.git'
        }
      }

    }
    stages {
      stage('切换分支') {
        steps {
            sh """#!/bin/bash

            git checkout $GIT_TAG"""
        }
      }

    }
    stages {
      stage('部署代码') {
        steps {
            sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s-node-01', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''#!/bin/bash
cd /opt/haha
if [ -f  /var/run/haha.pid];then
    /usr/local/bin/uwsgi --reload  /var/run/haha.pid
else
    /usr/local/bin/uwsgi   --uid 666 --gid 666 myweb.ini   
fi''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '**/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
        }
      }

    }

}

6、自动生成流水线

image-20220114205923489

posted @ 2022-01-14 21:07  迪迦张  阅读(143)  评论(0编辑  收藏  举报