前端自动化

介绍



git push origin master -f

强制覆盖先前提交

CI/CD工具介绍

Jenkins搭建

搭建要点

dockerhub

https://hub.docker.com/


课程架构


docker run --name jenkins_zero -itd -p 11005:8080 -p 50000:50000 jenkins/jenkins:lts

docker logs -f jenkins_zero

firewall-cmd --add-port=11005/tcp --permanent

永久放行端口号

firewall-cmd --reload

重新加载防火墙规则

本地打开jenkins



出现错误重新来几次即可


jekins全局地址 后面与gihub连接

离线安装插件方法(没有选择默认插件)









局域网安装插件











安装常用插件


备份镜像



tmp目录linux重启后数据会重置


备份容器方式2


备份完成

解压


备份容器方式3(最终方案)


搭建小结

Jenkins权限管理

全局安全配置












Role-Based Strategy





安全矩阵




一定要添加否则很麻烦


gilab(gitlab登录jenkins,用户记得密码更少)









部分用户无法登陆


退出jenkins登录


权限管理总结

Role-based Aurthorization Strategy


Jenkins与gitlab对接

创建gitlab项目(私有)

配置jenkins凭据


jenkins设置私钥


gilab设置公钥

配置




集成gitlab




jenkins

模拟

总结

DockerFile

方式一

前端项目配置Dockerfile

# build stage
FROM node:14 as build-stageLABEL maintainer=rollsroycewkk@qq.com# 创建一个工作目录
WORKDIR /app
COPY . .
RUN yarn install --registry=https://registry.npm.taobao.orgRUN npm run build# production stage
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]


前端项目配置.dockerignore

# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules
.DS_Store
dist# node-waf configuration
.lock-wscript# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
.dockerignore
Dockerfile
*docker-compose*# Logs
logs
*.log# Runtime data
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*
pids
*.pid
*.seed
.git
.hg
.svn

后端项目配置Dockerfile

FROM node:14LABEL maintainer=rollsroycewkk@qq.com# 创建一个工作目录
WORKDIR /app
COPY . .
RUN yarn install --registry=https://registry.npm.taobao.org# 这里产生了dist目录,及server.bundle.js
RUN npm run buildEXPOSE 12005# 上传配置一些静态图片资源
VOLUME ["/app/public"]# 运行node
CMD ["node","dist/server.bundle.js"]

后端项目配置.dockerignore

# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules
.DS_Store
dist# node-waf configuration
.lock-wscript# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
.dockerignore
Dockerfile
*docker-compose*# Logs
logs
*.log# Runtime data
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*
pids
*.pid
*.seed
.git
.hg
.svn

端口号更改/与dockerfile暴露端口一直

前端项目生产地址配置

docker build -t web:1.0 .

打包前端镜像 -t就是 -tag .就是根目录下的dockerfile

Docker Desktop

镜像构建过程


docker images

docker run -itd --name web -p 11000:80 web:1.0

浏览器输入localhost:11000


Jenkins任务配置

前端项目配Deploy keys/Jenkins




gitlab项目配置webhooks


jenkins配置

模拟

后端项目配置jenkins



测试


注意(私钥)

gitlab是管理员配置shh 公钥 启用即可

Shell脚本

简单添加变量

#!/bin/bashCONTAINER=${container_name}
PORT=${port}echo $CONTAINER
echo $PORT
echo "hello imooc-front"





docker build --no-cache -t imagename:{image_name}:imagen​ame:{tag}



docker run -itd --name $CONTAINER -p $PORT:80 imagename:{image_name}:imagen​ame:{tag}

docker run --name jenkins_one -itd -p 11006:8080 -p 50001:50000 -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts

jenkins挂载docker

chmod 777 /var/run/docker.sock

授权

docker inspect 容器名称

所有镜像运行状态

正在运行就停止

#!/bin/bashCONTAINER=${container_name}
PORT=${port}# echo $CONTAINER
# echo $PORT# 完成了镜像的构建
# docker build -t web:1.0 .
docker build --no-cache -t ${image_name}:${tag} .# 跑起来我们的服务 -itd 在后台执行
docker run -itd --name $CONTAINER -p $PORT:80 ${image_name}:${tag}# echo "hello imooc-front"RUNNING=${docker inspect --format="{{ .State.Running}}" $CONTAINER 2 > /dev/null}# 条件判断
if[ ! -n $RUNNING ]; thenecho "$CONTTINER does not exit"return 1
fi


最终判断

