jenkins_pipeline后端_python_docker

2021-03-09 11:29

阅读:614

标签:ESS   passwd   镜像   nta   $1   失败   doc   ges   shang   

pipeline {
  agent any

  environment {
    imagename = "镜像命名"
    tag = "v${BUILD_NUMBER}"
  }

  stages {
    stage(‘Pull code‘) {
      steps {
        echo "${imagename}:${tag}"
        git credentialsId: ‘git_key‘, url: ‘git地址‘
      }
    }

    stage(‘Clean local history images‘) {
      steps {
        sh ‘docker images | grep ${imagename} | awk \‘{print $1":"$2}\‘ | xargs docker rmi || echo "DONE"‘
      }
    }

    stage(‘Build docker image‘) {
      steps {
        sh ‘docker build --tag=${imagename}:${tag} .‘
        sh ‘docker tag ${imagename}:${tag} 仓库地址/${imagename}:${tag}‘
        sh ‘docker tag ${imagename}:${tag} 仓库地址/${imagename}:latest‘
      }
    }

    stage(‘Push docker image‘) {
      steps {
        sh ‘docker push 仓库地址/${imagename}:${tag}‘
        sh ‘docker push 仓库地址/${imagename}:latest‘
      }
    }

    stage (‘Deploy‘) {
      steps {
        script {
          def remote = [:]
          remote.name = ‘服务器命名‘
          remote.host = ‘项目IP‘
          remote.user = ‘user‘
          remote.password = ‘passwd‘
          remote.allowAnyHosts = true

          sshCommand remote: remote, command: "docker pull 仓库地址/${imagename}:${tag}"
          sshCommand remote: remote, command: "docker pull 仓库地址/${imagename}:latest"
        }
      }
    }

    stage (‘Restart service‘) {
      steps {
        script {
          def remote = [:]
          remote.name = ‘服务器命名‘
          remote.host = ‘项目IP‘
          remote.user = ‘user‘
          remote.password = ‘passwd‘
          remote.allowAnyHosts = true

          sshCommand remote: remote, command: "docker stop ${imagename} || echo ‘DONE‘"
          sshCommand remote: remote, command: "docker rm ${imagename} || echo ‘DONE‘"
          sshCommand remote: remote, command: "docker run -d --name ${imagename} -p 5050:5000 仓库地址/${imagename}:latest"
        }
      }
    }

    stage (‘Clean history docker images on romote server‘) {
      steps {
        script {
          def remote = [:]
          remote.name = ‘服务器命名‘
          remote.host = ‘项目IP‘
          remote.user = ‘user‘
          remote.password = ‘passwd‘
          remote.allowAnyHosts = true

          sshCommand remote: remote, command: "docker images 仓库地址/${imagename} --filter \"before=172.17.0.4:5000/${imagename}:latest\" -q | xargs docker rmi || echo ‘DONE‘"
        }
      }
    }
  }
  #bearychat报警
  post {
    unstable {
      bearychatSend color: ‘red‘, message: "${env.JOB_NAME},构建不稳定"
    }
    failure {
      bearychatSend color: ‘red‘, message: "${env.JOB_NAME},构建失败"
    }
  }

}

_________________________dockerfile______________________________________

FROM ubuntu:18.04

MAINTAINER 乂

RUN echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse" > /etc/apt/sources.list && \
echo "deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list&& \
echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list&& \
echo "deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list&& \
echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list&& \
echo "deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list&& \
echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list&& \
echo "deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list&& \
echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list&& \
echo "deb-src http://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list

ENV TZ Asia/Shanghai
ENV PruneTreeEnv production

RUN apt-get update \
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
&& apt-get install -y tzdata \
&& apt-get clean \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN apt-get update -y \
&& apt-get install -y \
vim \
gunicorn \
python3-dev \
python3-pip

ADD . /code

WORKDIR /code

RUN pip3 install -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pip
RUN pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/


CMD ["gunicorn", "-b 0.0.0.0:5000", "-k gevent", "app:app"]

EXPOSE 5000

jenkins_pipeline后端_python_docker

标签:ESS   passwd   镜像   nta   $1   失败   doc   ges   shang   

原文地址:https://www.cnblogs.com/sqbk/p/14177576.html


评论


亲,登录后才可以留言!