以下内容为自己搭建过程亲测:
1、window安装docker-desktop -> ubuntu(linux子虚拟机)开启系统虚拟机,如果是mac的话就不需要整虚拟机了。开启window虚拟化可以看到本机已经装好虚拟机和docker,本质上docker是安装在虚拟机上的。
2、docker pull ngnix 和jenkins的镜像,用docker命令启动jenkins docekr run -dt --name jenkins -p 8080:8080 -p 50000:50000 --privileged=true -v 或者创建docker-compose.yml文件启动 命令:docker-compose up -d docker-compose stop
version: '3'
services: # 集合
docker_jenkins:
user: root # 为了避免一些权限问题 在这我使用了root
restart: always # 重启方式
image: jenkins/jenkins:lts # 指定服务所使用的镜像 在这里我选择了 LTS (长期支持)
container_name: jenkins # 容器名称
ports: # 对外暴露的端口定义
- 8080:8080
- 50000:50000
volumes: # 卷挂载路径
- /home/jenkins/jenkins_home/:/var/jenkins_home # 这是我们一开始创建的目录挂载到容器内的jenkins_home目录
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker # 这是为了我们可以在容器内使用docker命令
- /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
docker_nginx:
restart: always
image: nginx
container_name: nginx
ports:
- 80:80
- 433:433
volumes:
- /home/nginx/conf.d/:/etc/nginx/conf.d
- /home/webserver/static/jenkins/dist/:/usr/share/nginx/html
3、启动完毕后我们可以在docker-desktop上看到容器正在运行,本地访问8080端口会到jenkins界面,进容器(docker exec -it 容器id bash)找到初始密钥,var/jenkins_home/secrets/initialAdminPassword.
4、输入initialAdminPassword中的密码后进入jenkins一直点击保存,最后进入使用界面。
5、为了实现构建和自动化部署我们需要使用以下插件,在系统管理-> 插件管理安装nodejs(安装构建的依赖)、git(从github或者gitee拉取代码)、Publish Over SSH(构建dist包后发布到服务器),安装完毕后在全局配置下配置默认的node的版本。
6、我们开始配置ssh链接远程服务器,首先在服务器安装ssh功能apt-get -y install ssh openssh ,如果出现unable的现象,执行更新指令apt-get update再执行apt-get安装包,更新完毕后,sudo su获取虚拟机root权限,设置登录密码(很重要),输入 service ssh status观察ssh是否启动,如果没有启动,输入 sudo service ssh start–> 回车 --> ssh 服务就会启动。在/etc/ssh输入sudo vim sshd_config把配置文件中的找到#PasswordAuthentication no的注释#去掉,并且将NO修改为YES->找到#PermitRootLogin prohibit-password修改为 PermitRootLogin yes保存。
7、然后在jenkins的配置界面(系统管理->Configure System)配置ssh,passphrase就是root的密码,ifconfig获取ip地址分别填写。点击test configure检测是否链接成功。
8、然后创建我们的构建任务,描述就是简要介绍这个构建的内容,记得勾选丢弃旧的构建又不很占内存资源,设置你想要的保存天数;选取git作为项目拉取管理,填写git仓库地址和要构建的分支,在Credentials通过账号和密码创建拉取凭据。
9、设置构建环境为node,填写执行的shell命令,配置构建后的执行把我们构建的dist文件传到服务器对应路径下。
10、构建完毕后在我们的jenkins容器内其实已经有了dist包在容器内/var/jenkins_home/workspace。
11、为了实现域名转发,我们在虚拟机上安装nginx。 root下执行: apt-get install nginx, nginx -v #查看安装版本
12、安装配置nginx的代理,apt install nginx,在/etc/nginx/ 设置nginx.conf为user root。
13、在conf.d下创建我们要监听端口和域名的转发端口为7878
server {
listen 7878;
server_name www.kuwoyixia.* kuwoyixia.* localhost;
#access_log /var/log/nginx/host.access.log main;
location /week {
alias /usr/build/week;
index index.html index.htm;
}
**location / {******
**root /home/kuwoyixia/vue2023;******
**index index.html index.htm;******
**}******
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
14、然后启动nginx ,访问端口见下图
15、点击执行构建,查看控制台是否构建传输成功。
16、然后访问我们nginx配置的转发端口,可以看到我们发布在服务器的项目是成功打开的了,这样基本上一个自动化构建流程全部走完。
17、命令补充:
service nginx start 启动
service nginx stop 停止
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
好了,上面就是目前整个自动化部署的全流程,接下自己的构想是面对sass环境 打造脚本控制多分支构建docker镜像包。