Google cloud platform 使用Spinnaker使用谷歌云发布的清单工件

Google cloud platform 使用Spinnaker使用谷歌云发布的清单工件,google-cloud-platform,google-cloud-storage,google-cloud-build,spinnaker,Google Cloud Platform,Google Cloud Storage,Google Cloud Build,Spinnaker,我使用googlecloud build作为我的CI系统,使用Spinnaker作为我的CD。 我已经配置了cloudbuild来复制我的清单并将其作为工件包含 这是我的cloudbuild.yaml: - name: 'gcr.io/cloud-builders/docker' args: ['build', '--tag=gcr.io/$PROJECT_ID/gordion-backend:$COMMIT_SHA', '.'] - name: 'gcr.io/cloud-builders

我使用google
cloud build
作为我的CI系统,使用Spinnaker作为我的CD。 我已经配置了
cloudbuild
来复制我的清单并将其作为工件包含

这是我的
cloudbuild.yaml

- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '--tag=gcr.io/$PROJECT_ID/gordion-backend:$COMMIT_SHA', '.']
- name: 'gcr.io/cloud-builders/gsutil'
  args: ['cp', 'manifests/manifest.yaml', 'gs://$PROJECT_ID-kubernetes-manifests/gordion-backend/']

images: ['gcr.io/$PROJECT_ID/gordion-backend']
artifacts:
  objects:
    location: 'gs://${_BUCKET_NAME}/$COMMIT_SHA/'
    paths: ['manifests/manifest.yaml']
构建完成后,发布/订阅将广播以下消息:

{
  "id": "ba084f1c-494a-42c0-8499-1b84fbb30551",
  "projectId": "gordion-2",
  "status": "SUCCESS",
  "source": {
    "repoSource": {
      "projectId": "gordion-2",
      "repoName": "github_gordion-beam_gordion-backend",
      "branchName": "feature/build-yaml"
    }
  },
  "steps": [
    {
      "name": "gcr.io/cloud-builders/docker",
      "args": [
        "build",
        "--tag=gcr.io/gordion-2/gordion-backend:936543554ad5fab4017319005413dd38beefda04",
        "."
      ],
      "timing": {
        "startTime": "2019-10-04T12:03:46.996926010Z",
        "endTime": "2019-10-04T12:03:57.357589900Z"
      },
      "pullTiming": {
        "startTime": "2019-10-04T12:03:46.996926010Z",
        "endTime": "2019-10-04T12:03:47.056257759Z"
      },
      "status": "SUCCESS"
    },
    {
      "name": "gcr.io/cloud-builders/gsutil",
      "args": [
        "cp",
        "manifests/manifest.yaml",
        "gs://gordion-2-kubernetes-manifests/gordion-backend/"
      ],
      "timing": {
        "startTime": "2019-10-04T12:03:57.357662249Z",
        "endTime": "2019-10-04T12:04:00.089381056Z"
      },
      "pullTiming": {
        "startTime": "2019-10-04T12:03:57.357662249Z",
        "endTime": "2019-10-04T12:03:57.436904050Z"
      },
      "status": "SUCCESS"
    }
  ],
  "results": {
    "images": [
      {
        "name": "gcr.io/gordion-2/gordion-backend:936543554ad5fab4017319005413dd38beefda04",
        "digest": "sha256:538771fe1be2abd54f6d092519c131019d64bd1001ba38138c565faa9fe343b6",
        "pushTiming": {
          "startTime": "2019-10-04T12:04:00.404451498Z",
          "endTime": "2019-10-04T12:04:06.089323750Z"
        }
      }
    ],
    "buildStepImages": [
      "sha256:c0525aac022b1a92e97f9c6cf4ede4dd82979a9f014f05b2ec8843012a03aa60",
      "sha256:fbd483fa382118462a136f916b17d3197325881b6d966ba82ee3a54f4b550e76"
    ],
    "artifactManifest": "gs://gordion-manifests/gordion-2/936543554ad5fab4017319005413dd38beefda04/artifacts-ba084f1c-494a-42c0-8499-1b84fbb30551.json",
    "numArtifacts": "1"
  },
  "createTime": "2019-10-04T12:03:32.668464866Z",
  "startTime": "2019-10-04T12:03:38.343591796Z",
  "finishTime": "2019-10-04T12:04:15.243708Z",
  "timeout": "600s",
  "images": [
    "gcr.io/gordion-2/gordion-backend"
  ],
  "artifacts": {
    "images": [
      "gcr.io/gordion-2/gordion-backend"
    ],
    "objects": {
      "location": "gs://gordion-manifests/gordion-2/936543554ad5fab4017319005413dd38beefda04/",
      "paths": [
        "manifests/manifest.yaml"
      ],
      "timing": {
        "startTime": "2019-10-04T12:04:08.060372060Z",
        "endTime": "2019-10-04T12:04:12.248879364Z"
      }
    }
  },
  "logsBucket": "gs://1039931537996.cloudbuild-logs.googleusercontent.com",
  "sourceProvenance": {
    "resolvedRepoSource": {
      "projectId": "gordion-2",
      "repoName": "github_gordion-beam_gordion-backend",
      "commitSha": "936543554ad5fab4017319005413dd38beefda04"
    }
  },
  "buildTriggerId": "6b7405e7-c2db-4412-9f1a-186c7f7d5975",
  "options": {
    "substitutionOption": "ALLOW_LOOSE",
    "logging": "LEGACY"
  },
  "logUrl": "https://console.cloud.google.com/gcr/builds/ba084f1c-494a-42c0-8499-1b84fbb30551?project=1039931537996",
  "substitutions": {
    "_BUCKET_NAME": "gordion-manifests"
  },
  "tags": [
    "trigger-6b7405e7-c2db-4412-9f1a-186c7f7d5975"
  ],
  "timing": {
    "BUILD": {
      "startTime": "2019-10-04T12:03:46.996877211Z",
      "endTime": "2019-10-04T12:04:00.404416077Z"
    },
    "FETCHSOURCE": {
      "startTime": "2019-10-04T12:03:39.677294695Z",
      "endTime": "2019-10-04T12:03:46.930866092Z"
    },
    "PUSH": {
      "startTime": "2019-10-04T12:04:00.404450167Z",
      "endTime": "2019-10-04T12:04:14.358324463Z"
    }
  }
}
我还可以在
云构建
历史中看到它产生了两个工件:

  • docker图像
  • 库伯内特斯舱单
清单位于以下位置:

gs://gordion舱单/a91cb009fa184713b86eb8b532a75dc088a25713/manifest.yaml gs://“gordion舱单


由于工件的位置是动态的(由于以SHA命名的文件夹),如何在spinnaker中的
预期工件中使用此工件?

您可以在工件的匹配器中使用通配符。
请参阅文档-了解总体说明和说明 有关地面军事系统工件的详细信息

例如,以下matcher应该处理您的案例(我没有适当的实例来测试它):

{
  "type": "gcs/object",
  "name": "gs://gordion-manifests/.*/manifest.yaml"
}