GCP-Funktionsbereitstellung: Zip-Datei vom lokalen Build, aber nicht Zip-Datei von Github Action

GCP-Funktionsbereitstellung: Zip-Datei vom lokalen Build, aber nicht Zip-Datei von Github Action

Ich versuche, eine GitHub-Aktion zu haben, die eine ZIP-Datei mit dem Quellcode der Codefunktion erstellt und in den Google Cloud Storage hochlädt

Dann habe ich ein Terraform-Repository, das Cloud-Funktionen mit dieser ZIP-Datei bereitstellt.

Die Sache ist, dass wenn ich diese Dateien in meiner lokalen Umgebung – WSL Ubuntu 18-04 – zippe und die ZIP-Datei in denselben Speicher hochlade, ich mit meiner Terraform-Bereitstellung fortfahren kann und alles reibungslos läuft.

Postleitzahl ../0.0.9.zip *

Derselbe Befehl, der von Github Action ausgeführt wird, erstellt jedoch eine Zip-Datei und überträgt sie wie erwartet in einen Cloud-Speicher. Ich kann sie auch herunterladen und öffnen, aber der Cloud Build-Prozess für die Bereitstellung von Cloud-Funktionen funktioniert nicht. Ich kann nicht herausfinden, was der Unterschied zwischen diesen ist.

Hier ist der Github Action-Workflow:

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 }}

und hier ist das Fehlerprotokoll von Cloud Build:

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.

Der verwendete Zip-Befehl ist in beiden Verfahren derselbe und in derselben Version.

Die von Github Action generierte ZIP-Datei kann aus dem Cloud-Speicher heruntergeladen und problemlos in Windows geöffnet werden:

Bildbeschreibung hier eingeben

Aber wenn es aus dem Build Storage abgerufen wird, kann es nicht mehr geöffnet werden:

Bildbeschreibung hier eingeben

während wiederum, die Zip-Produktion von meinem lokalen kann auch heruntergeladen und geöffnet werden aus Cloud-Build-Speicher

Was habe ich verpasst ?

Antwort1

Also scheint mein Problem eigentlich beim Hochladen der Datei und nicht beim Komprimieren gelegen zu haben.

Ich habe diesen Teil in der Dokumentation der Upload-Aktion übersehen, in dem steht, dass die Kodierung standardmäßig auf gzip eingestellt ist.

Bildbeschreibung hier eingeben

Das Entfernen hat geholfen

verwandte Informationen