2

たとえば、さまざまなクラウド機能フォルダーを含むプロジェクトフォルダーがあります

Project_Folder
    -Cloud-Function-Folder1
         -main.py
         -requirements.txt
         -cloudbuild.yaml
    -Cloud-Function-Folder2
         -main.py
         -requirements.txt
         -cloudbuild.yaml
    -Cloud-Function-Folder3
         -main.py
         -requirements.txt
         -cloudbuild.yaml
            --------- and so on!

今私が今持っているのはです。クラウド機能フォルダーからソース リポジトリにコードを 1 つずつプッシュします (関数フォルダーごとに別のリポジトリ)。そして、クラウドビルドをトリガーしてから関数をデプロイするトリガーが有効になっています。私が持っているcloudbuild.yamlファイルは以下のようなものです..

 steps:

 - name: 'python:3.7'
 entrypoint: 'bash'
 args: 
   - '-c'
   - |
       pip3 install -r requirements.txt
       pytest

 - name: 'gcr.io/cloud-builders/gcloud'
  args:
  - functions 
  - deploy
  - Function
  - --runtime=python37
  - --source=.
  - --entry-point=function_main
  - --trigger-topic=Function
  - --region=europe-west3  

今、私がやりたいことは、単一のソース リポジトリを作成し、1 つのクラウド関数のコードを変更してそれをプッシュするたびに、それがデプロイされ、残りは以前のように残ることです。


アップデート

今、私は以下のようなことも試しましたが、単一の機能に取り組んでいても、すべての機能を同時に展開します。

Project_Folder
    -Cloud-Function-Folder1
         -main.py
         -requirements.txt
    -Cloud-Function-Folder2
         -main.py
         -requirements.txt
    -Cloud-Function-Folder3
         -main.py
         -requirements.txt
    -cloudbuild.yaml
    -requirements.txt

cloudbuild.yaml ファイルは次のようになります。

 steps:

 - name: 'python:3.7'
 entrypoint: 'bash'
 args: 
   - '-c'
   - |
       pip3 install -r requirements.txt
       pytest

 - name: 'gcr.io/cloud-builders/gcloud'
  args:
  - functions 
  - deploy
  - Function1
  - --runtime=python37
  - --source=./Cloud-Function-Folder1
  - --entry-point=function1_main
  - --trigger-topic=Function1
  - --region=europe-west3  

 - name: 'gcr.io/cloud-builders/gcloud'
  args:
  - functions 
  - deploy
  - Function2
  - --runtime=python37
  - --source=./Cloud-Function-Folder2
  - --entry-point=function2_main
  - --trigger-topic=Function2
  - --region=europe-west3 
4

3 に答える 3

0

これは非常に簡単ですが、ビルド トリガー側ではなく、ビルド トリガー側で動作を制御する必要がありますcloudbuild.yaml。概念的には、クラウド ビルド トリガーの動作を制限し、リポジトリ内の特定の変更に制限する必要があります。

そのため、Build Trigger ページで regEx glob include フィルターを使用します。

GCP トリガーの入力ファイル glob フィルターのスクリーンショット

クラウド関数 (またはクラウド実行) ごとに 1 つのトリガーを作成し、次のように「含まれるファイル フィルター (グロブ)」を設定します。

  • Cloud-Function1-Trigger

    Project_Folder/Cloud-Function-Folder1/**

  • Cloud-Function2-Trigger

    Project_Folder/Cloud-Function-Folder2/**

...

仮定:

  1. トリガーごとに、リポジトリとブランチが設定され、リポジトリのルートに Project_Folder/
  2. リポジトリとブランチは、トリガーがパス Project_Folder/Cloud-Function-Folder1/* 内のファイルを見つけてアクセスできるように適切に設定されています

2 ~ 3 個を超えるクラウド機能がある場合、Terraform を使用して、必要なすべてのトリガーを自動化された方法で作成する傾向があります。

于 2021-07-01T06:26:32.697 に答える