Comment déployer un plugin WordPress de TravisCI vers WordPress.org

Tout le monde n'aime pas la subversion. Si vous utilisez Git pour gérer le développement de plugins WordPress, il est fastidieux de synchroniser votre référentiel Git et le référentiel SVN de WordPress.org. Heureusement, nous pouvons utiliser le fournisseur de déploiement TravisCI pour automatiser le déploiement du SVN après les tests..

Conditions préalables

Vous avez besoin de ceux-ci avant de continuer:

  1. Compte GitHub
  2. Compte TravisCI
  3. Plugin code source
  4. WordPress.org plugin SVN repo (vous obtenez ceci après l'approbation du plugin.)

Premier push à GitHub

Pour utiliser TravisCI, nous devons héberger le référentiel de plugins sur GitHub..

Tout d'abord, créez un nouveau référentiel sur GitHub en allant sur cette page et en remplissant le nom du référentiel..

Ensuite, nous allons valider tous les fichiers du plugin dans Git et les transférer dans ce référentiel GitHub. N'oubliez pas de remplacer l'URL distante par la vôtre.

$ cd / chemin / vers / plugin / répertoire $ git init $ git add -A $ git commit -m "premier commit" $ git distant ajouter origine https://github.com/TangRufus/tutsplus-dpl-demo.git $ git push -u origine master

Connecter TravisCI

Connectez votre référentiel GitHub à TravisCI en accédant à la page de votre compte TravisCI et en activant votre référentiel. Cliquez sur Compte de synchronisation dans le coin supérieur droit si votre référentiel nouvellement créé ne figure pas dans la liste.

Vous êtes tous ensemble. Chaque fois que vous appliquez de nouveaux commits ou que quelqu'un envoie des demandes d'extraction à GitHub, cela génère une construction sur TravisCI..

Première construction sur TravisCI

TravisCI utilise un fichier YAML nommé .travis.yml à la racine de votre référentiel pour personnaliser les versions. Apprenez-en davantage dans le document de personnalisation de la construction pour voir comment contrôler le cycle de vie de la génération..

C’est un fichier de configuration de base qui indique à TravisCI d’exécuter des versions de PHP 7,0 et 7.1. Puisque les tests sortent du cadre de ce tutoriel, j'ai remplacé les commandes de test réelles par echo 'Testé'

# .travis.yml langue: php sudo: false php: - 7.0 - 7.1 script: # Exécutez vos tests ici. - echo 'Tested' 

Commettez ce fichier et envoyez-le à GitHub. Les constructions TravisCI seront déclenchées automatiquement.

$ git add .travis.yml $ git ci -am "Ajouter .travis.yml" $ git push origin master

Ajout de la configuration du fournisseur de déploiement

Les fournisseurs de déploiement s’exécutent si les tests ont réussi et des conditions prédéfinies (les sur section) sont remplies. TravisCI fournit près de 40 fournisseurs de déploiement officiels. Malheureusement, aucun d’entre eux ne prend en charge les référentiels de subversion de WordPress.org. Ainsi, j'ai créé mon propre fournisseur personnalisé. Vous pouvez le trouver sur GitHub et sa demande de tirage.

Pour l'utiliser, ajoutez ces lignes à la fin de .travis.yml.

before_deploy: - mkdir build - cp LICENCE build - cp README.txt build - cp remove-medium-cross-link-links.php build deploy: - fournisseur: wordpress-plugin bord: source: TypistTech / dpl branche: add-wordpress-plugin- déploiement sur: php: 7.1 tags: true repo: TangRufus / tutsplus-dpl-demo slug: remove-medium-cross-links nom d'utilisateur: tangrufus mot de passe: $ WORDPRESS_ORG_PASSWORD build_dir: build 

Explication de la configuration

before_deploy

le before_deploy section copie trois fichiers dans le construire répertoire à archiver dans le référentiel de sous-version de WordPress.org. Dans le monde réel, c'est là que vous voulez exécuter gorgée ou grognement tâches pour préparer le plugin prêt pour la production. 

Ne copiez pas de fichiers de test ni de fichiers inutiles dans construire comme l'ensemble construire le répertoire est mis à la disposition des utilisateurs et ceux-ci n'ont pas besoin de vos fichiers de test.

fournisseur et bord

Nous disons à TravisCI d’installer mon fournisseur à partir du add-wordpress-plugin-deployment branche https://github.com/TypistTech/dpl. Une fois que la demande d'extraction a été fusionnée, le bord une partie est inutile.

sur

le sur section contrôle si un déploiement doit être effectué. Le déploiement est déclenché uniquement lorsque toutes les conditions requises sont remplies.

Dans l'exemple ci-dessus, nous déployons sur WordPress.org uniquement lorsque:

  1. c'est un PHP 7.1 construire
  2. c'est un commit étiqueté
  3. il est déclenché par le dépôt TangRufus / tutsplus-dpl-demo (les demandes d'extraction et d'extraction ne déclencheraient pas le déploiement)

limace

Le slug du plugin. 

Si l'URL de votre plugin est https://wordpress.org/plugins/my-awesome-plugin/, alors mon-génial-plugin est le slug du plugin. 

Nom d'utilisateur

Le nom d'utilisateur de votre compte WordPress.org avec lequel vous avez soumis le plugin pour approbation.

mot de passe

Le mot de passe du compte WordPress.org. Ne jamais enregistrer ce mot de passe dans le .travis.yml en clair!

Dans l'exemple ci-dessus, nous utilisons le $ WORDPRESS_ORG_PASSWORD variable d’environnement pouvant être définie dans le tableau de bord Web TravisCI. Choisir Réglages dans le menu cog, et cliquez sur Ajouter dans le Variables d'environnement section. Ne jamais activer l'option "Afficher la valeur dans le journal de génération"!

build_dir

Tout ce qui se trouve dans ce répertoire sera validé dans le référentiel de sous-version de WordPress.org, c’est-à-dire inclus dans le fichier zip téléchargeable.. 

Nous réglons ceci à construire parce que nous avons copié des fichiers plugin dans construire pendant before_deploy.

Marquage

Supposons que nous ayons corrigé quelques bugs et que nous sommes prêts à publier une nouvelle version sur WordPress.org.

Ces commandes valident les modifications apportées à la maîtriser branche mais ne déclenche pas de déploiement:

$ git add -A $ git commit -am "Correction de bogue" $ git push origin master

Seul le déploiement des déclencheurs étiquetés est valide:

$ git tag -a 1.0.17 -m "Version bump 1.0.17" $ git push origin master --tags

Résultats

Retournez dans TravisCI et ouvrez le PHP 7.1 construire un journal. Vous devriez voir un déploiement est enregistré.

Construire le gem dpl localement avec la source TypistTech / dpl et la branche add-wordpress-plugin-deployment Installation des dépendances de déploiement !!! Le support du plugin WordPress est expérimental !!! Préparation du déploiement Recherche de la configuration pour le déploiement du plugin WordPress… Slug: remove-medium-cross-links Nom d'utilisateur: tangrufus Mot de passe trouvé Répertoire de construction: build Répertoire des actifs: non trouvé Validation de la configuration pour le déploiement du plugin WordPress… La configuration semble bonne Aller à deloy tag: 1.0.17 Nettoyer le dépôt git avec 'git stash --all'. Si vous avez besoin d'artefacts de construction pour le déploiement, définissez 'deploy.skip_cleanup: true'. Voir https://docs.travis-ci.com/user/deployment/#Uploading-Files. / usr / lib / git-core / git-stash: 186: / usr / lib / git-core / git-stash: impossible de créer /home/travis/build/TangRufus/tutsplus-dpl-demo/.git/logs/ refs / stash: Répertoire inexistant Déploiement de l'application Vérification de https://plugins.svn.wordpress.org/remove-medium-cross-links Effacement / tmp / d20170513-3291-1yh7vqo / trunk… Suppression des fichiers supprimés de la subversion… D / tmp / d20170513-3291-1yh7vqo / trunk Retrait temporaire du coffre et des éléments d'actif (si assets_dir est défini) Suppression de tmp / d20170513-3291-1yh7vqo / trunk Révision autorisée 1656616. Copie de la construction dans / tmp / d201751313-3291. / d20170513-3291-1yh7vqo / trunk à /tmp/d20170513-3291-1yh7vqo/tags/1.0.17… Ajout de nouveaux fichiers à la subversion… A / tmp / d20170513-3291-1yh7vqo / trunk A / tmp / d201705-3. / trunk / LICENSE A /tmp/d20170513-3291-1yh7vqo/trunk/README.txt A /tmp/d20170513-3291-1yh7vqo/trunk/remove-medium-cross-links.php A / tmp / d20170513-322 tags / 1.0.17 A /tmp/d20170513-3291-1yh7vqo/tags/1.0.17/LICENSE A / tmp / d20170513-3291-1y h7vqo / tags / 1.0.17 / README.txt A /tmp/d20170513-3291-1yh7vqo/tags/1.0.17/remove-medium-cross-links.php Réalisation 1.0.17 Ajout de tmp / d20170513-3291-1yh7vqo / tags /1.0.17 Ajout de tmp / d20170513-3291-1yh7vqo / tags / 1.0.17 / LICENCE Ajout de tmp / d20170513-3291-1yh7vqo / tags / 1.0.17 / README.txt Ajout de tmp / d20170513-3291-1yh7 / tags / 1.0 .17 / remove-medium-cross-links.php Ajout de tmp / d20170513-3291-1yh7vqo / trunk Ajout de tmp / d20170513-3291-1yh7vqo / trunk / LICENCE Ajout de tmp / d20170513-3291-1yh7vqo / trunk / LICENSE Ajout du tmp / d20170513-3291-132hvv / 1) /d20170513-3291-1yh7vqo/trunk/remove-medium-cross-links.php Transmission de données de fichier… Révision validée 1656617.

Et sur le Trac de WordPress.org (https://plugins.trac.wordpress.org/browser/):

Mises en garde

svn commit Deux fois

Depuis que TravisCI est livré avec une ancienne version de subversion qui ne joue pas bien avec les sous-répertoires, je fais svn commit deux fois.

La première svn commit enlève tout à l'intérieur tronc. La deuxième svn commit copie tout de build_dir à tronc.

Expérimental

Ce fournisseur est encore à titre expérimental et n’a pas encore été fusionné avec le dépôt officiel de TravisCI. Vous pouvez suivre les commentaires de TravisCI sur sa demande d'extraction..

En utilisant bord ne fusionne pas ma branche dans le maître en amont. Il est possible que ma filiale soit derrière le dépôt officiel. Quand cela se produit, vous pouvez créer une branche et la rebaser, puis changer la source dans .travis.yml dans votre dépôt GitHub.

Emballer

Pour utiliser ce fournisseur de déploiement:

  1. Héberger le référentiel de plugins sur GitHub.
  2. Connectez GitHub et TravisCI.
  3. Ajouter la configuration à .travis.yml.
  4. Pousser un tag.

J'espère que tout ce qui précède vous aide à déployer des plugins vers WordPress.org plus rapidement. 

WordPress a une économie incroyablement active. Il existe des thèmes, des plugins, des bibliothèques et de nombreux autres produits qui vous aident à construire votre site et votre projet. La nature open-source de la plate-forme en fait également une excellente option pour améliorer vos compétences en programmation. Quoi qu’il en soit, vous pouvez voir tout ce que nous avons à votre disposition sur le marché Envato..

Merci d'avoir lu!