GitLab Webhook → AWS Lambda → AWS CodeBuild → Hugo → Deploy を出来る様にした
読了まで:約1分
この
GitLab Webhook → AWS Lambda → AWS CodeBuild → Hugo → Deploy
と
なんで
現在の CI/CD の概要
基本的にnetlify-cms
でnetlify-cms
は
そのgit push
時とgit push
を
AWS Lambda → AWS CodeBuild → Hugo → Deploy
を
GitLab への
Commit 時に 色々やって AWS CodeBuild を 起動する
と
実際に使っているファイル定義
下記の
index.js (AWS Lambda)
"use strict";
const AWS = require("aws-sdk");
exports.handler = async (event) => {
const token = event.headers["X-Gitlab-Token"] || "";
if (token !== process.env.token) {
return Promise.reject({ statusCode: 403 });
}
return new Promise((resolve, reject) => {
var codeBuild = new AWS.CodeBuild();
codeBuild.startBuild({ projectName: "XXXXXXXXXXX" }, (err, data) => {
if (err !== null) {
return reject({ statusCode: 500 });
}
resolve({
statusCode: 200,
});
});
});
};
buildspec.yml (AWS CodeBuild)
version: 0.2
phases:
install:
runtime-versions:
nodejs: 10
commands:
- apt-get install -qq curl locales
- curl -sL https://github.com/gohugoio/hugo/releases/download/v0.55.6/hugo_extended_0.55.6_Linux-64bit.deb -o hugo.deb
- dpkg -i hugo.deb
pre_build:
commands:
- export LC_ALL="en_US.UTF-8"
- locale-gen en_US en_US.UTF-8
- dpkg-reconfigure locales
- test -d $HOME/repo || mkdir -p $HOME/repo
- cd $HOME/repo
- test -d .git || (git init && git remote add upstream https://oauth2:${gitlabToken}@gitlab.com/nyarla/${gitlabRepo})
- git pull upstream master
build:
commands:
- cd $HOME/repo
- /usr/local/bin/hugo --minify
- rm -rf public/pages
- rm -rf public/search/search.js
- rm -rf public/search/pages
- rm -rf public/search/atom.xml
post_build:
commands:
- aws s3 sync --exact-timestamps --delete public/ s3://the.kalaclista.com
- aws cloudfront create-invalidation --distribution-id XXXXXXXXXXXX --paths "/*"
cache:
paths:
- $HOME/repo
以上
ちなみにterraform
なり pulumi.io
なりを
あと
まぁでも