✏️
ougege
  • README
  • Docs
    • index
    • Articles
      • AI
        • 体验Chrome AI
        • 体验Cloudflare Workers AI
        • 体验deepseek
      • CSS
        • CSS优化-PurgeCSS
        • 实用效果
        • 开发常用样式
      • Deepin
        • deepin20安装mysql
        • deepin使用tensorflow入门机器学习
        • deepin安装cuda和cuDNN
        • deepin安装lamp
        • deepin安装nvidia驱动
        • deepin安装oh my Zsh
        • deepin安装p7zip
        • deepin换源
        • 安装deepin系统后要做的事
      • Docker
        • CI/CD搭建配置
        • deepin搭建docker环境
        • docker安装和使用gitlab
        • docker搭建nginx+php环境
      • Essay
        • IOS申请邓白氏编码
        • Markdown-Mermaid
        • Markdown Use
        • webview白屏的问题查找和修复
        • 前端开发对接问题和解决办法汇总
        • 国务院机构改革方案
        • 国家级智库
        • 实用网站推荐
        • 常用Markdown数学公式语法
        • 强烈推荐前端要安装的vscode扩展
        • 新建销售计划-页面卡死问题分析
        • 海淘入坑手册
        • 竞品研究
        • 足球知识速成
      • Git
        • GitBook安装和常用命令
        • GitKraken免费版本
        • Git安装和配置
        • Git异常处理
        • Git Worktree使用
        • 前端工程化相关的实用git命令
      • JS
        • ESM模块导出方式对比
        • Emoji多端统一处理
        • JS发布订阅模式
        • JS性能优化
        • JS标准内置对象
        • JS链式调用原理
        • Promise介绍和使用
        • Range的使用
        • Vue+Oauth登录实现
        • Vue实现富文本插入Emoji
        • chrome扩展入门
        • es5新特性
        • es6常用特性
        • es常用片段
        • uniapp使用eslint校验代码
        • 与移动端通信
        • 优秀js库moment
        • 使用vue-socketio
        • 实现一个中间件
        • 小程序webview调试
        • 常用snippets
        • 常用正则
        • 常用的设计模式
        • 微信jssdk封装使用
        • 浏览器宏任务和微任务
        • 浏览器的5种Observer
        • 深入理解赋值、浅拷贝、深拷贝
        • 解析vue指令clickoutside源码
        • 键盘事件与KeyBoardWrapper交互
        • 高德地图常用方法封装
        • 高阶函数片段
      • Network
        • 使用Lighthouse分析前端性能
        • 前后端启用https
        • 宝塔nginx安装ngx_brotli
        • 比较gz与br加载速度
        • 浏览器https提示不安全
        • 浏览器提示HSTS
        • 简单使用tcpdump
        • 静态资源gzip优化
      • Node
        • CommonJS模块导出方式对比
        • Taro command not found 多平台解决方案
        • koa使用和API实现
        • node安装报错Unexpected-token
        • 使用nvm和nrm
        • 使用uniapp给小程序添加云函数
        • 使用verdaccio搭建本地npm仓库
        • 使用vue-cli搭建vue项目
        • 安装Node.js和npm配置
        • 编译成cjs和mjs的思路解析
        • 让你的npmPackage同时支持cjs和mjs
        • 通过GithubAction将内容部署到vps
      • Python
        • Python源管理
        • Python版本管理
        • mitmproxy抓包
        • 微信公众平台开发爬坑经历
      • Shell
        • Ubuntu安装deepin桌面环境
        • Ubuntu安装flatpak软件
        • Ubuntu安装wireshark
        • Ubuntu常见问题汇总
        • dell G3装系统无法识别第二块硬盘
        • linux下virtualbox用gho还原系统
        • mysql常用命令
        • navicat连接一键集成环境的mysql
        • nginx常用命令
        • pm2常用命令
        • virtualbox虚拟机和宿主机互相复制粘贴
        • vps内资源通过mega快传到本地
        • vps报错temporary failure in name resolution
        • vscode修改文件监控数
        • windows+linux双系统引导修复
        • zsh常用插件和命令
        • 一键搭建ChatGPT web版
        • 使用V2ray,CloudFlare Warp解锁GPT
        • 使用vscode进行java开发
        • 利用zx和SSHKey发布代码到服务器
        • 反爬虫一些方案总结和尝试
        • 安装1Panel
        • 安装Bt面板
        • 安装Ubuntu22.04后要做的事
        • 无显示器linux设置默认分辨率
        • 特别实用的shell命令
        • 解决linux安装xmind缺少依赖报错
      • Standards
        • CSS格式化之stylelint
        • CSS规范
        • HTML规范
        • JS规范
        • commit规范
        • 使用husky+commitlint规范代码提交
        • 使用semantic-release自动管理版本号
        • 命名规范
        • 图片规范
        • 版本编号规范
      • Wall
        • 科学上网-Cloudflare-Pages
        • 科学上网-Cloudflare-Warp
        • 科学上网-Geph
        • 科学上网-RackNerd
        • 科学上网-Slicehosting
        • 科学上网-Surfshark
        • 科学上网-Tor
        • 科学上网-XX-NET
        • 科学上网-heroku
        • 科学上网-shadowsock
        • 科学上网-v2ray使用
        • 科学上网-v2ray搭建
        • 科学上网-浏览器代理
        • 科学上网-让终端走代理
      • Windows
        • SourceTree破解免登录(windows版)
        • git bash交互提示符不工作
        • nexus 7 2013 wifi 刷机
        • tree命令生成文件目录
        • 利用charles抓包app
        • 安装Openssl
        • 安装msi文件报错2503和2502
        • 神器vimium使用说明
        • 自用host
        • 解决win10扩展出来的屏幕模糊
        • 解决安装Adobe Air时发生错误
    • Snippets
      • zsh
        • docker
        • extract
        • git-commit
        • git
        • mysql-macports
        • npm
        • nvm
        • pip
        • pm2
        • systemd
        • ubuntu
        • vscode
