基于jenkins+github+ansible实现cicd发布nodejs篇
由于没有vm虚拟机因此用docker代替启动两个docker带有ssh服务的docker run --name nginx -p80:80 -d nginxdocker run --name --privileged=truejenkins-p2020:22 -p8080:8080 -itdtutum/centosdocker run --name nginx-p2021:22 -p80:80-i
·
由于没有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实现
更多推荐
已为社区贡献1条内容
所有评论(0)