前言
GitHub Actions 是一个CI/CD(持续集成Continuous Intergation/持续分发Continuous Delivery持续部署Continuous Deployment) 平台,可用于自动执行构建、测试和部署管道。 您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。
GitHub Actions文档
1、创建GitHub仓库
- 创建一个名为username.github.io的公开(public)仓库,用于存放生成的静态页面,下面统一用公开仓库代表。注:username为你的github用户名
- 再创建一个命名可随意的私人(private)仓库,用于存放Hexo的源码,下面统一用私人仓库代表。创建仓库时添加Add a README file文件,完成仓库初始化
2、在本地(Windows)生成密匙
在Git Bash中输入下面命令,一路回车生成密匙(注意生成的密匙路径):
1
| ssh-keygen -f github-deploy-key
|
3、GitHub配置密匙
复制 github-deploy-key
文件内容,在私人仓库的Settings -> Secrets and variables -> Actions 中点击 New repository secret 添加私匙。
- 在
Name
输入框填写 HEXO_DEPLOY_PRI
- 在
Value
输入框填写 github-deploy-key
文件内容
(可选)再新建一个gitee
的私钥,用于存储 gitee
的密码
- 在
Name
输入框填写 GITEE_PASSWORD
- 在
Value
输入框填写 gitee
的密码
(可选)同步到私有服务器,新建一个私钥
- 在
Name
输入框填写SERVER_IP
,Value
填入私有服务器IP
- 在
Name
输入框填写SSH_PRIVATE_KEY
,Value
填入部署生成的私钥
- 参考文章:CentOS部署Hexo博客
4、在公开仓库部署公钥
复制 github-deploy-key.pub
文件内容,在公开仓库 Settings -> Deploy keys -> Add deploy key
页面上添加
- 在
Title
输入框填写 HEXO_DEPLOY_PUB
- 在
Key
输入框填写 github-deploy-key.pub
文件内容
- 勾选
Allow write access
选项(*)
5、创建 Workflow
- 在本地博客的
.github
目录下,新建workflows
文件夹,并添加文件deploy.yml
- deploy.yml内容如下:
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| name: Hexo Workflows
on: push: branches: - master workflow_dispatch:
env: GIT_USER: hexo GIT_EMAIL: 8888888888@qq.com GIT_DEPLOY_REPO: hexo/hexo.github.io GIT_DEPLOY_BRANCH: master GITEE_USER: hexo GITEE_DEPLOY_REPO: hexo/hexo GITEE_DEPLOY_BRANCH: master GIT_SOURCE_REPO: [email protected]:hexo/hexo.github.io.git GITEE_DESTINATION_REPO: [email protected]:hexo/hexo.git
jobs: build: name: Build on node ${{ matrix.node_version }} and ${{ matrix.os }} runs-on: ubuntu-latest if: github.event.repository.owner.id == github.event.sender.id strategy: matrix: os: [ubuntu-latest] node_version: [16.x]
steps: - name: Checkout uses: actions/checkout@v2
- name: Checkout deploy repo uses: actions/checkout@v2 with: repository: ${{ env.GIT_DEPLOY_REPO }} ref: ${{ env.GIT_DEPLOY_BRANCH }} path: .deploy_git
- name: Use Node.js ${{ matrix.node_version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node_version }}
- name: Configuration environment env: HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}} run: | sudo timedatectl set-timezone "Asia/Shanghai" mkdir -p ~/.ssh/ echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts # coding 已取消同步 ssh-keyscan -t rsa e.coding.net >> ~/.ssh/known_hosts ssh-keyscan -t rsa gitee.com >> ~/.ssh/known_hosts git config --global user.name $GIT_USER git config --global user.email $GIT_EMAIL
- name: Install dependencies run: | npm install hexo-cli -g npm install
- name: Deploy hexo run: | npm run algolia npm run deploy - name: Sync to Gitee uses: wearerequired/git-mirror-action@master env: SSH_PRIVATE_KEY: ${{ secrets.HEXO_DEPLOY_PRI }} with: source-repo: ${{ env.GIT_SOURCE_REPO }} destination-repo: ${{ env.GITEE_DESTINATION_REPO }} - name: Build Gitee Pages uses: yanglbme/gitee-pages-action@main with: gitee-username: ${{ env.GITEE_USER }} gitee-password: ${{ secrets.GITEE_PASSWORD }} gitee-repo: ${{ env.GITEE_DEPLOY_REPO }} branch: ${{ env.GITEE_DEPLOY_BRANCH }}
|
- 同步到Gitee需要到Gitee个人设置的
SSH公钥
中添加github-deploy-key.pub
- 若自动化过程中
npm run algolia
运行报错,大概率是db.json
没有上传导致的(不需要搜索功能更新的,可删掉)
- 若
npm run deploy
运行报错,修改_config.yml
的部署(repo)配置,如下所示:
1 2 3 4 5
| deploy: type: 'git' repo: [email protected]:hexo/hexo.github.io.git branch: master
|
6、将本地的Hexo源码上传到私人仓库,点击私人仓库的Actions即可看见自动化任务的运行