DEV Community

Cover image for Builds desde Unity en la nube(sin salir de GitHub) ☁️🔧 [2/3]
Marlow Haspert
Marlow Haspert

Posted on

2 1

Builds desde Unity en la nube(sin salir de GitHub) ☁️🔧 [2/3]

Introducción

En el post anterior de esta serie, vimos una introduccion a las GitHub Actions y tambien maquetamos lo que sera nuestro workflow para esta serie de posts.

Asi habia quedado:

name: Build project
on:
workflow_dispatch:
jobs:
buildForWebGL:
name: Build for WebGL
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Extract branch name
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: extract_branch
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
lfs: true
- name: Cache
uses: actions/cache@v2
with:
path: Library
key: Library-WebGL
restore-keys: Library-
- name: Start Build
uses: game-ci/unity-builder@v2
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
with:
targetPlatform: WebGL
versioning: Semantic
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: build-${{ steps.date.outputs.date }}-${{ github.run_id }}
path: build/WebGL
view raw build.yml hosted with ❤ by GitHub

Modelo mental

  • Agregaremos dos nuevos jobs a nuestro workflow. Estos se ejecutaran luego del build.
  • El primero de esos jobs, copia la build que expusimos como artifact en el paso anterior a un servidor FTP.
  • El segundo job, manda un mensaje a Discord una vez que la copia al FTP se realizo correctamente.

Manos a la obra

Como ya nos familiarizamos con el pipeline de las GitHub Actions en el post anterior, voy a dejar mas abajo el esqueleto del workflow terminado exceptuando el detalle del codigo para el job de build.

name: Build project
on:
workflow_dispatch:
pull_request:
types: [closed]
jobs:
buildForWebGL: [...]
uploadToFTP:
name: Upload to FTP
runs-on: ubuntu-latest
needs: buildForWebGL
steps:
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Extract branch name
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: extract_branch
- name: Download build artifact
uses: actions/download-artifact@v1
with:
name: build-${{ steps.date.outputs.date }}-${{ github.run_id }}
path: build/WebGL
- name: Upload via FTP
uses: isthatcentered/dist-to-ftp@master
with:
host: ${{ secrets.FTP_SERVER }}
user: ${{ secrets.FTP_USER }}
password: ${{ secrets.FTP_PASSWORD }}
path: build/WebGL
into: ${{steps.extract_branch.outputs.branch}}\${{ steps.date.outputs.date }}
discordMessage:
name: Send message to discord
runs-on: ubuntu-latest
needs: uploadToFTP
steps:
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Extract branch name
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: extract_branch
- name: Send Discord notification
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@master
with:
args: 'The project {{ EVENT_PAYLOAD.repository.full_name }} has been deployed. New Build URL: https://example.com/${{steps.extract_branch.outputs.branch}}/${{ steps.date.outputs.date }}/WebGL'
view raw workflow.yml hosted with ❤ by GitHub

Copiar al FTP

En este caso, usaremos el action dist-to-ftp que se encuentra disponible en el Marketplace de GitHub Actions.

Para guardar de forma segura la URL de nuestro FTP, asi como sus accesos usaremos secrets. Los secretos pueden configurarse en GitHub a nivel de repositorio en Settings -> Secrets -> Actions.

Listado de secrets en un repositorio

Mandar un mensaje a Discord

De nuevo usaremos una accion disponible en el marketplace, esta vez action-discord. Leyendo su documentacion nos encontramos con que primero debemos configurar un WebHook para un canal en nuestro servidor Discord. Esto puede hacerse siguiendo los pasos dados en su propia documentacion.

Una vez que creamos nuestro webhook, guardaremos nuevamente estos valores como secrets a nivel del repositorio.

Wrap up

Si vamos a la pestaña de Actions tal y como en el post anterior, podemos correr nuevamente el workflow y chequear su ejecucion.
Si todo resulto bien, cuando el build se realice y se copie exitosamente al FTP, recibiremos un mensaje en nuestro canal de discord con un link que apunta a la nueva version.


La imagen de cabecera es de Natasha Remarchuk

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay