skyone 发表于 2021-11-18 20:48:58

如何使用GitLab CI/CD 自动构建、发布博客?

首先,你需要正确部署GitLab和GitLab Runner【笑】


当然,GItHub也可以,我后面可能会补一个GitHub自动构建脚本


先说说我的现状:基于node.js+hexo构建博客,部署到阿里云OSS。国内打开还是比较快的,基本0.8s内打开。


“用户故事”与需求:由于每次加一个文章都要手动构建、打开阿里云、上传,非常非常非常麻烦@_@,向自动化完成这些,只需要把文章推到仓库就自动构建。


先看看成品吧:


https://i.w3tt.com/2021/11/18/B56cG.png

https://i.w3tt.com/2021/11/18/B5u7I.png

https://i.w3tt.com/2021/11/18/B5XO1.png

skyone 发表于 2021-11-18 20:57:53

本帖最后由 skyone 于 2021-11-18 20:59 编辑

第一步:创建一个仓库,将你的博客文件夹传进去


注意:不要把依赖库给装进去了!!!

这是一份差不多通用的 `.gitignore` 文件,使用它后应为问题不大


```````````````````````````````````````````````
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/

```````````````````````````````````````````````


git五连


git init .
git add .
git commit -m "提交博客"
git add remote origin 你的仓库
git push origin master


https://i.w3tt.com/2021/11/18/B5ILD.png

https://i.w3tt.com/2021/11/18/B53uF.png

skyone 发表于 2021-11-18 21:06:26

本帖最后由 skyone 于 2021-11-18 21:10 编辑

第二步:写CI文件


进入GItLab网页,进入仓库,选【CI/CD】->【编辑器】




下面是一份模板,除了tag,基本不用改,有注释,就不解释了

stages:
    - build
    - deploy

cache:
    paths:
      - node_modules
      - public
# 缓存,不设置的话就白白构建了。。。

build-blog:
    image: node:lts-alpine3.14
         # 构建时用的镜像,你要用node-ubuntu我也没办法#_#
    stage: build
    tags:
      - x86
      # 这里是你的Runner的Tag,不要傻傻的和我填一样的
    script:
      # yarn换源
      - yarn config set registry https://registry.npm.taobao.org/
      # 安装hexo
      - yarn global add hexo-cli
      - yarn install
      # 清除缓存
      - hexo clean
      # 构建页面
      - hexo g
      - echo 构建完成

deploy-blog:
    image: node:lts-alpine3.14
    stage: deploy
    tags:
      - x86
    script:
      # 安装、配置阿里云OSS工具
      - wget https://gosspublic.alicdn.com/ossutil/1.7.7/ossutil64 -O ossutil64
      - chmod +x ./ossutil64
      - ./ossutil64 config --endpoint $CI_OSS_ENDPOINT --access-key-id $CI_OSS_KEY_ID --access-key-secret $CI_OSS_KEY_SECERT -L CH
      # 这里不用改,由于是特别重要的密钥,不能公开,待会处理
      # 上传产物
      - ./ossutil64 cp -rf ./public $CI_OSS_URI
      - echo "部署完成"


skyone 发表于 2021-11-18 21:17:12

本帖最后由 skyone 于 2021-11-18 21:19 编辑

第三步:获取阿里云OSS密钥


在阿里云获取OSS的密钥(不会的去看官方文档,写的还算详细)


需要 AccessKey ID和 AccessKey Secret,以及你OSS储存桶的名字


然后打开GitLab,【打开你的仓库】-> 【设置】->【CI/CD】->【变量】


需要添加4个变量(记得勾上“隐藏变量”)


CI_OSS_ENDPOINT :OSS的Endpoint,可以在阿里云查到

CI_OSS_KEY_ID:即AccessKey ID
CI_OSS_KEY_SECERT   :即AccessKey Secret

CI_OSS_URI:你的OSS的URI,例如oss://abcdef/


skyone 发表于 2021-11-18 21:18:46

好了,完成,写文章,再git三部曲即可

git add .
git commit -m "add"
git push origin master

当然懒的话也可以把上面的三行放到批处理文件了
页: [1]
查看完整版本: 如何使用GitLab CI/CD 自动构建、发布博客?