Mainframe : déploiement dans IBM LinuxONE™ Community Cloud avec GitHub Actions …
Tags: mainframe, ibmcloud, node, githubactions
Published: 2020-04-19 01:58:52

---
title: Mainframe : déploiement dans IBM LinuxONE™ Community Cloud avec GitHub Actions …
published: true
date: 2020-04-19 01:42:01 UTC
tags: mainframe,ibmcloud,nodejs,githubactions
canonical_url: https://medium.com/@abenahmed1/mainframe-d%C3%A9ploiement-dans-ibm-linuxone-community-cloud-avec-github-actions-87ff06a0655d
---

![](https://cdn-images-1.medium.com/max/1024/1*oJQnnFyht34EdQBtOVEBPQ.jpeg)

IBM propose un programme permettant de tester des instances virtuelles dans sa gamme LinuxONE, un système matériel conçu pour prendre en charge et exploiter le système d’exploitation Linux :

- [IBM LinuxOne - Infrastructure cloud hybride ultra-sécurisée](https://www.ibm.com/fr-fr/it-infrastructure/linuxone)
- [Home - LinuxONE Community Cloud](https://developer.ibm.com/linuxone/)

![](https://cdn-images-1.medium.com/max/1024/1*mVLWfrcoLKRdPs-KrPsIIg.jpeg)

Je procède donc après inscription à la création d’une machine virtuelle SLES 12 SP5 (détails dans le dépôt GitHub de la communauté) :

[linuxone-community-cloud/technical-resources](https://github.com/linuxone-community-cloud/technical-resources/blob/master/deploy-virtual-server.md)

![](https://cdn-images-1.medium.com/max/1024/1*UGblk4VLu1IEB81xCPODKw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*U0JxB-CINQxcMVxms4_pEw.jpeg)

Mon instance est prête et je peux m’y connecter :

![](https://cdn-images-1.medium.com/max/1024/1*dLDRF0k5kQXT_A3k5YmPqQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*-o8qOhD-xYOrM_b3SAsVbw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*taR31uxn6PVeZXIoKKVxOw.jpeg)

Je peux y installer Node.js :

![](https://cdn-images-1.medium.com/max/1024/1*dEm3_zIEemJqBBbOAxjOYg.png)

Ainsi que PM2 :

![](https://cdn-images-1.medium.com/max/784/1*6E5IOoEVjhR66W_tzPSb4Q.png)

Je peux donc raccorder mon instance au dashboard offert par Keymetrics dans PM2.io :

![](https://cdn-images-1.medium.com/max/1024/1*GwXXPwoYsfxfN9qpstjvsg.jpeg)

Je clone le dépôt sur GitHub du sempiternel démonstrateur FC :

![](https://cdn-images-1.medium.com/max/1024/1*o3naGRKxIPww3u_j3KlKCg.png)

et de lancer localement le démonstrateur avec PM2 :

![](https://cdn-images-1.medium.com/max/1024/1*g-Ouw6ykJxxyd1C3BtVOkg.jpeg)

![](https://cdn-images-1.medium.com/max/486/1*UabJn4CCzYHR3CAWN7W-dQ.png)<figcaption>fcdemo3.sh</figcaption>

Et il devient accessible :

![](https://cdn-images-1.medium.com/max/1024/1*rOCpu9Ucgd8J05-XYVvOEw.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*3Q3UGipbPrygQ-AMVyre-w.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*n8WEOA5PWXWYhQN1kabUKQ.jpeg)

J’installe Go sur mon instance en construisant son binaire :

[linux-on-ibm-z/docs](https://github.com/linux-on-ibm-z/docs/wiki/Building-Go)

![](https://cdn-images-1.medium.com/max/1024/1*1HdPDnDcupRsK4371pibtw.png)

Ce qui me permet également de construire la binaire pour la dernière version en développement de Caddy 2 :

[caddyserver/caddy](https://github.com/caddyserver/caddy#build-from-source)

![](https://cdn-images-1.medium.com/max/1024/1*GbcxKUStyUH9hWFlhDZdEQ.png)

Je peux tester le bon fonctionnement de Caddy 2 avec notamment ce mode expérimental avec HTTP/3 (comme dans le précédent article) :

[Exécuter son site web avec FreeBSD, HTTP/3 et Caddy 2 dans DigitalOcean …](https://dev.to/deep75/executer-son-site-web-avec-freebsd-http-3-et-caddy-2-dans-digitalocean-3oo7)

![](https://cdn-images-1.medium.com/max/1024/1*pw-RaJ_dGNO0w-S7TU6joA.png)

via ce fichier Caddyfile :

![](https://cdn-images-1.medium.com/max/790/1*CPhrqNTMdk086OB4k6LY0A.png)

avec un bon retour :

![](https://cdn-images-1.medium.com/max/1024/1*u0_203HXH6pv0ove577wiQ.png)

J’en profite donc pour mettre en oeuvre GitHub Actions dans le dépôt du démonstrateur FC afin de générer un déploiement sur cette instance à chaque modification de code détectée. Pour cela j’utilise à partir du marketplace offert par GitHub, “SSH for GitHub Actions” :

[SSH Remote Commands - GitHub Marketplace](https://github.com/marketplace/actions/ssh-remote-commands)

![](https://cdn-images-1.medium.com/max/656/0*fpp17DZDq5q6pSry.png)

Cela passe par la création du workflow suivant en YAML :

[Configuring a workflow](https://help.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow)

![](https://cdn-images-1.medium.com/max/1024/1*Z-YerC-yaJ0VV639Rk1J3Q.png)<figcaption>.github/workflows/nodejs.yml</figcaption>

Les identifiants sont stockées sous la forme de secrets dans le dépôt GitHub.

[Creating and storing encrypted secrets](https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets)

Rapide test par modification d’un fichier du dépôt GitHub dans la branche Master avec ce nouveau Dockerfile adapté à ce type d’environnement :

![](https://cdn-images-1.medium.com/max/722/1*U5IOLKl-QHxNFBtGmWhFwg.png)

Le changement est détecté et engendre l’exécution du workflow :

![](https://cdn-images-1.medium.com/max/1024/1*zcse5VsrValfxJNlxpRD8g.jpeg)

qui se termine correctement :

![](https://cdn-images-1.medium.com/max/1024/1*xRQthRKigitRpsSXzwDb8Q.jpeg)

Le workflow après connection SSH à l’instance sur LinuxONE a engendré le déploiement du démonstrateur FC via ce simple script shell :

![](https://cdn-images-1.medium.com/max/756/1*_x_4zdSNB3c3HcbWoiofpg.png)

![](https://cdn-images-1.medium.com/max/1024/1*8vIqDB551yVxG-V_q0pl9w.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*lDd8WFF5mo4L1Intxnu-JQ.jpeg)

Et effectivement le démonstrateur FC est actif et exposé via Caddy 2 et HTTP/3 :

![](https://cdn-images-1.medium.com/max/1024/1*NPWZ_SkEJJvTOxIhfxxZdQ.jpeg)

On voit la connection sur le port 443 en UDP générée par Caddy 2 :

![](https://cdn-images-1.medium.com/max/1024/1*GL7ks1LBUXJEV7Tg20k4VA.jpeg)

Sur mon poste, en utilisant la dernière version en developpement du navigateur Google Chrome, je peux verifier que le démonstrateur FC répond correctement en HTTP/3 :

![](https://cdn-images-1.medium.com/max/1024/1*ZUzI2S0NlS-FAZG_F2PNwg.png)

![](https://cdn-images-1.medium.com/max/1024/1*BfM0XhFD8l7dIff-gpXzjg.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*iIF3EUn5OYYscdz1G-hbHw.jpeg)

Pour rappel, GitHub a annoncé que les dépôts privés avec un nombre illimité de collaborateurs sont maintenant disponibles pour tous les comptes GitHub. Auparavant, trois développeurs au maximum pouvaient accéder à un dépôt privé gratuitement. Ainsi, toutes les fonctionnalités de base sont accessibles pour l'ensemble des utilisateurs ...

[GitHub is now free for teams](https://github.blog/2020-04-14-github-is-now-free-for-teams/)

![](https://cdn-images-1.medium.com/max/707/0*EvRVGlhDu2FT1CNe.jpg)

À suivre ! …