Fork me on GitHub

Перенос блога с blogger.com на github pages

Решил перенести свой блог с blogger.com на github pages.

Требования я сайту:

  • получить все свои статьи (заметки) в формате Markdown вместе с рисунками
  • автоматическая публикация статей в блоге

Порядок действий переноса из blogger.com:

  1. выгрузить все статьи из блога на blogger.com
  2. преобразовать статьи формата html в формат markdown
  3. выбрать систему генерации сайта из статей markdown блога
  4. публикация готового сайта (блога) на площадке в моём случае GiHub Pages

Формат исходных тестов статей на makdown выбран из-за его простого набора и распространения на различных платформах.

Для сохранения всех статей из blogger.com была сделана программа: https://github.com/kaefik/py-blogger-export , также позволяет преобразовать в markdown.

Для редактирования статей в формате markdown был выбран редактор Typora

Для установки редактора Typora выполните следующее:

# or run:
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -
# add Typora's repository
sudo add-apt-repository 'deb https://typora.io/linux ./'
sudo apt-get update
# install typora
sudo apt-get install typora

Системой генерации статических сайтов выбрана Pelican - данная система поволяет простыми командами создать проект из которого будет собираться сайт, применять темы оформления и публиковать на различные платформы в том числе и GiHub Pages.

Для моего блога выбрана тема pelican-blueidea

Для автоматической генерации сайта и публикации создан приватный репозиторий с исходниками статей в формате markdown и прописан GitHub Action.

Большую помощь в использовании GitHub Action в генерации и публикации оказала статья из хабрхабра GitHub Actions как CI/CD для сайта на статическом генераторе и GitHub Pages.

Мой скрипт в GitHub Actions выглядит так:

name: Push content to the user's GitHub pages repository

on:
  push

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.7
    - name: Install dependencies
      run: |
          python3 -m pip install --upgrade pip
          pip3 install -r requirements.txt
    - name: Make output folder
      run: mkdir output
    - name: Clone master branch
      run: git clone "https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git" --branch master --single-branch ./output
    - name: Generate static pages using themes pelican-blueidea
      run: pelican content -o output --theme-path my-themes-my/pelican-blueidea/
    - name: Set git config and add changes
      run: |
          git config --global user.email "${GITHUB_ACTOR}@https://users.noreply.github.com/"
          git config --global user.name "${GITHUB_ACTOR}"
          git add --all
      working-directory: ./output
    - name: Push and send notification
      run: |
          COMMIT_MESSAGE="Update pages on $(date +'%Y-%m-%d %H:%M:%S')"
          git diff-index --quiet --cached HEAD -- && echo "No changes!" && exit 0 || echo $COMMIT_MESSAGE
          git commit -m "${COMMIT_MESSAGE}"
          git push https://${{ secrets.ACCESS_TOKEN }}@github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io.git master
          curl "https://api.telegram.org/bot${{ secrets.BOT_TOKEN }}/sendMessage?text=$COMMIT_MESSAGE %0ALook at ${GITHUB_ACTOR}.github.io %0ARepository%3A github.com/${GITHUB_ACTOR}/${GITHUB_ACTOR}.github.io&chat_id=${{ secrets.ADMIN_ID }}"
      working-directory: ./output

Всё!

social