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) lo vamos a hacer 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 hacer el despliegue necesitamos guardar el token que hemos obtenido de surge para que nos autentifiquemos. veamos como 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 configuraramos 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 en el WebHook :

En GitHub comprobamos que le esta mandando la petición al WebHook :