Powered by GitBook
On this page
  • 前言
  • gitlab-ci
  • dist目录下index.html打开空白页的解决方案
  • 安装和使用jenkins
  • 使用体验
  • 参考

Was this helpful?

  1. Docs
  2. Articles
  3. Docker

CI/CD搭建配置

PreviousDockerNextdeepin搭建docker环境

Last updated 10 months ago

Was this helpful?

前言

主要讲述 gitlab-ci 和 jekins 的使用体验 系统环境: deepin 15.11 x64

gitlab-ci

安装 gitlab-runner

  1. 方法一: GNU/Linux 安装(不好使)

    # For Debian/Ubuntu/Mint
    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
    
    # For RHEL/CentOS/Fedora
    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
    
    # install
    # For Debian/Ubuntu/Mint
    sudo apt-get install gitlab-runner
    
    # For RHEL/CentOS/Fedora
    sudo yum install gitlab-runner
    
    # for DEB based systems
    apt-cache madison gitlab-runner
    sudo apt-get install gitlab-runner=10.0.0
    
    # for RPM based systems
    yum list gitlab-runner --showduplicates | sort -r
    sudo yum install gitlab-runner-10.0.0-1
  2. 方法二: FreeBSD 安装(推荐)

    # Linux x86-64
    sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
    
    # Linux x86
    sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386
    
    # Linux arm
    sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm
    
    # 添加执行权限
    sudo chmod +x /usr/local/bin/gitlab-runner
    
    # 创建一个gitlab-ci用户
    sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
    
    # 安装并启动服务
    sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    sudo gitlab-runner start
  3. 方法三: 通过 deb 安装 可能大家在使用方法一安装提示:无法定位到软件包 gitlab-runner , 那么可以使用这种方式手动安装

    # For Debian/Ubuntu/Mint
    dpkg -i gitlab-runner_<arch>.deb
    
    # For RHEL/CentOS/Fedora
    rpm -i gitlab-runner_<arch>.rpm
  4. 方法四: 通过 docker 安装

    # 下载安装镜像
    docker pull gitlab/gitlab-runner:latest
    # 运行容器
    # -m 最大占用内存 --memory-reservation 内存+swap
    # -d: 后台运行
    # -p:将容器内部端口向外映射,这里用8081是防止80端口被占用
    # --name:命名容器名称
    # -v:将容器内数据文件夹,日志,配置等挂载到宿主机指定目录下
    docker run -d -m 500M --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest

然后注册 gitlab-runner

# linux,mac等
sudo gitlab-runner register
# docker register
docker run --rm -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
# 1.按照提示输入你的gitlab地址和token:gitlab项目设置 => CI/CD => Runner
# 2.按照提示输入描述
# 3.按照提示打标签
# 4.按照提示选择执行者:我这里是shell

配置 .gitlab-ci.yml

# 定义 stages
stages:
  - update
  - test
  - build
# 创建node_modules缓存,不用每次都重新安装依赖了
cache:
  key: ${CI_BUILD_REF_NAME}
  paths:
    - node_modules/

# 更新代码并安装依赖
update:
  stage: update
  script:
    - npm install
  tags:
    - update

# 执行单元测试
test:
  stage: test
  script:
    - npm run test
  tags:
    - test

# 打包
build:
  stage: build
  script:
    - npm run build
  tags:
    - build

dist目录下index.html打开空白页的解决方案

# 可以在log看到如下提示
# Tip: built files are meant to be served over an HTTP server.
# Opening index.html over file:// won't work.

# 全局安装http-server
npm install -g http-server
# 进入dist目录,启用
cd dist && hs

安装和使用jenkins

# 使用docker安装镜像比较方便
docker pull jenkins/jenkins
# 运行一个容器
# -m 最大占用内存 --memory-reservation 内存+swap
# -d: 后台运行
# -p:将容器内部端口向外映射,这里建议使用80端口
# 上面建议80端口是因为在后续CI使用gitlab-runner时,其他自定义端口均报错(我尝试多种方法,均失败,目前未找到解决方案)
# --name:命名容器名称
# -v:将容器内数据文件夹,日志,配置等挂载到宿主机指定目录下
docker run -m 800M -d -p 8080:8080 -p 50000:50000 --name jenkins -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins
# 进入容器
docker exec -it jenkins bash
# 打印密码,执行安装
cat /var/lib/jenkins/secrets/initialAdminPassword
# 生成ssh秘钥,
ssh-keygen -t rsa
# 打印公钥,填入gitlab,方便后面拉代码
cat /var/jenkins_home/.ssh/id_rsa.pub

在 jenkins 中配置 git 项目的地址? 由于我们的 gitlab-ce 也是运行在 docker 中,无法直接获取项目地址,所以这里需要创建 Bridge 网桥方便容器之间互相访问

# 创建bridge网络
docker network create testnet
# 查询新创建的bridge
docker network ls
# 重新运行gitlab-ce容器连接到testnet网络
docker run -m 2048M -d -p 8443:443 -p 80:80 -p 2222:22 --name gitlab --network testnet --network-alias gitlab  --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
# 重新运行jenkins容器连接到testnet网络
docker run -m 800M -d -p 8080:8080 -p 50000:50000 --name jenkins --network testnet --network-alias jenkins  -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins
# 进入jenkins容器访问gitlab
docker exec -it jenkins bash
ping gitlab
# jenkins的bash没有vi,vim。。。。
# 把刚才对应的ip追加到hosts
echo '172.18.0.2 gitlab.com' >> /etc/hosts

使用体验

  1. gitlab-runner 使用更加方便,和 gitlab 集成度高

  2. jenkins 相对而言功能和插件更丰富

  3. gitlab-runner 图形可视化更友好,集成到 gitlab ,可实时显示当前状态

参考

创建用户

实例配置

把 jenkins 的公钥添加到 gitlab 中: 新建一个 nodejs 项目

参数构建化过程
源码管理
构建环境
构建

安装gitlab
地址
图文详解k8s自动化持续集成之GitLab CI/CD
Gitlab CI持续集成 - GitLab Runner 安装与注册
gitlab runner
Install GitLab Runner on FreeBSD
基于Gitlab CI搭建持续集成环境
用 GitLab CI 进行持续集成
前端项目基于GitLab-CI的持续集成/持续部署(CI/CD)
前端项目gitlab CI(持续集成)实践
Gitlab自动部署之二:安装GITLAB-RUNNER
gitlab-runner注册
如何通过文件打开Vue中的index.html
安装jenkins
jenkins配置git报错returned status code 128
Docker容器互访三种方式
jenkins学习之自动打包构建nodejs应用
Git安装和配置