Bootstrap

基于jenkins+github+ansible实现cicd发布nodejs篇

由于没有vm虚拟机因此用docker代替

启动环境

环境包括jenkins和带有ssh的centos

#目录结构
.
├── docker-compose.yaml
├── jenkins
│   └── dockerfile
└── nginx
    └── dockerfile

#jenkins dockerfile
cat jenkins/dockerfile 

FROM jenkinsci/blueocean
USER root
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN apk add sshpass
RUN ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
RUN echo "HostKeyAlgorithms +ssh-dss" > ~/.ssh/config
#nginx dockerfile
cat nginx/dockerfile 
FROM kinogmt/centos-ssh
RUN echo "qq" | passwd root --stdin > /dev/null 2>&1
#编译
docker-compose build 
#启动服务
docker-compose up -d 

#测试jenkins是否能ssh连接到nginx容器
docker exec -it jenkins /bin/sh -c "sshpass -p qq ssh root@nginx  ls -l"

total 20
-rw------- 1 root root 3172 Aug 19  2015 anaconda-ks.cfg
-rw-r--r-- 1 root root   21 Feb  5 13:06 hosts
-rw-r--r-- 1 root root 7214 Aug 19  2015 install.log
-rw-r--r-- 1 root root 1680 Aug 19  2015 install.log.syslog


操作以上操作已经完成了jenkins的启动和jenkins通过ssh方式连接到nginx容器内部

jenkins初始化和安装插件

#进入容器内部
docker exec -it jenkins /bin/bash
#把密码复制过来
cat /var/jenkins_home/secrets/initialAdminPassword

在这里插入图片描述
在这里插入图片描述

设置密码之后jenkins就安装完毕了,如果需要持久化请-v 把家目录挂载啊出来

安装node插件

在这里插入图片描述

在这里插入图片描述
完成后重启

配置nodejs

操作步骤

进入容器内部安装nginx

安装nginx

登录nginx服务器安装nginx,为了方便这次就不用源码编译安装了直接无脑yum,主要是为了看到效果

#俺咋混个
yum -y install nginx
#启动
nginx
#创建一个验证页面
 echo hello wolrd >/usr/share/nginx/html/hello.html

访问nginx
在这里插入图片描述

安装jenkins

配置pipeline进行ci打包
登录jenkins服务器安装jenkins和ansible




pipeline{
       agent any
       parameters {
            string(name: 'Version_node', defaultValue: 'NodeJS 14.15.5', description: 'node版本')
        }
      tools {nodejs "${Version_node}"}
       stages {


            stage('Checkout') {
                steps {


                        git 'https://gitee.com/huangchengwu/hello-world-vue.git'


                        
                    }

                }
                
                
                 stage('package') {
                steps {


                 sh 'npm -v'
                 sh 'node -v '
                 sh 'npm install'
                 sh 'npm run build'

                        
                    }

                }
                
                
                 stage('deploy') {
                steps {

        sh 'ls -l'
        
        
                        
                    }

                }
                
                
            }
              




  

       post {
       
            success {
            echo '执行成功'
         





            }
            failure{
            echo '执行失败'


        }
    }
    
        
}

本来想用ansible-playbook实现cd部分
为了简单以下使用命令shell实现

;