lunes, 31 de diciembre de 2018

Hello Jenkins: Como root

En el post Hello Jenkins, exploré cómo podría automatizar el deploy de un site estático simple con ayuda de Jenkins.

Este site estático está alojado en mi directorio web personal ~/public_html. Para que Jenkins pudiera hacer pull allí, fue necesario que tuviera derechos sobre los archivos de ese directorio, así que opté por agregarlo a mi grupo de usuario.

Ahora exploro cómo sería si quisiera que Jenkins pudiera hacer pull en el directorio web /var/www.

En mi Jenkins, proyecto hello-jenkins, Configuration, Source Code Management:

  • En Aditional Behaviours, pruebo agregar:
    • Chek out to a sub-directory
      • Local sub-directory for repo:
        /var/www/html/demos/hello-jenkins/
Una prueba muestra un error de acceso al directorio. Probé agregar jenkins al grupo sudo y tambien visudo, pero no pude solucionarlo.

  • $ sudo usermod -a -G sudo jenkins
  • $ sudo visudo
Opto por agregar el siguiente script en Build:
  • echo "hello-jenkins build"
  • cd /var/www/html/demos/hello-jenkins
  • sudo git pull
Hago la prueba y funciona como se espera. Se hace pull al hello-jenkins en mi directorio personal public_html/ y tambien en el directorio web /var/www/.

domingo, 30 de diciembre de 2018

Hello Jenkins


En días recientes estuve viendo un poco de Continuous Integration / Continuous Deployment (CI/CD), con Jenkins.

La idea que he captado es que Jenkins corre en el servidor donde normalmente ejecutamos a mano los pasos para deployar un proyecto. Luego configuramos las cosas para que Jenkins las haga por nosotros.

Por ejemplo, puedo tener en mi hosting un site estático hello-jenkins, cuyo repositorio está en GitHub. Luego que hago push en el repo desde mi máquina local debo entrar a la consola de mi hosting y hacer pull. Quizás alguna cosa más, como bower o npm, dependiendo de la complejidad del proyecto.

Empezaré con un simple site estático llamado hello-jenkins.

Ahora, haré un cambio y un deploy manual.
  • En mi local, agrego un title, commit y push
  • En mi hosting, hago pull
    • Lo pesado de esta tarea es cuando no estoy logueado a la consola. Es necesario hacer ssh, ubicar la carpeta y hacer pull.
    • Si Jenkins vive en este servidor, podría hacerlo por mi ante una señal. Por ejemplo, cuando se hace un push en GitHub.
  • https://rulokoba.me/~rulo/demos/hello-jenkins/
En el hosting, tengo instalado Jenkins siguiendo la guía de:
En mi Jenkins, creo el job hello-jenkins:
  • Elijo create new jobs
  • Enter an item name: hello-jenkins
  • Elijo Freestyle project
  • OK
  • En la sección de consiguración:
    • Source Code Management
      • Git
        • Repository URL: https://github.com/akobashikawa/hello-jenkins.git
        • Credentials: none
        • Additional Behaviours
          • Check out to a sub-directory
            • Local sub-directory for repo:
              /home/rulo/public_html/demos/hello-jenkins/
            • Para que jenkins pueda escribir en este directorio se le puede agregar al grupo del usuario y reiniciar jenkins:
              • $ sudo usermod -a -G rulo jenkins
              • $ sudo systemctl stop jenkins
              • $ sudo systemctl start jenkins
    • Build Triggers
      • GitHub hook trigger for GITScm polling
    • Build (opcional)
      • Execute shell
        • Command
          • echo "hello-jenkins build"
En el repo de GitHub, Settings:
  • Webhooks
    • Add webhook
      • Payload URL: http://myjenkins_url/github-webhook/
        • Es importante el trailing / al final
      • Content type: application/json
      • Which events would you like to trigger this webhook?
        • [x] Let me select individual events.
          • [x] Pushes
            • [x] Pull requests
      • [x] Active
      • Add webhook
      • Es importante que GitHub pueda encontrar a Jenkins ya configurado
Para probar, manualmente:
  • En mi Jenkins, en el projecto hello-jenkins, wlijo Build Now
  • En Build History aparecerá un nuevo item numerado, y le hago click.
  • Elijo Console Output para ver la salida
Para probar el build automático:
  • En mi local, hago un cambio, commit y push al repo
  • En Build History aparecerá un nuevo item numerado, y le hago click.
  • Elijo Console Output para ver la salida

jueves, 13 de diciembre de 2018

Links Diciembre 2018


Links Noviembre 2018


  • Mental Models: The Best Way to Make Intelligent Decisions (109 Models Explained)
    • Un modelo mental es lo que nos permite entender el mundo. Es cómo simplificamos la complejidad.
    • La calidad de nuestros pensamientos es proporcional al número de modelos que manejamos.
    • La mayoría de nosotros somos especialistas y manejamos un reducido número de modelos mentales. Pero considerar un conjunto mayor de modelos nos permite tener mayores perspectivas y un entendimiento más completo de algo.
    • Y más posts interesantes de Farnam Street.
  • The Work Required to Have an Opinion
    • Sólamente cuando puedes argumentar contra tí mismo mejor de lo que los otros pueden, has hecho el trabajo para tener una opinión.
    • Y más posts interesantes de Farnam Street.

jueves, 4 de octubre de 2018

Google Open Source, Device Orientation API


Google Docs: Pegar texto como tabla

Una columna

de:
alfa
beta
gamma

a:

alfa
beta
gamma
  • Copiar el texto en Google Sheet.
  • Copiar el bloque de texto de Google Sheet
  • En Google Docs, insertar una tabla de 1 x 1 y pegar lo copiado de Google Sheet

Más columnas

de:
alfa, 1
beta, 2
gamma, 3

a:

alfa1
beta2
gamma3
  • Copiar el texto en Google Sheet.
    • En la esquina inferior izquierda del pegado aparece el icono de pegar.
    • Hacerle click y elegir "Divir texto en columnas...", detectar automáticamente
  • Copiar el bloque de texto de Google Sheet
  • En Google Docs, insertar una tabla de 1 x 1 y pegar lo copiado de Google Sheet

martes, 18 de septiembre de 2018

Guía Python Javascript, CSS Doodle, Snap


jueves, 13 de septiembre de 2018

Shards Vue, JS patterns


  • Addy Osmani)Shards
    • A free and modern UI toolkit for web makers based on the popular Bootstrap 4 (final) framework.
  • Shards Vue
    • A high-quality & free Vue UI kit featuring a modern design system with dozens of custom components.
  • Eloquent Javascript (Marijn Haverbeke)
    • This is a book about JavaScript, programming, and the wonders of the digital. You can read it online here.
  • Learning JavaScript Design Patterns (Addy Osmani)
    • Design patterns are reusable solutions to commonly occurring problems in software design. They are both exciting and a fascinating topic to explore in any programming language.
  • JS Patterns (Shi Chuan)
    • A JavaScript pattern and antipattern collection that covers function patterns, jQuery patterns, jQuery plugin patterns, design patterns, general patterns, literals and constructor patterns, object creation patterns, code reuse patterns, DOM and browser patterns (upcoming).

Lecturas populares