Commit 234540b7 authored by Cédric Moreau's avatar Cédric Moreau

[enh] Tutos de livraison (maj)

parent 4dd20145
......@@ -31,6 +31,7 @@ Page concernant spécifiquement le logiciel Duniter.
* [Les modules C/C++](./les-modules-c-cpp)
* [Guide du validateur](https://git.duniter.org/nodes/typescript/duniter/blob/dev/doc/validator-guide.md)
* [Livraisons](./livraisons)
* [Livraisons (ancien)](./livraisons-old)
## Concepts
......
Title: Livraisons
Order: 9
Date: 2017-05-10
Slug: livraisons-old
Authors: cgeek
> Cette page est un guide à destination des développeurs.
Duniter est livré sous la forme de différents binaires pour les environnements Linux et Windows :
##### Duniter Desktop
* Pour Debian (.deb)
* Pour Linux (archive tar.gz)
* Pour Windows (.exe)
##### Duniter Server
* Pour Debian (.deb)
* Pour Debian ARM (.deb)
La réalisation de ces livrables ainsi que leur mise à disposition est totalement automatisée. Les sections suivantes décrivent cette procédure.
## Pré-requis
N'importe qui peut réaliser la livraison de Duniter, c'est-à-dire produire et mettre à disposition les livrables précédemment cités, sous réserve de réunir les conditions suivantes :
* Être administrateur de l'organisation [Duniter sur GitHub](https://github.com/duniter)
* Disposer d'une machine Linux avec :
* 4Go de RAM minimum
* Bash
* Node.js v6+
* VirtualBox
* Vagrant
* Git
* Yarn
### Création d'un token GitHub
Pour créer la release GitHub et téléverser les livrables, les scripts de livraison s'attendent à trouver un jeton d'authentification dans le répertoire `~/.config/duniter/.github`.
Pour obtenir un tel jeton, rendez-vous à l'adresse [https://github.com/settings/tokens](https://github.com/settings/tokens) puis générez un nouveau jeton en cochant la case « public_repo ».
Copiez alors le jeton généré, par exemple `b23ab3cbe624a8552545900d781a1779b928aa90`, puis enregistrez ce jeton :
echo -n 'b23ab3cbe624a8552545900d781a1779b928aa90' > ~/.config/duniter/.github
## Procédure
### 1. Cloner Duniter et installer ses modules
git clone git@github.com:duniter/duniter.git
cd duniter
yarn
### 2. Créer une nouvelle version
Cette opération se réalise sur n'importe quel branche, selon le besoin :
* Pour une release, utiliser la branche `master`
* Pour une pre-release, utiliser la branche `dev`
Sélectionnez la branche :
git checkout master
Une fois positionné sur la bonne branche, lancez le script de changement de version. Par exemple pour passer en version `1.2.3` :
./release/new_version.sh 1.2.3
Poussez les modifications sur le dépôt :
git push origin master --tags
A ce stade, le code source de Duniter est monté en version, et un nouveau tag a été ajouté au dépôt. GitHub est au courant, et reflète une entrée dans les releases à cette occasion. Toutefois la release n'existe pas encore.
> **N.B**: Si la version doit se faire sur la branche `dev`, remplacez simplement `master` par `dev` dans les commandes ci-dessus.
### 3. Créer la pré-release
Cette fois, nous allons créer la release avec le status *pre-release*. Ce statut permet de produire la release sans que celle-ci soit visible officiellement jusqu'au moment où l'on décidera que « tout est bon ».
Pour produire la pre-release et l'ensemble des livrables (hors ARM), toujours pour notre version d'exemple `1.2.3` :
./release/new_prerelease.sh 1.2.3
Cette procédure **est longue** et se résume en 3 étapes :
* Création de la pré-release sur GitHub
* Production des livrables
* Téléversement des livrables produits, sur GitHub
La 1ère étape est quasi-instantannée, mais la production et le téléversement sont longs : le script va produire des machines virtuelles Ubuntu et Windows afin d'y réaliser les livrables finaux. Puis, le téléversement peut prendre du temps selon le débit disponible sur votre connexion Internet.
### 4. Valider la release
Vous pouvez alors consulter les livrables [sur la page releases du dépôt GitHub](https://github.com/duniter/duniter/releases). Après avoir contrôlé que l'ensemble des fichiers sont bien présents, il est possible de valider la release via :
./release/set_release.sh 1.2.3 rel
La *pre-release* passera alors en *release*, et les utilisateurs seront alertés du changement via Duniter UI (dont disposent Duniter Desktop ou Duniter Server démarré en `webstart`). La page d'accueil https://duniter.org/fr affichera également cette nouvelle version.
### 5. Le build ARM
À partir du moment où l'étape 2. a été réalisée (depuis x86 ou ARM, peu importe), il est possible de lancer le **build ARM**.
Il suffit de réaliser les opérations 1. et 3. sur ARM. Le livrable sera alors produit et uploadé avec les autres versions.
Une bonne pratique est donc de démarrer les étapes 1., 2. et 3. sur un poste Linux 64bits, *puis* de lancer les étapes 1. et 3. sur ARM en parallèle. Il existera alors 2 machines apportant leur concurrence à la construction de la release.
Étapes à suivre avec une raspbian:
* utiliser une release « jessie » pour garantir que ceux qui sont sous cette version peuvent installer le package
* installer yarn, voir la page https://yarnpkg.com/lang/en/docs/install/ :
> curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - && echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list && sudo apt-get update && sudo apt-get install yarn
* attention, yarn désinstalle automatiquement le nodejs préinstallé avec raspbian parce qu'il n'est pas compatible, il faut donc installer node :
> sudo apt-get install curl && curl -sL https://deb.nodesource.com/setup | bash - && sudo apt-get install -y nodejs
* s'assurer que le package zip est installé (il ne l'est pas par défaut)
* avoir mis correctement le fichier correspondant à votre jeton github dans .config/duniter/.github (voir « création d'un token github » plus haut)
* avoir installé votre authentification ssh pour github, voir par exemple https://help.github.com/articles/connecting-to-github-with-ssh/. Typiquement, il vous suffira de copier le contenu du répertoire .ssh de votre profile dans le profile du raspberry. Attention, in faut faire un chmod 400 sur id_rsa sinon github se plaint.
Title: Livraisons
Order: 9
Date: 2017-05-10
Date: 2018-06-02
Slug: livraisons
Authors: cgeek
> Cette page est un guide à destination des développeurs.
Duniter est livré sous la forme de différents binaires pour les environnements Linux et Windows :
Duniter est livré sous la forme de différents binaires pour les environnements Linux et Windows.
##### Duniter Desktop
La réalisation de ces livrables ainsi que leur mise à disposition est :
* Pour Debian (.deb)
* Pour Linux (archive tar.gz)
* Pour Windows (.exe)
* Totalement automatisée pour :
* Duniter Desktop (.deb et archive tar.gz)
* Duniter Server (.deb)
##### Duniter Server
* Partiellement automatisée pour :
* Duniter Desktop Windows (.exe)
* Duniter Server ARM (.deb)
* Pour Debian (.deb)
* Pour Debian ARM (.deb)
## Livrables automatisés
La réalisation de ces livrables ainsi que leur mise à disposition est totalement automatisée. Les sections suivantes décrivent cette procédure.
Produire les livrables de Duniter Desktop et Duniter Server pour Linux (hors ARM) s'effectue depuis le code source de Duniter à l'aide du script :
## Pré-requis
./release/new_version.sh 1.6.24
N'importe qui peut réaliser la livraison de Duniter, c'est-à-dire produire et mettre à disposition les livrables précédemment cités, sous réserve de réunir les conditions suivantes :
Remplacer `1.6.24` par la version à produire.
* Être administrateur de l'organisation [Duniter sur GitHub](https://github.com/duniter)
* Disposer d'une machine Linux avec :
* 4Go de RAM minimum
* Bash
* Node.js v6+
* VirtualBox
* Vagrant
* Git
* Yarn
### Création d'un token GitHub
Pour créer la release GitHub et téléverser les livrables, les scripts de livraison s'attendent à trouver un jeton d'authentification dans le répertoire `~/.config/duniter/.github`.
Pour obtenir un tel jeton, rendez-vous à l'adresse [https://github.com/settings/tokens](https://github.com/settings/tokens) puis générez un nouveau jeton en cochant la case « public_repo ».
Copiez alors le jeton généré, par exemple `b23ab3cbe624a8552545900d781a1779b928aa90`, puis enregistrez ce jeton :
echo -n 'b23ab3cbe624a8552545900d781a1779b928aa90' > ~/.config/duniter/.github
## Procédure
### 1. Cloner Duniter et installer ses modules
git clone git@github.com:duniter/duniter.git
cd duniter
yarn
### 2. Créer une nouvelle version
Cette opération se réalise sur n'importe quel branche, selon le besoin :
* Pour une release, utiliser la branche `master`
* Pour une pre-release, utiliser la branche `dev`
Sélectionnez la branche :
git checkout master
Puis pousser le tag sur le dépôt GitLab :
Une fois positionné sur la bonne branche, lancez le script de changement de version. Par exemple pour passer en version `1.2.3` :
git push origin --tags
./release/new_version.sh 1.2.3
Dans les pipelines GitLab, une action manuelle de packaging sera disponible une fois les tests passés.
Poussez les modifications sur le dépôt :
## Livrables semi-automatisés
git push origin master --tags
Ces livrables possèdent un script pour produire le livrable, mais nécessitent un téléversement manuel sur le serveur GitLab pour être mis à disposition des utilisateurs.
A ce stade, le code source de Duniter est monté en version, et un nouveau tag a été ajouté au dépôt. GitHub est au courant, et reflète une entrée dans les releases à cette occasion. Toutefois la release n'existe pas encore.
### Duniter Server ARM
> **N.B**: Si la version doit se faire sur la branche `dev`, remplacez simplement `master` par `dev` dans les commandes ci-dessus.
Suivre le tutoriel suivant : [https://duniter.org/en/wiki/duniter/create_arm_release/](https://duniter.org/en/wiki/duniter/create_arm_release/) (anglais)
### 3. Créer la pré-release
### Duniter Desktop Windows
Cette fois, nous allons créer la release avec le status *pre-release*. Ce statut permet de produire la release sans que celle-ci soit visible officiellement jusqu'au moment où l'on décidera que « tout est bon ».
Produire ce livrable requiert les conditions suivantes :
Pour produire la pre-release et l'ensemble des livrables (hors ARM), toujours pour notre version d'exemple `1.2.3` :
./release/new_prerelease.sh 1.2.3
Cette procédure **est longue** et se résume en 3 étapes :
* Création de la pré-release sur GitHub
* Production des livrables
* Téléversement des livrables produits, sur GitHub
La 1ère étape est quasi-instantannée, mais la production et le téléversement sont longs : le script va produire des machines virtuelles Ubuntu et Windows afin d'y réaliser les livrables finaux. Puis, le téléversement peut prendre du temps selon le débit disponible sur votre connexion Internet.
### 4. Valider la release
Vous pouvez alors consulter les livrables [sur la page releases du dépôt GitHub](https://github.com/duniter/duniter/releases). Après avoir contrôlé que l'ensemble des fichiers sont bien présents, il est possible de valider la release via :
./release/set_release.sh 1.2.3 rel
La *pre-release* passera alors en *release*, et les utilisateurs seront alertés du changement via Duniter UI (dont disposent Duniter Desktop ou Duniter Server démarré en `webstart`). La page d'accueil https://duniter.org/fr affichera également cette nouvelle version.
### 5. Le build ARM
À partir du moment où l'étape 2. a été réalisée (depuis x86 ou ARM, peu importe), il est possible de lancer le **build ARM**.
Il suffit de réaliser les opérations 1. et 3. sur ARM. Le livrable sera alors produit et uploadé avec les autres versions.
Une bonne pratique est donc de démarrer les étapes 1., 2. et 3. sur un poste Linux 64bits, *puis* de lancer les étapes 1. et 3. sur ARM en parallèle. Il existera alors 2 machines apportant leur concurrence à la construction de la release.
* Disposer d'une machine Linux avec :
* 4Go de RAM minimum
* Bash
* Node.js v6+
* VirtualBox
* Vagrant
* Git
* Yarn
Étapes à suivre avec une raspbian:
Le script pour réaliser le build Windows est :
* utiliser une release « jessie » pour garantir que ceux qui sont sous cette version peuvent installer le package
* installer yarn, voir la page https://yarnpkg.com/lang/en/docs/install/ :
> curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - && echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list && sudo apt-get update && sudo apt-get install yarn
./release/scripts/build.sh make win 1.6.24
* attention, yarn désinstalle automatiquement le nodejs préinstallé avec raspbian parce qu'il n'est pas compatible, il faut donc installer node :
> sudo apt-get install curl && curl -sL https://deb.nodesource.com/setup | bash - && sudo apt-get install -y nodejs
Remplacer `1.6.24` par la version à produire.
* s'assurer que le package zip est installé (il ne l'est pas par défaut)
* avoir mis correctement le fichier correspondant à votre jeton github dans .config/duniter/.github (voir « création d'un token github » plus haut)
* avoir installé votre authentification ssh pour github, voir par exemple https://help.github.com/articles/connecting-to-github-with-ssh/. Typiquement, il vous suffira de copier le contenu du répertoire .ssh de votre profile dans le profile du raspberry. Attention, in faut faire un chmod 400 sur id_rsa sinon github se plaint.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment