Implementación de la función GCP: archivo zip de la compilación local pero no archivo zip de Github Action

Implementación de la función GCP: archivo zip de la compilación local pero no archivo zip de Github Action

Estoy intentando tener una acción de github que cree un archivo zip con el código fuente de la función de código y lo cargue en Google Cloud Storage.

Luego tengo un repositorio de Terraform que implementa la función de nube usando este archivo zip.

La cuestión es que cuando comprimo esos archivos en mi entorno local (WSL Ubuntu 18-04) y subo el archivo zip al mismo almacenamiento, puedo continuar con la implementación de Terraform y todo va bien.

zip ../0.0.9.zip *

Sin embargo, el mismo comando ejecutado desde Github Action crea un zip, lo envía a Cloud Storage como se esperaba, también puedo descargarlo y abrirlo, pero el proceso de Cloud Build para la implementación de funciones en la nube no funciona. No puedo entender cuál es la diferencia entre ellos.

Aquí está el flujo de trabajo de Github Action:

name: Function Deploy

on:
  push:
    tags:
      - '*'

jobs:
  build:
    name: 'Build & Push'
    runs-on: ubuntu-latest

    defaults:
      run:
        shell: bash

    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Using Node
      uses: actions/setup-node@v2
      with:
        node-version: "16.x"

    - name: Installing Node Modules
      run: npm install

    - name: Building
      run: npm run build

    - name: Copy files
      run: |
        cp package.json ./lib/package.json
        cp package-lock.json ./lib/package-lock.json
        cp cloudbuild.yaml ./lib/cloudbuild.yaml

    - name: Zipping Version
      run: |
        cd lib
        zip ../${{ github.ref_name }}.zip *
        cd ..

    - name: Auth to GCP
      uses: google-github-actions/auth@v1
      with:
        credentials_json: ${{ secrets.GOOGLE_CREDENTIALS }}
    - name: Uploading
      uses: google-github-actions/upload-cloud-storage@v1
      with:
        path: ${{ github.ref_name }}.zip
        destination: ${{ secrets.GCP_BUCKET_NAME }}

y aquí está el registro de errores de la compilación en la nube:

starting build "ac767a2c-5242-4315-8b20-f8672206b04c"
FETCHSOURCE
Fetching storage object: gs://gcf-sources-xxxxx-europe-west1/ln-func-bcareer-e8268533-f38c-44a7-b62e-ec74a3affe0b/version-2/function-source.zip#1669544086773073
Copying gs://gcf-sources-xxxxxx-europe-west1/ln-func-bcareer-e8268533-f38c-44a7-b62e-ec74a3affe0b/version-2/function-source.zip#1669544086773073...
/ [0 files][ 0.0 B/ 31.6 KiB] / [1 files][ 31.6 KiB/ 31.6 KiB]
Operation completed over 1 objects/31.6 KiB.
Archive: /tmp/source-archive.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of /tmp/source-archive.zip or
/tmp/source-archive.zip.zip, and cannot find /tmp/source-archive.zip.ZIP, period.

El comando zip utilizado es el mismo, en la misma versión en ambos procesos.

El archivo zip generado por Github Action se puede descargar desde el almacenamiento en la nube y abrir correctamente en Windows:

ingrese la descripción de la imagen aquí

Pero cuando se recupera en Build Storage, ya no se puede abrir:

ingrese la descripción de la imagen aquí

Mientras tanto, el archivo zip de mi local también se puede descargar y abrir desde el almacenamiento de compilación en la nube.

Qué me perdí ?

Respuesta1

Entonces parece que en realidad mi problema fue cargar el archivo y no comprimirlo.

Me perdí esta parte en la documentación de la acción de carga que dice que, de forma predeterminada, la codificación está configurada como gzip.

ingrese la descripción de la imagen aquí

Quitarlo funcionó

información relacionada