Taller 2 Comprobación de HTML5 válido y despliegue en surge.sh (test y deploy)
En este ejercicio queremos desplegar una página HTML5 en el servicio surge.sh; además, queremos comprobar si el código HTML5 es válido. Estas dos operaciones: comprobar si el HTML5 es válido (test) y el despliegue en surge.sh (deploy), las realizaremos con Jenkins de forma automática (IC y DC). Recuerda que el repositorio es https://github.com/josedom24/ic-html5.
Como vimos en el ejemplo 2, para realizar el despliegue necesitamos guardar el token obtenido de surge para autentificarnos. Veamos cómo trabajar con credenciales en Jenkins.
Crear credenciales
Podemos crear varios tipos de credenciales: usuario y contraseña, credenciales ssh,… Nosotros vamos a crear un Secret text para guardar el token de surge.
debian@jenkins:~$ sudo apt install npm
debian@jenkins:~$ sudo npm install -g surge
debian@jenkins:~$ surge token
Login (or create surge account) by entering email & password.
email: javierasping@gmail.com
password:

pipeline {
environment {
TOKEN = credentials('SURGE_TOKEN')
}
agent {
docker { image 'josedom24/debian-npm'
args '-u root:root'
}
}
stages {
stage('Clone') {
steps {
git branch:'master',url:'https://github.com/javierasping/taller2_ic-html5.git'
}
}
stage('Install surge')
{
steps {
sh 'npm install -g surge'
}
}
stage('Deploy')
{
steps{
sh 'surge ./_build/ josedom24.surge.sh --token $TOKEN'
}
}
}
}
Instalamos y configuramos Ngrok con nuestro token:
debian@jenkins:~$ curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
| sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
| sudo tee /etc/apt/sources.list.d/ngrok.list && sudo apt update && sudo apt install ngrok
debian@jenkins:~$ ngrok config add-authtoken 2d2CfEVHT
Authtoken saved to configuration file: /home/debian/.config/ngrok/ngrok.yml
Indicamos en Jenkins que vamos a utilizar un WebHook:

Lanzo un ejemplo de HTML correcto y otro con errores:


Comprobamos que los cambios en el repositorio son recibidos por el WebHook:

En GitHub comprobamos que se está enviando la petición al WebHook:

