Hugo生成静态网页,比起传统的blog或cms系统多了生成网页+上传服务器的步骤。本文讲一讲通过Gitlab的持续集成系统来使这些步骤自动化。

首先我们把Hugo的网站源代码存放在gitlab的服务上,设置持续集成的相关配置如下。

.gitlab-ci.yml文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
image: alpine

before_script:
  - apk update && apk add git openssh-client rsync hugo && rm -rf /var/cache/apk/*
  # - git submodule update --init --recursive

pages:
  script:
  - hugo 
  - echo "${SSH_PRIVATE_KEY}" > id_rsa
  - chmod 700 id_rsa
  - mkdir "${HOME}/.ssh"
  - echo "${SSH_HOST_KEY}" > "${HOME}/.ssh/known_hosts"
  - rsync -rvz --delete -e 'ssh -i id_rsa' public/ username@liuk.co:/var/www/html/

  artifacts:
    paths:
    - public
  only:
  - master

其中SSH_PRIVATE_KEY SSH_HOST_KEY 作为变量在gitlab的ci设置内进行设置。网页服务器的.ssh/authorized_keys文件上设置好pub key。

选一台机器运行gitlab runner服务,并注册

gitlab runner 设置

注册runner后,在下图中设置“指示此runner是否可以选择无标记的作业” gitlab runner 设置