前端自动化部署方案原来这么简单(jenkins + docker + gitlab)

168 阅读5分钟

前言

  1. 如何快速构建自己的应用
  2. 作为前端小伙伴 你熟悉部署流程吗
  3. npm run build 后面的事情呢
  4. gitlab + genkins (CI/CD)
  5. 完整的一套操作模式
  6. 好文不多,记得点赞收藏哦

你将会学会

  1. 学会使用docker
  2. 学会使用gitlab、jenkins等操作命令
  3. 学会jenkins + gitlab devops自动化部署方案
  4. 跟着手把手敲一遍,成就感满满

docker 安装

1.png

  • 检查docker是否安装成功

2.png

  • docker常用的命令
docker images 查看本地安装的镜像
docker image ls 查看镜像
docker image rm [镜像id] 删除镜像
docker rmi [镜像id1] [镜像id2] 删除多个镜像
docker ps  查看已经启动的容器
docker ps -a 查看本地所有容器
docker rm [容器id] 删除容器

image.png

image.png

  • 拉取一个镜像,然后启动
docker pull nginx #默认拉取nginx:latest 版本
docker run -id -p 3009:80 --restart always --privileged=true --name nginx nginx:latest
-i 交互式操作
-d 表示后台运行
-p 3009:80 端口映射
--restart always  容器自启动
--privileged=true  让容器获取宿主机root权限
--name nginx  设置容器名称为nginx
nginx:latest 镜像的名称,这里也可以写镜像ID

image.png

  • 打开浏览器,检查启动是否成功

image.png

交互式操作
docker exec -it nginx /bin/bash # 进入容器

进入容器退出操作
exit

image.png

DockerFile

image.png

可以这么理解,dockerfile不用我们在命令行中配置很多参数,而是把配置放在一个文件中管理

到官网注册账号:hub.docker.com/


docker build -t react-admin-vite:latest .
执行当前的dockerfile 制作镜像 名称为my-app 版本号latest  .表示当前文件目录执行打包

登录
docker login
发布
docker push 注册用户名/镜像名

image.png

  • 检查远程仓库是否上传成功 image.png

gitlab 和 jenkins镜像安装

  • 上面我们已经掌握了docker的基本用法
  • 现在我们升级下使用docker-compose命令,集成多个镜像同时发布

docker-compose

安装了桌面端的docker,其实已经集成了docker-compose

docker-compose常用命令

docker-compose upc # 启动所有服务
docker-compose up -d # 在后台运行服务
docker-compose up --build # 强制重新构建服务


docker-compose down # 停止并移除服务
docker-compose down -v #停止服务并移除卷


docker-compose exec service_name /bin/sh # 进入容器的交互式命令行
docker-compose exec service_name ls -l # 执行特定命令


docker-compose stop:停止服务,但不移除容器


docker-compose start:启动已停止的服务


docker-compose restart:重启服务


docker-compose pause:暂停服务


docker-compose unpause:恢复web容器


docker-compose pull:拉取服务依赖的镜像


docker-compose push:推送本地镜像到 Docker 镜像仓库


docker-compose build:构建或重新构建服务


docker-compose rm:移除已停止的容器


docker-compose top:查看各个服务容器内运行的进程


docker-compose version:显示 Docker Compose 的版本号
  • 验证一下是否安装

image.png

创建docker-compose.yml文件

image.png

  • 执行docker-compose up -d # 在后台运行服务

  • 启动成功

image.png

坑1:现在访问localhost:9004 应该打不开页面 解决方案

docker exec -it gitlab /bin/bash

# 修改gitlab.rb
vi /etc/gitlab/gitlab.rb
## 加入如下
# gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://10.119.26.29'
# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '10.119.26.29'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

# 让配置生效
gitlab-ctl reconfigure

### 注意不要重启,/etc/gitlab/gitlab.rb文件的配置会映射到gitlab.yml这个文件,由于咱们在docker中运行,在gitlab上生成的http地址应该是http://10.119.26.29:9004,所以,要修改下面文件

# 修改http和ssh配置
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

  gitlab:
    host: 10.119.26.29
    port: 9004 # 这里改为9004
    https: false


# 重启
gitlab-ctl restart
# 退出容器
exit
  • 打开浏览器看下,恭喜搞定

image.png

jenkins配置启动

如何找初始密码

解决方案

进入容器 docker exec -it jenkins /bin/bash

查看初始密码 /var/jenkins_home/secrets/initialAdminPassword

我们按照提示安装推荐插件即可

  • 插件镜像替换 像上面查询初始密码一样,先进入容器
替换为
http://mirror.xmission.com/jenkins/updates/update-center.json

image.png

gitlab与jenkins关联

1. docker exec -it jenkins bash 进入jenkins容器
2. ssh-keygen -t rsa -C chrisyao0208@163.com # 一路回撤
3. cd ~/.ssh
4. cat id_rsa.pub
5. -   将生成的密钥`id_rsa.pub`复制粘贴到gitlab中`SSH Keys`设置秘钥

image.png

  • 将生成的密钥id_rsa复制粘贴到jenkins中的凭证

image.png

gitlab创建项目

image.png

jenkins安装插件

jenkins创建项目

image.png

jdk安装

image.png

git安装

image.png

maven安装

image.png

nodejs安装

image.png

配置gitlab凭据

  1. 配置gitlab账号密码

image.png

  1. 配置gitlab全局apitoken
  • 先去gitlab生成一个access token

image.png

  • jenkins中增加gitlab apitoken

image.png

  • jenkins全局配置gitlab增加apiToken

image.png

  • 配置jenkins中Publish over SSH

image.png

  • 配置SSH Server(主要为了后面文件传送服务)

image.png

jenkins中刚刚创建的自由项目

image.png

项目配置

  • general配置 image.png

  • 源码管理 image.png

  • 构建触发器

image.png

点击高级选项找到secret token>Generate生成一个token值

image.png

  • 在gitlab中打开指定的项目 配置webhook

image.png image.png

  • Build Steps 增加构建步骤 image.png

image.png

注意

gitlab webhook执行本地ip的时候,需要打开

image.png

最后我们提交一次代码测试

变更代码 image.png

触发构建 image.png

查看看下宝塔面板,网站管理的确更新完整

image.png

成功构建后,打开网页,恭喜完成一次自动化部署

image.png

总结参考

一次完整的docker学习

一次完整的jenkins、gitlab等部署方案

一次完整的gitlab通过jenkins实现pipline

vue 用docker+gitlab+jenkins实现自动化部署