DEV Community

Cover image for Desplegar theme de Ghost con GitHub Actions
Daniel J. Saldaña
Daniel J. Saldaña

Posted on • Originally published at danieljsaldana.dev on

Desplegar theme de Ghost con GitHub Actions

Vamos calentando motores y comenzamos con una automatización, la cual nos abre las puertas a una toma de contacto con Github Actions. Básicamente lo que nos permite es que de forma manual y en mi caso semanal, hagamos un checkout del repositorio que nosotros le digamos de GitHub. Una vez realizado, desplegará los cambios de nuestra plantilla en nuestra Ghost. Una vez el despliegue finalicé con éxito, se lanzará un escáner a nuestra web para ofrecernos un reporte detallado para saber el impacto de los cambios en Pagespeed de Google.

¡Ahora si podemos decir que comience el tutorial!

Clonando el Repositorio

Lo primero que vamos a hacer es clonar el repositorio que os dejaré a continuación.

GitHub - danieljesussp/deploy-ghost-theme

Una vez hayamos realizado nuestro Fork tendremos 3 ficheros, solo tendremos que realizar unos pequeños cambios en los inputs de uno de nuestros ficheros. Ahora bien, hablaremos un poco de cada fichero. El fichero ci.yml, será el principal, en el cual llamaremos al resto de trabajos (jobs) que queremos invocar. Como ya dije, este pipeline es muy sencillo y por ahora solo tendremos dos.

name: CI + CD

on:
  # schedule:
  # - cron: 0 12 * * 6
  workflow_dispatch:
    inputs:
      lighthouse:
        description: Scan web with lighthouse
        required: false
        default: true
        type: boolean

jobs:
  deploy:
    name: Deploy
    uses: ./.github/workflows/deploy.yml
    secrets:
      GHOST_ADMIN_API_URL: ${{ secrets.GHOST_ADMIN_API_URL }}
      GHOST_ADMIN_API_KEY: ${{ secrets.GHOST_ADMIN_API_KEY }}

  scan:
    name: Check action
    needs: [deploy]
    uses: ./.github/workflows/lighthouse.yml

Enter fullscreen mode Exit fullscreen mode

Seguimos con deploy.yml, ejecutará el checkout del repositorio que le digamos y posteriormente lo desplegará. Para no escribir sobre algo que ya está documentado en la web de Ghost.

name: Theme Ghost

on:
  workflow_call:
    secrets:
      GHOST_ADMIN_API_URL:
        required: false
      GHOST_ADMIN_API_KEY:
        required: false

env:
  REPOSITORY: eddiesigner/liebling

jobs:
  theme-ghost:
    runs-on: ubuntu-latest
    steps:
      - name: ☁️ checkout repository
        uses: actions/checkout@v3
        with:
          repository: ${{ env.REPOSITORY }}

      - name: Deploy Ghost Theme
        uses: TryGhost/action-deploy-theme@v1.5.0
        with:
          api-url: ${{ secrets.GHOST_ADMIN_API_URL }}
          api-key: ${{ secrets.GHOST_ADMIN_API_KEY }}

Enter fullscreen mode Exit fullscreen mode

Ahora iremos al último fichero lighthouse.yml. En este jobs usamos Lighthouse. Gracias a esta contribución, podemos realizar un escaneo y obtener un informe de los exigentes requerimientos que Google nos pide en Pagespeed.

name: Lighthouse check

on:
  workflow_call:

env:
  DOMAIN: https://blog.danieljsaldaña.com

jobs:
  lighthouse:
    runs-on: ubuntu-latest
    steps:
      - name: ☁️ checkout repository
        uses: actions/checkout@v3

      - name: Create temporary directory
        run: mkdir -p ${{ github.workspace }}/lighthouse/artifacts

      - name: Lighthouse
        uses: foo-software/lighthouse-check-action@master
        with:
          outputDirectory: ${{ github.workspace }}/lighthouse/artifacts
          urls: ${{ env.DOMAIN }}

      - name: Upload artifacts
        uses: actions/upload-artifact@master
        with:
          name: Lighthouse reports
          path: ${{ github.workspace }}/lighthouse/artifacts

Enter fullscreen mode Exit fullscreen mode

Top comments (0)