[Python] Automatisez les builds Pelican avec Travis CI

Comme le dit le titre. Pelican + Il existe un site géré par GitHub Pages. J'ai essayé de configurer Travis CI pour générer automatiquement du HTML avec la commande pelican lorsque j'ai poussé un article vers master et l'ai poussé dans la branche gh-pages pour mettre à jour le site. Site: http://zaki-yama.github.io/salesforce-developers.info

Conditions préalables

J'ai essayé le type de GitHub Pages appelé ** Project Pages **. Il existe deux types de pages GitHub: ** Pages utilisateur / organisation ** et ** Pages projet **.

User/Organization Pages

--Nom du référentiel: [** Nom du compte GitHub **] .github.io

Project Pages

--Nom du référentiel: facultatif

TL;DR

Si vous savez lire l'anglais, vous pouvez suivre cet article. http://blog.thomasemmerling.de/automatic-pelican-publishing-on-github-pages-via-travisci.html

procédure

Activez la commande travis

$ gem install travis

Obtenez un jeton d'accès personnel pour GitHub

Référence: Création d'un jeton d'accès pour une utilisation en ligne de commande - Documentation utilisateur

Vous avez besoin d'un jeton pour pousser de Travis CI vers le référentiel GitHub. Ouvrez Paramètres> Jetons d'accès personnels sur GitHub et émettez un nouveau jeton avec [Générer un nouveau jeton].

Copiez la chaîne de caractères affichée.

SS_2016-01-08_0_18_37.png

Crypter le jeton

Utilisez la première commande travis installée.

$ travis encrypt GH_TOKEN=[Jeton copié]
Shell completion not installed. Would you like to install it now? |y| y
Detected repository as zaki-yama/salesforce-developers.info, is this correct? |yes| yes
Please add the following to your .travis.yml file:

  secure: "FLEqynRypa3B4S9qzcj0OTCwXrHUjEvsiXTI0r7qhZMzt11JUJUSzpVce/q5ZSENuBe9LR+c7MHl0pq9+1fka7bnYpbqWSybbIT5hLUVpIxB2ZvapogHmf9L/1n0vcODGhFwMUOfI1MuDN47wGCHS+qabNkIlzGGQPZYpri1ns1sp5rM7VFmVW6p3grAnhkaVWJIvW7GZORIPH11uBWtWsO2vhymrzM1J/PAgbJcSCjhtEZ79ntiG9DkAGqG27mVKPMNN8NDeIFGlbz2YyPgAqursSjZEPgmnzcQhzqyGz9D9Z5vAONki5vZ9CamEPfFa9llbQlwceM/7DJS+8FsBmiHH59i5rxW40iNK2otl6rSapXp1CLoWptXKVcyl9EjKcBUrRpWZ0Xzj94Ili80RbXiFJBW3B4qtrx7KCweUPURlY94a7n+P+pjbnx/jsdXFyvW4yR9R4+we82TxMPn49kq9Qf0cKnuEkVBOK1QyntdIDcW/L6heWqJAjWJMMGch4lSi0cN/8UGZxqq0b+OoHBp3FHWrnvOnLFB4mEgzp1/sa5jAFr6uq9mIS/TZ37XWrUX39YzAp6IL9Xq5Gmwof8nhKfnX7xm/yb3bglOt9HgrxArEKWoc/w/Gt4uxjGMQ2B9YjJsOdnxBHPpUgUXXxHj0FaD6K0pHLpJRQ+v78A="

Pro Tip: You can add it automatically by running with --add.

La chaîne de caractères après secure: est un jeton chiffré, alors copiez-le.

Créer .travis.yml

Créez un fichier .travis.yml à la racine du référentiel et écrivez comme suit.

yaml:.travis.yml


language: python
branches:
  only:
  - master
install:
- pip install pelican
- pip install ghp-import
- pip install markdown
script:
- make publish
- make github
env:
  global:
  - secure: [jeton chiffré avec la commande travis encrypt]

Modifier le Makefile

Modifiez la partie make github du Makefile de Pelican. Dans mon cas, c'était à l'origine comme ça.

Makefile


PY?=python
PELICAN?=pelican
PELICANOPTS=

BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output

...(Omission)...

GITHUB_PAGES_BRANCH=master

...(Omission)...

github: publish
    ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
    git push origin $(GITHUB_PAGES_BRANCH)

.PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github

Modifiez la dernière partie github: publish comme ceci.

Makefile(modifié)


github: publish
    ghp-import $(OUTPUTDIR)
    @git push -fq https://${GH_TOKEN}@github.com/$(TRAVIS_REPO_SLUG).git gh-pages > /dev/null

Poussez .travis.yml vers master

Validez le Makefile modifié avec .travis.yml et envoyez-le dans la branche master. Si les paramètres sont corrects, le build Travis CI s'exécutera, et le build Pelican et le push vers la branche gh-pages seront exécutés automatiquement.

(Bonus) Empêche la construction de s'exécuter lors de la création d'une Pull Request

Je voulais faire une pull request vers master en faisant de l'article avant publication une branche séparée, en le construisant après la fusion et en publiant l'article. Dès que j'ai fait le PR, la construction a fonctionné et j'étais impatient, mais c'était dans les paramètres Travis CI.

SS_2016-01-09_14_15_01.png

(Bonus 2) Affichez le badge sur README

Référence: J'ai essayé d'utiliser Travis CI: je voulais mettre un badge sur le référentiel GitHub

Cliquez sur le badge build unknown dans la console d'administration Travis CI, sélectionnez Markdown et copiez le texte qui apparaît.

SS_2016-01-08_1_39_01.png

Collez-le dans README.md et appuyez pour voir le badge.

SS 2016-01-08 1.42.00.png

Recommended Posts

[Python] Automatisez les builds Pelican avec Travis CI
Automatisez les tests python avec CircleCI
Automatisez la fabrication des sushis avec Python
[Blender] Automatisez les tests des modules complémentaires Blender avec GitHub et TravisCI
Automatisez des tâches simples avec Python Part0
Tester les programmes non fonctionnalisés Python avec GitLab CI
Automatisez des tâches simples avec Python Part1 Scraping
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
J'ai essayé d'automatiser la fabrication des sushis avec python
Bingo avec python
Zundokokiyoshi avec python
Analyse statique du code Python avec GitLab CI
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Automatisez les tests d'interface utilisateur avec l'API Selenium | Exploration de sites Web avec python
Automatisez Chrome avec Python et Selenium sur votre Chromebook
Paramètres de test des modules Python C ++ 11 avec Travis CI
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
Non bloquant avec Python + uWSGI
Grattage avec Python + PhantomJS
Publier des tweets avec python
Conduisez WebDriver avec python
Utiliser mecab avec Python 3
[Python] Redirection avec CGIHTTPServer