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:
Pero cuando se recupera en Build Storage, ya no se puede abrir:
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í ?