Cloud Build를 GitHub와 연동시켜 빌드 결과를 Slack으로 알립니다.
12088 단어 슬랙gcpcloudfunctionsCloudBuild
Cloud Functions의 소스는 GitHub에도 있습니다.
전제 조건
Cloud Build의 GitHub 앱 설치
다음 URL로 이동하여 Cloud Build의 GitHub 앱을 자신의 GitHub 계정에 설치합니다.
htps : // 기주 b. 코 m / 아 ps / 오오 g ぇ- c ぉ d-bui ld
설치하면 리포지토리 선택 화면으로 이동하므로 원하는 리포지토리 또는 모든 리포지토리를 선택합니다.
이제 선택한 리포지토리를 푸시하면 자동으로 Cloud Build가 움직이게 된다.
대상 리포지토리를 나중에 변경하려면 다음 URL에서
Google Cloud Build
를 선택하고 Repository access -> Save
를 클릭하십시오.htps : // 기주 b. 코 m/세친 gs/인 s 타치온 s/
슬랙 알림을 위한 클라우드 기능 만들기
새 디렉토리를 만들고 그 안에 다음 파일을 만듭니다.
package.json
{
"name": "cloud-build-notification",
"version": "0.0.1",
"description": "Slack integration for Google Cloud Build, using Google Cloud Functions",
"main": "index.js",
"dependencies": {
"@slack/client": "3.9.0"
}
}
index.js
const IncomingWebhook = require('@slack/client').IncomingWebhook;
const webhook = new IncomingWebhook(process.env.SLACK_WEBHOOK_URL);
// subscribe is the main function called by Cloud Functions.
module.exports.subscribe = (event, callback) => {
const build = eventToBuild(event.data);
// Skip if the current status is not in the status list.
// Add additional statues to list if you'd like:
// QUEUED, WORKING, SUCCESS, FAILURE,
// INTERNAL_ERROR, TIMEOUT, CANCELLED
const status = ['SUCCESS', 'FAILURE', 'INTERNAL_ERROR', 'TIMEOUT'];
if (status.indexOf(build.status) === -1) {
return callback();
}
// Send message to Slack.
const message = createSlackMessage(build);
webhook.send(message, callback);
};
// eventToBuild transforms pubsub event message to a build object.
const eventToBuild = (data) => {
return JSON.parse(new Buffer(data, 'base64').toString());
}
// createSlackMessage creates a message from a build object.
const createSlackMessage = (build) => {
let message = {
text: `Build \`${build.id}\``,
mrkdwn: true,
attachments: [
{
title: 'Build logs',
title_link: build.logUrl,
fields: [{
title: 'Status',
value: build.status
}, {
title: 'Branch',
value: build.substitutions.BRANCH_NAME
}, {
title: 'Repository',
value: build.substitutions.REPO_NAME
}]
}
]
};
return message
}
참고:
h tps : // c ぉ d. 오, ぇ. 이 m / c ぉ d-bui ld / ㅇ cs / 곤후 ぃ ぐれ ぃ rd ぱ rty - 치후 ぃ 카치 온 s? hl = 그럼
만든 Cloud Function 배포
배포하기 전에 Cloud Function용 Cloud Storage를 만들어야 합니다.
버킷 이름은 전세계에서 독특해야 하므로 조심한다.
Slack의 Webhook URL은 코코에서 새로운 앱을 만든 다음
Incoming Webhooks
에서 생성 할 수 있습니다.# ストレージバケットを作成する
BUCKET='<your storage bucket name>'
gsutil mb gs://$BUCKET
# Cloud Functionをデプロイする
SLACK_WEBHOOK_URL='<your webhook url>'
gcloud functions deploy cloud-build-notification-slack \
--stage-bucket $BUCKET \
--entry-point subscribe \
--trigger-topic cloud-builds \
--runtime nodejs8 \
--set-env-vars SLACK_WEBHOOK_URL=$SLACK_WEBHOOK_URL
리포지토리를 푸시하여 동작을 확인해 봅니다.
Cloud Build는
cloudbuild.yaml
를 빌드 구성 파일로 쓸 수도 있으며, cloudbuild.yaml
.이번에는 우선 심플하게 Dockerfile로 CI를 움직여 본다.
GitHub 앱에서 설정한 좋아하는 리포지토리에
Dockerfile
를 쓰고 푸시한다.FROM alpine:3.9
RUN echo 'Hello world.'
잘 가면 CI가 움직여 Docker 이미지가 Container Registry에 저장되고 Slack에 빌드 결과 알림이 온다. 덧붙여서, Container Registry에 보존되는 이미지명은
gcr.io/<プロジェクトID>/<リポジトリ名>
가 된다.할 수 있었다! !
덤
Cloud Console에서 GUI로 확인도 가능하지만 CLI로 확인하고 싶을 때.
Cloud Build의 빌드 목록을 가져옵니다.
gcloud builds list
Container Registry에 있는 이미지 목록을 가져옵니다.
gcloud container images list
참고
Reference
이 문제에 관하여(Cloud Build를 GitHub와 연동시켜 빌드 결과를 Slack으로 알립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hatakoya/items/c1cbe76eb5f5d767c8b4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)