jenkins+gitlab+nginx部署前端应用实现
相关依赖安装
docker
由于国内安装太慢,所以可以使用 进行加速下载。
具体的下载过程就不再阐述。
镜像源:""
docker安装jenkins
命令执行完成后,即可启动一个端口号为 3080 的http服务,打开浏览器,
- 输入 ,等待初始化完成后(可能会比较漫长),此时需要管理员密码,cat ~/docker/jenkins/secrets/initialadminpassword 即可获取管理员密码。
- 再下一步就是安装插件了,建议第一个选项,推荐的插件(这个安装也会比较慢,耐心等待)
- 创建第一个管理员账户
docker安装gitlab
- 初始化过程需要的时间可能会比较长,运行 docker logs -f gitlab可查看进度。
- 输入 ,首次进入会输入密码,待完成后输入用户名密码即可进入(默认的用户名为root)
- 设置 https 和 ssh 方式克隆项目的地址。
如果 ssh 方式不成功,多半是因为 服务端的 key文件权限不正确。docker exec -it gitlab sh进入容器,查看 /etc/gitlab目录下的 ssh_host_ecdsa_key、ssh_host_ed25519_key、ssh_host_rsa_key 3个文件的用户名和群组是否为 git(chown 修改 所属用户,chgrp修改所属群组),文件权限是否为600(chmod命令可修改).
docker 安装 nginx
小结
- localhost:3080,访问jenkins(应运行于用于构建的服务器)
- localhost:9001,访问gitlab(应运行于放置源码的服务器)
- localhost, 访问nginx(应运行于服务器)
配置
1. 安装 gitlab 相关插件
首页->系统管理->插件管理
然后 切换到 可选插件,搜索gitlab,选中 gitlab plugin(我已经安装了,所以此处没有展示),然后选中左下角的按钮,等待安装完成
2. 首页->系统管理->系统配置
credentials 那里,添加的时候必须是 gitlabapi token,
gitlabapi token 的获取方式如下图,生成的token刷新后就会隐藏,从而保证安全性。
配置填写完成以后,最好点击一下 test connection 按钮,确保配置填写正确。
3. 新建一个 job
4. 输入任务名称,并选择*风格
5. 配置相关构建选项
1. general 配置
选中之前系统配置里面填写的选项即可,如果不选的话,构建的状态将无法回传到 gitlab
2. 源码管理
url只能 http 格式的,所以下方的 credentials 就需要使用username with password,选错的话将无法拉取代码。
下方的配置,表示只在 master 和 以 ci 开头的分支进行构建。具体的规则可点击右方的问号自行了解。
3. 构建触发器
勾选 build when a change is pushed to gitlab.,右侧有适用于 gitlab 的webhook url, 下方则是一些触发构建的时机选项(需要和 gitlab 那边的配置互相配合)。
jenkins 插件提供的 webhooj url 是无法直接使用的,因为 jenkins 是需要登录的,对外提供的api也需要登录,否则就会返回 http 401, 好在这种登录用http基本认证就可以搞定。
点击 用户名 -> 设置 -> api token -> 添加新token -> 输入名称 -> 生成,然后复制该 token,与之前的 webhook url拼接即可。拼接规则为 <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>。最终即可得到
此时可以先保存一下。然后去 gitlab 进行配置。
4. gitlab 配置 webhook url
gitlab默认是不允许使用 本机url的,所以要么使用公网域名,要么修改gitlab的隐私设置(如下图所示)
随后打开需要部署的项目 -> settings -> webhooks,填入上一步拼接url,选择对应的事件,点击 add即可。添加成功以后,可以点击 test 测试一下 hooks 是否畅通()。
5. 构建环境
前端构建免不了要使用 node,所以这里一定要勾选 provide node & npm bin/ folder to path(如果没有的话,就去插件中心安装)
6. 构建
去插件中心安装一个名为 publish over ssh 的插件,主要是用于将生成的文件发送到远程服务器。
需要在 -> 系统管理 -> 系统配置中,进行该插件的配置。
2.构建tab,增加构建步骤,选择执行shell
gl替换为对应的项目名即可
构建tab,增加构建步骤,选择send files or execute commonads over ssh
7. 构建后步骤
点击 增加构建后操作步骤,选择publish build status to gitlab,这样jenkins构建完成后,在 gitlab 的 ci/cd 也能看到此次构建的状态。
6. 推送代码,触发构建
推送代码后,如果顺利的话,就会在这里看到构建历史,否则检查配置即可。
7. 浏览网站
推送代码后,只是静态文件部署,所以nginx不需要重启即可看到新内容。
总结
- 推送代码时,gitlab 通过 webhook url 通知 jenkins
- jenkins 收到 post请求后,触发构建,包括测试打包等,完成后发送文件到远程服务器,并执行相应命令,如解压缩文件、复制到nginx相关目录等。如果是 nodejs 应用,还需要 执行 node脚本。
- 远程服务器需提前安装好 docker 和 nginx 容器,并运行 nginx 服务于后台。
- 如果需要 nodejs + nginx,可以使用 docker-compose简化命令运行,然后在 publish over ssh的exec command加入对应命令即可。
到此这篇关于jenkins+gitlab+nginx部署前端应用实现的文章就介绍到这了,更多相关jenkins gitlab nginx 部署 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!