#!/bin/bashCONTAINER=${container_name}
PORT=${port}# echo $CONTAINER
# echo $PORT# 完成了镜像的构建
# docker build -t web:1.0 .
docker build --no-cache -t ${image_name}:${tag} .# echo "hello imooc-front"RUNNING=`docker inspect --format="{{ .State.Running}}" $CONTAINER `
echo $RUNNING# 条件判断
if [ ! -n $RUNNING ]; thenecho "$CONTAINER does not exit"return 1
fiif [ "$RUNNING" == "false" ]; thenecho "$CONTAINER is not running"return 2
elseecho "$RUNNING is running"# delete same name containermatchingStarted=$(docker ps --filter="name=$CONTAINER" -q | xargs)if [ -n $matchingStarted ]; thendocker stop $matchingStartedfimatching=$(docker ps -a --filter="name=$CONTAINER" -q | xargs )if [ -n $matching ]; thendocker rm $matchingfi
fiecho "RUNNING is ${RUNNING}"# 跑起来我们的服务 -itd 在后台执行
docker run -itd --name $CONTAINER -p $PORT:80 ${image_name}:${tag}

放行

Travis CI

github登录travis并且创建github仓库

创建vue项目关联仓库


根目录配置travis.yml文件

language: node_js
node_js:- "14.15.1"cache:yarn: trueinstall:- yarn intallscript:- npm run build

第一次提交代码

同步travis

手动构建一次




发布到github pages

deploy:provider: pagesskip_cleanup: truelocal_dir: dist/github_token: $GITHUB_TOKEN  # Set in the settings page of your repository, as a secure variablekeep_history: truename: "zeroWk"email: xxxxxxxx@163.comon:branch: master

根目录vue.config.js

module.exports = {publicPath: process.env.NODE_ENV === "production" ? "/travisci-demo" : "/"
}

github申请token



设置travis变量


提交代码




githubPages


总结

Ciecle CI

github登录

github创建仓库

要是公共项目才可以

本地拉取仓库

创建.circleci文件夹/config.yml

version: 2.1
jobs:build:docker:- image: circleci/node:14-browserssteps:- run: echo 'A first hello'- run: npm -v

上传代码

git add .
git commit -m “add”
git remote add origin https://github.com/xxxxx
git branch -M main
git push -u origin main

刷新circleci

set Up Project

vue create circle-demo1

创建一个项目,将demo1中的文件复制到demo中

设置远程拉取代码分支branchs




配置config.yml

version: 2.1
jobs:build:docker:- image: circleci/node:14-browsersonly:- mainsteps:- add_ssh_keys:fingerprintts:- "13:12:94:88:0c:94:ec:70:f0:5e:3a:15:71:e9:d4:a0"- checkout - run:name: Installcommand: yarn install- runname: Buildcommand: yarn build

提交代码



缩进

保存/复用缓存

script文件件/deploy.sh 脚本

sh脚本就相当于一个函数 return不同值

#!/bin/sh
# 构想 https://gist.github.com/motemen/8595451# 基于 https://github.com/eldarlabs/ghpages-deploy-script/blob/master/scripts/deploy-ghpages.sh
# MIT许可 https://github.com/eldarlabs/ghpages-deploy-script/blob/master/LICENSE# abort the script if there is a non-zero error
set -e   // 相当与函数回调,如果没有xxx就退出# 打印当前的工作路径
pwd
remote=$(git config remote.origin.url)   // 设置远程仓库地址echo 'remote is: '$remote# 新建一个发布的目录
mkdir gh-pages-branch
cd gh-pages-branch
# 创建的一个新的仓库
# 设置发布的用户名与邮箱
git config --global user.email "$GH_EMAIL" >/dev/null 2>&1
git config --global user.name "$GH_NAME" >/dev/null 2>&1
git init
git remote add --fetch origin "$remote"echo 'email is: '$GH_EMAIL
echo 'name is: '$GH_NAME
echo 'sitesource is: '$siteSource# 切换gh-pages分支
if git rev-parse --verify origin/gh-pages >/dev/null 2>&1; thengit checkout gh-pages# 删除掉旧的文件内容git rm -rf .
elsegit checkout --orphan gh-pages
fi# 把构建好的文件目录给拷贝进来
cp -a "../${siteSource}/." .ls -la# 把所有的文件添加到git
git add -A
# 添加一条提交内容
git commit --allow-empty -m "Deploy to GitHub pages [ci skip]"
# 推送文件
git push --force --quiet origin gh-pages
# 资源回收,删除临时分支与目录
cd ..
rm -rf gh-pages-branchecho "Finished Deployment!"

配置脚本


circleci配置环境变量





重新构建

课程完整版config.yml

version: 2
jobs:build:docker:- image: circleci/node:10branches:only:- mastersteps:- add_ssh_keys:fingerprints:- "94:e5:20:73:dd:b1:6a:51:e1:b5:fb:5f:24:82:0d:15"- checkout- restore_cache:keys:- dependencies_imooc- run:name: Installcommand: yarn install- save_cache:paths:- node_moduleskey: dependencies_imooc- run:name: Buildcommand: yarn build- run:name: Prepare shell commands# shell chmod +x 赋予执行权限# 执行shell脚本command: chmod +x scripts/deploy.sh- run:name: Run Deploy to Github pagescommand: ./scripts/deploy.sh

github pages

项目 —> setting -->

上面的ciecle-demo找不到因为webpack配置原因

总结

