Поглощенный манифест, опубликованный Google-облаком со Spinnaker - PullRequest
0 голосов
/ 04 октября 2019

Я использую Google cloud-build в качестве системы CI и Spinnaker в качестве CD. Я настроил cloud-build для копирования моего манифеста и включения его в качестве артефакта.

это мой 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']

Когда сборка завершена, это сообщение передаетсяpub / sub:

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

В истории cloud-build я также вижу, что было создано 2 артефакта: enter image description here

  • изображение докера
  • Манифест Kubernetes

Манифест находится в этом месте:

gs://gordion-manifests/a91cb009fa184713b86eb8b532a75dc088a25713/manifest.yaml gs://"gordion-manifests

Поскольку местоположение артефакта является динамическим (из-за папокназванный в честь SHA), Как я могу использовать этот артефакт в expected artifacts в спинакере?

1 Ответ

0 голосов
/ 22 октября 2019

Вы можете использовать подстановочные знаки в сопоставителе артефакта.
Пожалуйста, обратитесь к документации - https://www.spinnaker.io/reference/artifacts/in-pipelines/#expected-artifacts для общего описания и https://www.spinnaker.io/reference/artifacts-with-artifactsrewrite/types/gcs-object/#in-a-trigger для сведений об артефакте GCS.

Например, следующее сопоставлениедолжен обработать ваше дело (у меня нет экземпляра, чтобы проверить его правильно):

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