使用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给下载回来。

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

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

  • 时区

    1
    2
    3
    4
    5
    - TZ=Asia/Kolkata #默认
    - GITLAB_TIMEZONE=Kolkata #默认

    - TZ=Asia/Shanghai
    - GITLAB_TIMEZONE=Asia/Shanghai
  • 主机名

    1
    2
    3
    - GITLAB_HOST=localhost # 这个跟拉取时候的链接有关。可以通过配置本地DNS,弄出个域名来。

    ssh://git@localhost/root/myblog.git
  • 三个KEY

    使用 pwgen -Bsv1 64 生成即可

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

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

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

安装gitlab-runner

  • 命令

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

    1
    2
    3
    4

    gitlab-runner [Runner command and options...]

    docker run [chosen docker options...] gitlab/gitlab-runner [Runner command and options...]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    docker run --rm -t -i gitlab/gitlab-runner --help

    NAME:
    gitlab-runner - a GitLab Runner

    USAGE:
    gitlab-runner [global options] command [command options] [arguments...]

    VERSION:
    10.7.0 (7c273476)

    (...)
  • docker run

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

    jpg

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

    根据提示输入就行了

编写.gitlab-ci.yml

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

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

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

当然也有官方的英文

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  stages:
- deploy
- deploy-cdn

cache:
paths:
- node_modules/

hexo-generate:
image: daocloud.io/zsnmwy/hexo-alpine-gulp
stage: deploy
script:
- ping "$HOST_IP" -c 2
- rm -rf public
- hexo clean
- source /etc/profile
- ls
- whoami
- pwd
- node -v
- npm install
- hexo clean
- hexo g
- source /etc/profile
- sh
- gulp
- ls -la
- ping "$HOST_IP" -c 2
- rsync -avrzPS --delete -e "sshpass -p $HOST_PASSWORD ssh -o StrictHostKeyChecking=no -p 22" --progress ./public/ ubuntu@"$HOST_IP":/home/ubuntu/www/blog/

tags:
- deploy

qshell-cdn:
image: debian:9.5-slim
stage: deploy-cdn
script:
- chmod a+x qshell
- mv qshell /usr/local/bin
- bash
- qshell account "$QSEHLL_AK" "$QSEHLL_SK"
- qshell account
- qshell cdnrefresh -dirs url.txt
tags:
- deploy
0%