Desarrollo Colaborativo de Proyectos de Aprendizaje y Enseñanza de Tecnologías en la Nube
En esta práctica aprenderemos a usar una IDE en la nube (repl.it) y seguiremos familiarizandonos con el generador de web sites estáticos (Jekyll).
Siga estos pasos:
JekyllBlog-aluXXX
bash main.sh
jekyll
, construir las páginas web y arrancar un servidor. La página debería aparecer en la ventana superior derechaindex.html
y compruebe que se reflejan los cambios al refrescar la página<F1>
y escriba shell
. Luego elige open shell
Share
arriba a la derecha). Puede hacerlo especificando el usuario o mediante un un enlaceJekyllBlog-aluXXX
(sustituya aluXXX
por su usuario GitHub)+
, and create a branch named development
commit & push
merge
the code back into master
, you need to create a Pull request
. Go to your GitHub repositoryCompare and pull request
, and write a description of the changeCreate pull request
buttonmaster
branch, you should see a new button appearPull <-
to update your code. Repl.it will update your code to reflect your repo, and you can continue to work!stop
o si es usted de la vieja guardia, en la terminal en la que está ejecutándose Jekyll pulse Ctrl-C
site
con todos los ficheros en él.
Puede hacerlo desde la IDE de replit: To remove the folder site
, click the icon with 3 dots on the very right and click the delete
button
O bien si es usted un hacker puede usar la terminal:
$ pwd # pwd nos dice en que carpeta estamos
/home/runner/JekyllBlog/site
$ cd .. # nos cambiamos a la carpeta que contiene a esta
$ rm -fR site # rm sirve para borrar. La opción -R indica que se borren recursivamente todas las carpetas dentro de site
Clone el repositorio https://github.com/barryclark/jekyll-now.git en el directorio site
:
git clone https://github.com/barryclark/jekyll-now.git site
Cloning into 'site'...
remote: Enumerating objects: 1300, done.
remote: Total 1300 (delta 0), reused 0 (delta 0), pack-reused 1300
Receiving objects: 100% (1300/1300), 8.17 MiB | 12.47 MiB/s, done.
Resolving deltas: 100% (717/717), done.
Files
, es posible que tenga que refrescar en el navegador la página para que se actualicenBorre la carpeta oculta .git
en el repo clonado:
$ cd site
$ rm -fR .git
¿Que estamos haciendo? Al borrar la carpeta .git
estamos borrando todo el histórico del control de versiones del repo barryclark/jekyll-now
. Con esto la carpeta site
deja de ser un repo para convertirse en una simple carpeta
Vuelva a correr el servidor Jekyll:
$ bash main.sh
Please Wait....
jekyll 4.1.1
Configuration file: /home/runner/JekyllBlog/site/_config.yml
Source: /home/runner/JekyllBlog/site
Destination: /home/runner/JekyllBlog/site/_site
Incremental build: disabled. Enable with --incremental
Generating...
done in 0.198 seconds.
Auto-regeneration: enabled for '/home/runner/JekyllBlog/site'
Server address: http://0.0.0.0:8080/
Server running... press ctrl-c to stop.
Refresque la página del blog:
debería verse parecida a esta imagen
Ahora pare el servidor con Ctrl-C
y edite el fichero site/_config.yml
. Cambie la entrada name:
para que contenga su nombre.
Cambie el avatar
o footer-link.github
¿Que ocurre cuando refresca? ¿Se ven los cambios?
Vuelva a ejecutar jekyll.
¿Que ocurre?.
NOTA: Jekyll vigila los cambios que hacemos y refresca el web site cada vez que ocurre uno. Sin embargo, no vigila el fichero _config.yml
. Es por eso que debemos rearrancarlo
_layouts
¿Que es un layout?
_layouts
._site/_layouts/default.html
y busque por la aparición de la palabra site.name
. El lenguaje que estamos viendo es una mezcla de HTML con un lenguaje de templates que se conoce como Liquid ...
<a href="{ { site.baseurl } }/" class="site-avatar"><img src="{ { site.avatar } }" /></a>
<div class="site-info">
<h1 class="site-name"><a href="{ { site.baseurl } }/">{ { site.name } }</a></h1>
<p class="site-description">{ { site.description } }</p>
</div>
...
posts.html
y page.html
son layouts que se envuelven en el layout default.html
_posts
Observe en el fichero default.html
la línea:
{ % include svg-icons.html % }
¿Que hace un include?
_includes/svg-icons.html
¿Que hacen las sentencias if?_posts
y vea los ficheros que hay allí. ¿Que son los posts?
Edite el fichero index.html
para entender porque se actualiza con el nuevo post:
<div class="posts">
{ % for post in site.posts % }
<article class="post">
<h1><a href="{ { site.baseurl } }{ { post.url } }">{ { post.title } }</a></h1>
<div class="entry">
{ { post.excerpt } } ...
</div>
<a href="{ { site.baseurl } }{ { post.url } }" class="read-more">Read More</a>
</article>
{ % endfor % }
excerpt
del post en index.html
usando un filtro Liquid como slice. You can play your ideas at JumpSeller’s Liquid SandBox
excerpt
variable on a post. By default this is the first paragraph of content in the post404.md
¿Cual es la función del fichero 404.md?
[click here](does-not-exist.md)
. ¿Que ocurre cuando hacemos click en el enlace?. Modifique el fichero 404.md
Observe el uso de site.baseurl
para los enlaces:
[<img src="{ { site.baseurl } }/images/404.jpg" alt="Constructocat by https://github.com/jasoncostello" style="width: 400px;"/>
¿Cual es la razón para usar site.baseurl
?
El config.yml
de estos apuntes contiene esta línea:
baseurl: '/introduccion'
Note que los apuntes son servidos desde https://ull-mfp-aet-2021.github.io/introduccion/tema0-introduccion/practicas/p04-t0-aprender-jekyll/
404.md
. ¿Que es un permalink?
style.scss
En su repl.it, asegúrese que Jekyll ha generado correctamente el web site en la carpeta _site
.
Después nos posicionamos en _site
:
cd ~/p03-t0-aprender-ide/site/_site
Añadamos un fichero .nojekyll
vacío (See Bypassing Jekyll on GitHub Pages by Tom Preston-Werner)
touch .nojekyll
Convertimos _site
en un repo git. Esto crea la carpeta oculta .git
:
git init .
Después añadimos todos los ficheros en _site
al repo
git add .
Antes de hacer un commit tenemos que configurar el programa git
declarando nuestra identidad para el rastreo de versiones:
git config --global user.email "aluXXX@ull.edu.es"
git config --global user.name nombre-aluXXX
Cuando consultemos la historia del proyecto - por ejemplo con el comando git logs
- este es el nombre que aparecerá asociado a los commits que hagamos.
Ahora confirmamos nuestros cambios:
git commit -am '_site converted to repo'
A continuación vamos a establecer el remoto. Elegimos la URL con https:
git remote add origin https://github.com/ULL-MFP-AET-2021/p03-t0-aprender-ide-aluXXX.git # Apuntamos el remoto al repo de la entrega
Cada vez que empujemos a GitHub se nos pedirán el usuario y la clave de github. Esto puede resultar pesado. Para evitarlo y que sólo ocurra la primera vez, le indicamos a git que la primera vez que nos identifiquemos con GitHub almacene el usuario y la clave:
git config credential.helper cache
o bien
git config credential.helper store # Para que no nos esté preguntando la password cada vez
Credential helpers are external programs from which Git can request both usernames and passwords; they typically interface with secure storage provided by the OS or other programs.
Credential helpers are in two forms:
git credential cache
Vea la documentación de git credentials para saber más sobre este punto.En este momento estamos en la rama master
:
~/.../site/_site$ git branch
* master
Ahora hacemos un empuje al remoto de la rama master
. Esto creará la rama master
en el remoto (recuerde que GitHub trabaja ahora con la rama main
como rama principal)
git push -u --force origin master
Nos pedirá el usuario y clave de GitHub y las almacenará.
En el navegador, nos situamos en el tab del repo de GitHub, reconfiguramos en la sección settings
las github-pages del repo para que tire de la rama master
y el directorio raíz.
Visite la web. Algo va mal. ¿Que ocurre?. Abra las herramientas del desarrollador en su navegador. En la cónsola verá algún mensaje de error. Asegúrese de entender que está ocurriendo.
Resuelva el problema añadiendo en _config.yml
una entrada como esta:
baseurl: "/p03-t0-aprender-ide-aluXXXX"
Vuelva a regenerar _site
y confirme los cambios y envíelos:
git commit -am 'fixed portability to github pages using site.baseurl'
git push
Refresque la página de despliegue ¿Se ve bien ahora?
F1
and write shell
To open a browser in the Repl.it machine:
$ browse --help
xdg-open - opens a file or URL in the user's preferred application
Synopsis
xdg-open { file | URL }
xdg-open { --help | --manual | --version }
Use 'man xdg-open' or 'xdg-open --manual' for additional info.
$ browse https://github.com/cli/cli/releases