GCP 기능 배포: 로컬 빌드의 Zip 파일이지만 Github Action의 Zip 파일은 아닙니다.

GCP 기능 배포: 로컬 빌드의 Zip 파일이지만 Github Action의 Zip 파일은 아닙니다.

코드 함수 소스 코드로 zip 파일을 빌드하고 Google Cloud Storage에 업로드하는 github 작업을 수행하려고 합니다.

그런 다음 이 zip 파일을 사용하여 클라우드 기능을 배포하는 Terraform 저장소가 있습니다.

문제는 로컬 환경(WSL Ubuntu 18-04)에서 해당 파일을 압축하고 동일한 저장소에 해당 파일을 업로드하면 Terraform 배포를 진행할 수 있고 모든 것이 잘 된다는 것입니다.

우편 번호 ../0.0.9.zip *

그러나 Github 작업에서 실행된 동일한 명령어는 zip을 생성하여 예상대로 Cloud Storage에 푸시하고, 다운로드하여 열 수도 있지만 Cloud Function 배포를 위한 Cloud Build 프로세스가 작동하지 않습니다. 나는 그것들의 차이점이 무엇인지 알 수 없습니다.

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

클라우드 빌드의 오류 로그는 다음과 같습니다.

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.

사용된 zip 명령은 두 프로세스 모두에서 동일한 버전으로 동일합니다.

Github Action으로 생성된 zip 파일은 클라우드 저장소에서 다운로드하여 Windows에서 잘 열 수 있습니다.

여기에 이미지 설명을 입력하세요

하지만 Build Storage에서 가져오면 더 이상 열 수 없습니다.

여기에 이미지 설명을 입력하세요

반면에 내 로컬의 zip 생성물은 클라우드 빌드 저장소에서 다운로드하고 열 수도 있습니다.

내가 놓친 게 무엇입니까 ?

답변1

따라서 실제로 내 문제는 파일 압축이 아니라 파일 업로드에 있었던 것 같습니다.

업로드 작업 문서에서 기본적으로 인코딩이 gzip으로 설정되어 있다고 말하는 이 부분을 놓쳤습니다.

여기에 이미지 설명을 입력하세요

그것을 제거하는 것은 트릭을 만들었습니다

관련 정보