前端自动化 Jenkins/TravisCI/CiecleCi相关推荐

  1. 基于docker jenkins nginx gitee实现前端自动化部署

    部署对比 手动部署 平时我们在上线一个新项目的时候,可能需要先执行打包指令,然后登录服务器,将dist包丢到服务器nginx/html的文件下,看似很简单,但是当项目频繁迭代,一直重复性的操作也是很浪 ...

  2. jenkins实现前端自动化打包并部署到nginx服务器

    前言 本文为本人实际搭建前端自动化部署过程的详细记录,分享给大家的同时也是自己对知识的巩固,本文中可能存在部分前端平常不怎么接触到的知识点,但是不用怕,只要认真看基本不会有问题. 环境依赖 首先需要在 ...

  3. centos+jenkins+nginx+gitlab前端自动化部署全记录

    0. 前言 我们在开发一个新的项目时,总是需要将前端部署到测试服务器上,给测试或者产品访问.简单的来说,如果想部署前端到服务器,服务器需要提供一个服务来访问前端.如果我们在开发中没有涉及Node.js ...

  4. python 自动化框架打包_听说很多人都不会打包,教你Python实现前端自动化打包部署!...

    作为一名专职前端开发的我,为了帮助解决目前工作中的一些繁琐的工作(主要是处理 excel数据),解放程序员双手,前阵子就刚刚入了 python 的坑,毕竟也算是门工具语言,都已经加入少儿编程了,哈哈哈 ...

  5. vuecli打包后的dist目录无法访问_听说很多人都不会打包,教你Python实现前端自动化打包部署!...

    作为一名专职前端开发的我,为了帮助解决目前工作中的一些繁琐的工作(主要是处理 excel数据),解放程序员双手,前阵子就刚刚入了 python 的坑,毕竟也算是门工具语言,都已经加入少儿编程了,哈哈哈 ...

  6. 前端自动化集成部署交付实践

    前言 随着前后端分离应用模式的推广,前端项目可独立部署维护上线,不再仅仅将前端开发后打包的文件直接丢到一个文件目录下就完事大吉了,现在对前端来说也需要了解运维的相关知识,本文旨在介绍一些相关的运维概念 ...

  7. thinkphp整合系列之gulp实现前端自动化

    这又是一个一次整合终身受益:不止是终身:换个项目同样可以很方便复用:不信你看另一个项目: thinkphp整合系列之gulp实现前端自动化 虽然我等叫php程序猿:但是不可避免的是要跟html打交道的 ...

  8. 前端自动化工具 grunt 插件 uglify 的简单使用(一)

    Grunt 的简介: Grunt 是一套前端自动化工具,是一个基于 node.js 的命令行工具,它一般用于: 1.压缩文件: 2.合并文件: 3.简单的语法检测: 4.监听文件变动: 5.less ...

  9. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    构建一个基本的前端自动化开发环境 -- 基于 Gulp 的前端集成解决方案(四) 参考文章: (1)构建一个基本的前端自动化开发环境 -- 基于 Gulp 的前端集成解决方案(四) (2)https: ...

最新文章

  1. 终极方案!解决正确设置LaunchImage后仍然不显示的问题
  2. MySQL Proxy实现数据库读写分离
  3. ubuntu系统初始化
  4. java mysql jsp分页_JSP+MYSQL+Java类优化分页的实例
  5. Thrift之Protocol源码分析
  6. html中如何把两行合并单元格,怎么把Excel单元格中多行文字合并为一行(2)
  7. Boost:bimap双图property地图的测试程序
  8. 【渝粤题库】广东开放大学 商务合同 形成性考核
  9. 玩转 SpringBoot 2 之整合 JWT 上篇
  10. Python编程输出所有的“水仙花数”
  11. 2019.03.07【APIO2018】【洛谷P4630】【BZOJ5463】铁人两项(圆方树)(树形DP)
  12. python 高德地图
  13. Go语言系列——Go语言介绍
  14. 计算机显示无法打开打印机添加,windows无法打开添加打印机怎么办 无法打开添加打印机解决方法...
  15. 腾讯cos文件管理系统 web直传和后端上传实现
  16. 职业学校计算机知识,中等职业学校计算机教学大纲.doc
  17. 【620】【信息管理学基础】【01信息与信息管理】
  18. NB-IoT技术实战开发----keil安装和使用
  19. python电源自动化测试仪器经销商_自动测试系统_电源自动测试系统_ATE自动测试设备_自动化测试系统...
  20. lua写入mysql_Lua MySQL操作

热门文章

  1. TI Zigbee Light Link 参考设计
  2. 如何画出FPN论文中的金字塔结构图
  3. NS3中“E: package ‘gnuplot‘ has no installation candidate”问题解决方案
  4. 沐风:小程序固然好!凭什么能自动赚钱?
  5. 滴水课后作业(6-10)
  6. EPROCESS+KPCR+ETHREAD部分介绍-学习记录
  7. 日有所思(5)——校正装置的理解和设计
  8. 用proteus来玩二极管或门电路
  9. [转载]java实现word转pdf
  10. Android 饼图