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: