Автоматически развертывайте блоги Hexo на страницах GitHub с помощью действий GitHub.

GitHub

предисловие

В последнее время я видел, как многие люди в Интернете начинают использовать GitHub Actions для непрерывной интеграции (CI) и непрерывного развертывания (CD) своих проектов. Итак, по прихоти я начал использовать GitHub Actions для автоматизации развертывания личных блогов. Должен сказать, GitHub Actions действительно ароматный!

Раньше, когда я развертывал блог Hexo, я сначалаhexo gПреобразуйте записанный файл Markdown в файл HTML, а затем используйтеhexo dОтправьте сгенерированные общедоступные файлы в репозиторий Github, а затем используйте команду git, чтобы отправить исходный код разработки блога Hexo в другую ветвь репозитория для резервного копирования. Эта операция туда и обратно действительно немного хлопотна. Но после использования GitHub Actions это гораздо удобнее, мне нужно только заранее написать скрипт для автоматического выполнения, когда я пушу исходники разработки Hexo в указанную ветку, GitHub Actions автоматически генерирует для меня HTML-файлы и публикует их в GitHub Pages Да Не очень удобно.

Далее давайте посмотрим, как использовать действия GitHub для автоматизации развертывания блогов Hexo.

GitHub Actions

GitHub Actions— сервис непрерывной интеграции, запущенный GitHub в октябре 2018 года.

Как работает GitHub Actions: после того, как мы настроим сценарий задачи (файл .yml в .github/workflows), который необходимо автоматизировать заранее, GitHub Actions отслеживает операцию (например, push) текущего хранилища. , Для автоматизации этих задач назначается виртуальный хост.

Ставим задачу — Action, которая хранится в корневом каталоге проекта..github/workflowsфайл, суффикс .yml. Действие эквивалентно рабочему процессу рабочего процесса, а рабочий процесс может иметь несколько задач, и каждая задача может быть разделена на несколько шагов. Задачи и шаги будут выполняться последовательно.

Дополнительные сведения о действиях GitHub см.Начало работы с действиями GitHub — Руан ИфэнилиОфициальный сайт GitHub Actions.

Готов к работе

Репозиторий GitHub

Во-первых, нам нужно подготовить репозиторий для развертывания блогов, который обычно называется{{username}}.github.ioВ этой форме в этом репозитории создается еще одна ветка для сохранения исходного кода разработки Hexo. Я использую встроенныйhexo-blog-backupВетвь для резервного копирования исходного кода разработки Hexo, используйтеmasterВетка для развертывания исходного кода блога.

Напоминаем, что вы также можете создать два хранилища здесь, чтобы сохранить исходный код блога и исходный код разработки Hexo, точно так же, как создать две ветки.

Создайте токен личного доступа GitHub

Вам также необходимо создать токен личного доступа для виртуальной системы, созданной GitHub Actions, чтобы отправлять содержимое в репозиторий.

Руководство по созданию токена личного доступа см.Creating a personal access token

Настроить секреты репозитория

Добавьте созданный Personal Access Token в Секреты склада и задайте имя, как показано на рисунке:

secrets
Создание сценариев рабочего процесса

Создан в корневом каталоге проекта.github/workflowsпапку и создайте файл YAML в папке для сценария выполнения задачи. (То, что я создал здесь, это main.yml, имя может быть произвольным)

Содержание скрипта следующее:

name: Blog CI/CD

# 触发条件:在 push 到 hexo-blog-backup 分支后触发
on:
  push:
    branches: 
      - hexo-blog-backup

env:
  TZ: Asia/Shanghai

jobs:
  blog-cicd:
    name: Hexo blog build & deploy
    runs-on: ubuntu-latest # 使用最新的 Ubuntu 系统作为编译部署的环境

    steps:
    - name: Checkout codes
      uses: actions/checkout@v2

    - name: Setup node
      # 设置 node.js 环境
      uses: actions/setup-node@v1
      with:
        node-version: '12.x'

    - name: Cache node modules
      # 设置包缓存目录,避免每次下载
      uses: actions/cache@v1
      with:
        path: ~/.npm
        key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}

    - name: Install hexo dependencies
      # 下载 hexo-cli 脚手架及相关安装包
      run: |
        npm install hexo-cli gulp -g
        npm install

    - name: Generate files
      # 编译 markdown 文件
      run: |
        hexo clean
        hexo generate

    - name: Execute gulp task
      run: gulp

    - name: Deploy hexo blog
      env: 
        # Github 仓库
        GITHUB_REPO: github.com/yifanzheng/yifanzheng.github.io
        # Coding 仓库
        CODING_REPO: e.coding.net/yifanzheng/blogs.git
        # Gitee 仓库
        GITEE_REPO: gitee.com/yifanzheng/yifanzheng.gitee.io
      # 将编译后的博客文件推送到指定仓库
      run: |
        cd ./public && git init && git add .
        git config user.name "yifanzheng"
        git config user.email "zhengyifan1996@outlook.com"
        git add .
        git commit -m "GitHub Actions Auto Builder at $(date +'%Y-%m-%d %H:%M:%S')"
        git push --force --quiet "https://${{ secrets.ACCESS_TOKEN }}@$GITHUB_REPO" master:master
        git push --force --quiet "https://RoYFbFDSfM:${{ secrets.CODING_TOKEN }}@$CODING_REPO" master:master
        git push --force --quiet "https://yifanzheng:${{ secrets.GITEE_ACCESS_TOKEN }}@$GITEE_REPO" master:master

Подробный синтаксис рабочего процесса см.Синтаксис рабочего процесса для действий GitHub

Друзья могут изменить приведенный выше сценарий в свои собственные доступные сценарии в соответствии с реальной ситуацией.

развертывать

Наконец, нам просто нужно отправить исходный код в указанную ветку, и GitHub Actions автоматически развернет проект для нас.

deploy
Наконец, давайте поговорим о том, как найти действия. Вот некоторые часто используемые URL-адреса:

Ссылаться на

Автоматически развертывайте блоги с помощью GitHub Actions