Back
Please upgrade your browser or check your network connection.

使用gitlab CI/CD 自动化部署hexo

之前想折腾 github 的 webhook 来实现自动部署,最后还是发现 gitlab 的 CI/CD 好使。

现在都是容器的时代,所以本文也是使用 docker 容器来部署。

可以免掉很多不必要的坑。

我也是刚刚才接触 gitlab 的 CI,还存在挺多疑惑的。

GitLab 文档的翻译,有需要的可以看看。

前言

现在的内存需求,起步大概需要3GB。如果你的机子低于这个数,请谨慎安装gitlab

很可能因为内存的原因导致安装失败或者使用的时候过于卡顿。

而且官方是建议使用Docker而不是Docker Toolbox,并且对于 Windows 那边是没有官方支持的。

安装 gitlab

对于Gitlab的安装,在dockerhub上面是有官方支持的。但是我好像是没有找到现成全套的docker-compose

官方那边好像只有web的,而postgresqlredis都没有。

所以我觉得打算使用这个项目的 docker-compose.yml

这个直接把需要用到的webpostgresqlredis都有了。

  • 下载 先把这个 docker-compose 给下载回来。

    1wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
    

    然后再稍稍修改下,修改完下面的这些地方,基本就可以启动了。如果没有什么额外需求的话。

  • 时区

    1- TZ=Asia/Kolkata #默认
    2- GITLAB_TIMEZONE=Kolkata #默认
    3
    4- TZ=Asia/Shanghai
    5- GITLAB_TIMEZONE=Asia/Shanghai
    
  • 主机名

    1- GITLAB_HOST=localhost # 这个跟拉取时候的链接有关。可以通过配置本地DNS,弄出个域名来。
    2
    3ssh://git@localhost/root/myblog.git
    
  • 三个 KEY

    使用 pwgen -Bsv1 64 生成即可

    1- GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    2- GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
    3- GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string
    
  • root 密码以及邮箱

    root 密码是登入管理员账号时候用的密码,用户名为root

    1- GITLAB_ROOT_PASSWORD=
    2- GITLAB_ROOT_EMAIL=
    
  • 直接docker-compose up启动

安装 gitlab-runner

  • 命令

    gitlab-runner 的命令跟在 docker 时候的命令是基本差不多的。就是在执行命令的最后加下就是了。

    1
    2gitlab-runner [Runner command and options...]
    3
    4docker run [chosen docker options...] gitlab/gitlab-runner [Runner command and options...]
    
     1docker run --rm -t -i gitlab/gitlab-runner --help
     2
     3NAME:
     4  gitlab-runner - a GitLab Runner
     5
     6USAGE:
     7  gitlab-runner [global options] command [command options] [arguments...]
     8
     9VERSION:
    10  10.7.0 (7c273476)
    11
    12  (...)
    
  • docker run

    1docker run -d --name gitlab-runner --restart always \
    2-v /srv/gitlab-runner/config:/etc/gitlab-runner \
    3-v /var/run/docker.sock:/var/run/docker.sock \
    4gitlab/gitlab-runner:latest
    
  • 然后根据 gitlab 的 Runner 页面的提示来注册

    jpg

    docker exec -it gitlab-runner gitlab-ci-multi-runner register

    根据提示输入就行了

编写.gitlab-ci.yml

这个文件放到项目的根目录,同时在 Auto DevOps 里面启用即可。

然后每次push就会自己进行一系列操作。

下面的相关参数说明在这里

当然也有官方的英文

 1stages:
 2- deploy
 3- deploy-cdn
 4
 5cache:
 6paths:
 7  - node_modules/
 8
 9hexo-generate:
10image: daocloud.io/zsnmwy/hexo-alpine-gulp
11stage: deploy
12script:
13  - ping "$HOST_IP" -c 2
14  - rm -rf public
15  - hexo clean
16  - source /etc/profile
17  - ls
18  - whoami
19  - pwd
20  - node -v
21  - npm install
22  - hexo clean
23  - hexo g
24  - source /etc/profile
25  - sh
26  - gulp
27  - ls -la
28  - ping "$HOST_IP" -c 2
29  - rsync -avrzPS --delete -e "sshpass -p $HOST_PASSWORD ssh -o StrictHostKeyChecking=no -p 22" --progress ./public/ ubuntu@"$HOST_IP":/home/ubuntu/www/blog/
30
31tags:
32  - deploy
33
34qshell-cdn:
35image: debian:9.5-slim
36stage: deploy-cdn
37script:
38  - chmod a+x qshell
39  - mv qshell /usr/local/bin
40  - bash
41  - qshell account "$QSEHLL_AK" "$QSEHLL_SK"
42  - qshell account
43  - qshell cdnrefresh -dirs url.txt
44tags:
45  - deploy
46    ```
Licensed under CC BY-NC-SA 4.0