簡體   English   中英

在多個 GitHub 項目之間共享(參數化)cloudbuild.yaml?

[英]Share (parameterized) cloudbuild.yaml between multiple GitHub projects?

我成功地在每次提交 GitHub 時觸發了 Google Cloud Build。 However, we have many different source code repositories (projects) on GitHub, that all use Maven and Spring Boot, and I would like all of these projects to use the same cloudbuild.yaml (or a shared template). 這樣我們就不需要在所有項目中復制cloudbuild.yaml (在大多數項目中基本相同)。

例如,讓我們在 GitHub、A 和 B 上進行兩個不同的項目。它們的cloudbuild.yaml文件可能看起來像這樣(但在我們的實際項目中要復雜得多):

項目一:

steps:
  - name: maven:3.8.6-eclipse-temurin-17-alpine
    entrypoint: mvn
    args: [ 'test' ]
  - name: maven:3.8.6-eclipse-temurin-17-alpine
    entrypoint: mvn
    args: [ 'package', '-Dmaven.test.skip=true' ]
  - name: gcr.io/cloud-builders/docker
    args: [ "build", "-t", "europe-west1-docker.pkg.dev/projectname/repo/project-a", "--build-arg=JAR_FILE=target/project-a.jar", "." ]
images: [ "europe-west1-docker.pkg.dev/projectname/repo/project-a" ]

項目B:

steps:
  - name: maven:3.8.6-eclipse-temurin-17-alpine
    entrypoint: mvn
    args: [ 'test' ]
  - name: maven:3.8.6-eclipse-temurin-17-alpine
    entrypoint: mvn
    args: [ 'package', '-Dmaven.test.skip=true' ]
  - name: gcr.io/cloud-builders/docker
    args: [ "build", "-t", "europe-west1-docker.pkg.dev/projectname/repo/project-a", "--build-arg=JAR_FILE=target/project-b.jar", "." ]
images: [ "europe-west1-docker.pkg.dev/projectname/repo/project-b" ]

唯一不同的是jar文件和鏡像名稱,步驟相同。 現在想象一下擁有數百個這樣的項目,如果我們需要為每個項目更改或添加構建步驟,這可能會成為維護的噩夢。

在我看來,更好的方法是擁有一個可以共享的模板文件:

steps:
  - name: maven:3.8.6-eclipse-temurin-17-alpine
    entrypoint: mvn
    args: [ 'test' ]
  - name: maven:3.8.6-eclipse-temurin-17-alpine
    entrypoint: mvn
    args: [ 'package', '-Dmaven.test.skip=true' ]
  - name: gcr.io/cloud-builders/docker
    args: [ "build", "-t", "europe-west1-docker.pkg.dev/projectname/repo/${PROJECT_NAME}", "--build-arg=JAR_FILE=target/${PROJECT_NAME}.jar", "." ]
images: [ "europe-west1-docker.pkg.dev/projectname/repo/${PROJECT_NAME}" ]

如果可以將這樣的模板文件上傳到 GCS,然后在每個項目的cloudbuild.yaml文件中重復使用,那就太好了:

項目一:

steps:
  import:
    gcs: gs:/my-build-bucket/cloudbuild-template.yaml
    parameters: 
      PROJECT_NAME: project-a

項目B:

steps:
  import:
    gcs: gs:/my-build-bucket/cloudbuild-template.yaml
    parameters: 
      PROJECT_NAME: project-b

Google Cloud Build 是否存在這樣的事情? 如上所述,您如何在不同的構建中導入/重用構建步驟? 實現這一目標的推薦方法是什么?

我聯系了 Google Cloud 支持,他們告訴我這目前不可用。 他們意識到了這個問題,這是他們正在努力的事情(沒有關於何時可用的 eta)。

與此同時,他們的建議是使用Tekton

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM