GitHub Actions
Esta sección asume que tienes un conocimiento básico de GitHub Actions. Puedes obtener más información sobre la creación de flujos de trabajo aquí.
Creando el Flujo de Trabajo
El siguiente ejemplo asume que estás compilando para Windows, pero también puedes adaptar el flujo de trabajo para otras plataformas.
Primero crea un flujo de trabajo en tu repositorio en .github/workflows con la extensión .yml, por ejemplo
.github/workflows/main.yml. Este flujo de trabajo de ejemplo se ejecutará cuando se envíe código a la rama main. Consulta la
documentación vinculada anteriormente si prefieres un activador diferente.
name: Deploy to GitHub Releases
on:
push:
branches:
- main
Crea el trabajo que se ejecutará cuando se active el activador. Este ejemplo se ejecutará en una máquina windows-latest ya que estamos
empaquetando para Windows.
jobs:
deploy-to-github-releases:
runs-on: windows-latest
steps:
Compilando la Aplicación
Primero, agrega un paso para hacer checkout de tu repositorio y obtener todos los archivos necesarios para compilar tu aplicación.
- name: Checkout Repository
uses: actions/checkout@v4
Necesitarás el número de versión de tu lanzamiento para empaquetar con Velopack. Hay muchas formas de manejar esto.
Si estás usando variables de GitHub Action para esto, puedes omitir este paso. Este ejemplo extraerá el
número de versión de la etiqueta <Version> en el .csproj de la aplicación. El shell bash se define aquí
ya que este comando fallaría al ejecutarse en Windows de lo contrario. El comando funciona usando una expresión
regular con grep para extraer el valor entre <Version> y </Version> en el archivo csproj, y almacenarlo en una
variable llamada version en la ejecución actual del flujo de trabajo.
- name: Get Version from Project File
id: get-version
shell: bash
run: echo "version=$(grep -oE '<Version>[^<]+' MyApplication/MyApplication.csproj | sed 's/<Version>//')" >> $GITHUB_OUTPUT
A continuación, agrega un paso para instalar .NET para que la aplicación pueda compilarse. Establece dotnet-version a la versión requerida por
tu aplicación.
- name: Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
Compila tu aplicación. Este ejemplo lo hará publicando la aplicación en una carpeta de manera autocontenida.
Puedes publicar sin el indicador de autocontenido si usas Velopack para instalar dichas dependencias
(consulta Bootstrapping para más detalles). Este comando usa el indicador -c para establecer la
configuración de compilación en modo Release, -o para establecer el directorio de salida en publish, -r para establecer el tiempo de ejecución
en win-x64 para distribuir en Windows de 64 bits, y --self-contained para publicar el tiempo de ejecución de .NET con la
aplicación. Adapta este comando a tus necesidades. Puedes obtener más información sobre
dotnet publish en la Documentación de Microsoft.
- name: Publish Application
run: dotnet publish MyProject/MyProject.csproj -c Release -o publish -r win-x64 --self-contained true
Implementando el Lanzamiento
Finalmente, usa Velopack para empaquetar tu aplicación e implementar tu lanzamiento. Crea un paso que ejecute varios comandos en la línea de comandos.
Analicemos lo que hace cada línea.
- Instala el Velopack CLI.
- Descarga el último lanzamiento de tu repositorio. Esto es necesario para que Velopack pueda crear el paquete delta entre el lanzamiento actual y el nuevo, además de rellenar los archivos de lanzamientos.
- Invoca el Velopack CLI para empaquetar tu aplicación.
-u(alias de--packId) establece tu id de aplicación único,-v(alias de--packVersion) llama a la variableversionasignada anteriormente, a la que se accede usando eliddel paso que la asignó (get-version), y-p(alias de--packDir) apunta al directoriopublishque se usó en el paso anterior. Para más información sobre el Velopack CLI y qué indicadores están disponibles para el comandopack, ver aquí. - Crea un nuevo lanzamiento en tu repositorio y carga los archivos necesarios automáticamente.
Si tu repositorio es privado, deberás proporcionar a Velopack un token OAuth al usar los comandos vpk download
y vpk upload. Simplemente agrega lo siguiente a ambos comandos: --token ${{ secrets.GITHUB_TOKEN }}.
Para permitir que github cargue los archivos de lanzamiento usando tu GITHUB_TOKEN, agrega lo siguiente al inicio de tu archivo yml
permissions:
contents: write
- name: Create Velopack Release
run: |
dotnet tool install -g vpk
vpk download github --repoUrl https://github.com/${{ github.repository }}
vpk pack -u MyUniqueIdentifier -v ${{ steps.get-version.outputs.version }} -p publish
vpk upload github --repoUrl https://github.com/${{ github.repository }} --publish --releaseName "MyProject ${{ steps.get-version.outputs.version }}" --tag v${{ steps.get-version.outputs.version }}
Alternativamente, puedes ejecutar vpk sin instalarlo globalmente usando el comando dnx. Aquí --version <vpk-version> selecciona qué versión de la herramienta vpk ejecutar (esto no está relacionado con -v, que establece la versión de tu aplicación). Asegúrate de usar la misma versión de vpk que el paquete Velopack referenciado en tu aplicación:
- name: Create Velopack Release
run: |
dnx vpk --version <vpk-version> download github --repoUrl https://github.com/${{ github.repository }}
dnx vpk --version <vpk-version> pack -u MyUniqueIdentifier -v ${{ steps.get-version.outputs.version }} -p publish
dnx vpk --version <vpk-version> upload github --repoUrl https://github.com/${{ github.repository }} --publish --releaseName "MyProject ${{ steps.get-version.outputs.version }}" --tag v${{ steps.get-version.outputs.version }}
Reemplaza <vpk-version> (p. ej. 1.0.0) con la versión del paquete Velopack que estás usando en tu aplicación.