关于前端:从部署ubuntu到gitlabci实战

29次阅读

共计 3573 个字符,预计需要花费 9 分钟才能阅读完成。

前言

近期因为降级部署工具,顺便捋了一下构建流程。gitlabCI 是代码提交后比拟重要的一个环节,因为我这边 ubuntu 本地电脑也部署了一套 gitlab 服务,顺便看下自动化部署都须要做哪些工作,对于咱们前端来说对 web 工程化也有更进一步的理解。

OS 环境搭建

我这边是选用的一台比拟老的笔记本(刚刚达标 4g 内存)试验,选用了 ubuntu 20.04.4 X64 的零碎

  • 拜访 https://cn.ubuntu.com/downloa… 下载 ubuntu 桌面版的镜像
  • u 盘通过 https://www.laomaotao.net/ 老毛桃制作为 U 盘启动工具
  • 将 ubuntu.iso 镜像文件拷贝到 U 盘 LMT 根目录后插到笔记本上
  • 启动笔记本抉择 U 盘启动,抉择载入 Ubuntu.iso 镜像
  • 装置结束后启动 ubuntu 零碎

gitlab 装置

  • ctrl+a/t+ t 疾速关上 Ubuntu 的终端窗口
  • 更新 apt 工具

    sudo apt update
  • 装置 openssh(可选,次要是配置邮件发送性能)

    sudo apt install ca-certificates curl openssh-server postfix
  • gitlab 有社区版和企业版,企业版须要付费,那么就选社区版(CE)吧

    sudo apt install gitlab-ce

    这里遇到一个坑就是如果没有迷信上网的话下载会特地特地慢,遇到同样状况的同学倡议尽早切换下 apt 的源(https://blog.csdn.net/qq_2109…)

  • 装置结束后,在 /etc/gitlab/gitlab.rb 目录中会有 gitlab 配置项,比方:

    • external_url 更改 http 为 https,会主动将用户重定向到受加密证书爱护的站点
    • letsencrypt[‘contact_emails’] 设置定义一个电子邮件地址列表
  • 如果有配置批改,则需重新配置

    sudo gitlab-ctl reconfigure
  • 在启动前咱们须要吧默认的 root 用户明码备份下,关上 initial_root_password

    sudo gedit /etc/gitlab/initial_root_password
  • 启动 gitlab 服务

    sudo gitlab-ctl restart

gitlab 应用

胜利启动后就能够通过浏览器拜访 127.0.0.1 关上 gitlab 治理页面,输出 root 和 initial_root_password 的初始密码就能够进入相熟的界面了

  • 在 root 身份进入页面后,点击左上角的 menuAdmin–>settings –> Sign-in Restrictions 目录内能够开启和敞开开放注册,如果注册敞开则每次注册都须要管理员通过才能够创立账户。
  • 局域网内通过输出这台机器的 ip 就能够间接拜访 gitlab 页面,我这里是 172.17.88.138
  • 试着在 gitlab 中创立我的项目 test_1,当然也能够通过绑定 token 通过 OPEN API 来创立

gitlab CI 配置

Gitlab CI 是 gitlab 的一部分,最大的作用是治理各个我的项目的构建状态,因而,运行构建工作这种浪费资源就交给了 gitlab runner 来做了。gitlab runner 能够装置到不同的机器上,所以在构建工作运行期间并不会影响到 gitlab 的性能。现实状况下,不应将 GitLab Runner 与 GitLab 装置在同一台机器上。我这边测试机器就一台,就暂且都装到一起吧。

runner 类型

runner 简略说次要有三种 gitlab-runner:

  • share runner 能够为所有 gitlab 内的我的项目应用
  • group runner 能够为特定项目组下的我的项目应用
  • specific runner 只能为指定我的项目应用

在 gitlab admin area 中能够治理你 gitlab 所有注册的 runners,share runner 能够转为 group runner 或者 specific runner,然而不能够逆转。

装置

  • 装置 runner 须要先增加 gitlab 的存储库

    sudo apt-get install curl // 如果没有装置 curl 工具执行
    curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
  • 装置最新版本的 GitLab Runner

    sudo apt-get install gitlab-runner

注册 / 配置

  • 执行如下命令,并填入根本信息

    gitlab-ci-multi-runner register                        
                                                    
    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
    http://172.17.88.138/ #输入您的 GitLab 实例 URL
    #输入您取得的令牌以注册 Runner:Please enter the gitlab-ci token for this runner:
    Gvcpo9H8fMxSykFspvG6
    #输出 Runner 的形容,您能够稍后在 GitLab 的 UI 中进行更改:Please enter the gitlab-ci description for this runner:
    [localhost.localdomain]: demo
    #输出与 Runner 关联的标签,您能够稍后在 GitLab 的 UI 中进行更改:Please enter the gitlab-ci tags for this runner (comma separated):
    vue-tag
    #是否运行未加标签的构建
    Whether to run untagged builds [true/false]:
    [false]: true
    #是否锁定以后我的项目 Runner
    Whether to lock Runner to current project [true/false]:
    [false]: true
    Registering runner... succeeded                     runner=Gvcpo9H8
    #在这里须要输出 runner 的执行形式,因为我的 Gitlab 和 runner 是装置在同一台服务器上的,间接输出 shell
    Please enter the executor: docker+machine, docker-ssh+machine, docker, parallels, ssh, virtualbox, kubernetes, docker-ssh, shell:
    shell
    #呈现这样信息示意服务端的配置就曾经胜利完结了,如果须要应用到主动构建,还须要再增加一个配置文件,上面说说这个。Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 
  • 初始化后的配置能够通过 root 身份,关上 adminArea 菜单,在 overview=>runners 中抉择对应的 runner 进行配置,当然也能够将 runner 进行我的项目调配
  • 在具体调配的我的项目中就能够看到运行中的 runner 了,如图

运行

  • 在拉取我的项目到本地后,咱们简略的创立一个 ci 配置 (.gitlab-ci.yml)

    stages:
      - build
      - deploy
    
    job_build:
      stage: build
      only:
        - master
      script:
        - echo "测试 打包"
    
    job_build:
      stage: deploy
      only:
        - master
      script:
        - echo "测试 部署"
  • 因为我这边 runner 没有配置 tag,所以脚本内没有注明 tag。推送到 master 后,会看到我的项目 pipelines 曾经运行起来了,在打印中能够看到脚本内的输入
  • 我在部署期间遇到了一些坑

    • 报错:This job is stuck, because you don’t have any active runners that can run this job,因为注册时抉择了不在没有 tag 标记的 job 上运行,在 runner 设置中改为 true 就好了
    Can run untagged jobs: [false/true]
    • 另外一个可能就是 gitlab runner 默认运行时 user mode,须要晋升权限
    sudo gitlab-ci-multi-runner run

总结

em。。。。其实部署 OS 环境搭建,gitlab 服务部署还算是比较顺利。在 runner 启动后的配置里会有比拟多的问题,runner 启动实例会心跳调用指标 gitlab 服务的 API,一直的获取 gitladeb 推送状态,而后执行相应的.gitlab-ci.yml 脚本。捕捉到对应脚本后依照串行 stage=> 并行 job=> 串行 job 内的 script 实现所有工作。

正文完
 0