Решил перенести свой блог с blogger.com на github pages.
Требования я сайту:
- получить все свои статьи (заметки) в формате Markdown вместе с рисунками
- автоматическая публикация статей в блоге
Порядок действий переноса из blogger.com:
- выгрузить все статьи из блога на blogger.com
- преобразовать статьи формата html в формат markdown
- выбрать систему генерации сайта из статей markdown блога
- публикация готового сайта (блога) на площадке в моём случае 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
Всё!