Azure Blob Storage を使った Static website の DevOps
以前から Static website 使ってポートフォリオサイト を動かしている。
Travic CI で AzCopy on Linux を使って適当なコンテナにデプロイし、そこから $web に手動コピーしてリリースするという手順を取っていた。
AzCopy がいつの間にか $web に対応していたので完全に自動化した。
AzCopy 、$web に対応してたようだ。 https://t.co/R9XkHus4e7
— kheiakiyama (@kheiakiyama) 2018年11月18日
Travic CI
サイトでは jekyll を使っているが、_site の部分を読み替えれば他のコンテンツ作成手段でも利用できるはず。
# Require Environment Variables
# - BLOB_CONTAINER_URL
# - STORAGE_KEY
language: ruby
rvm:
- 2.5
before_script:
- chmod +x ./scripts/cibuild
script: ./scripts/cibuild
after_success:
- sudo apt-get update
- sudo apt-get install apt-transport-https -y
- sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
- sudo add-apt-repository "deb http://cz.archive.ubuntu.com/ubuntu xenial main"
- sudo apt-get update
- sudo apt-get install libicu55 -y
- sudo apt-get install libunwind-dev -y
- wget -O azcopy.tar.gz https://aka.ms/downloadazcopylinux64
- tar -xf azcopy.tar.gz
- sudo ./install.sh
- ls -la ./_site
- azcopy --version
- azcopy --source ./_site --destination "$BLOB_CONTAINER_URL" --dest-key $STORAGE_KEY --recursive --quiet --set-content-type
branches:
only:
- master
env:
global:
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer
環境変数
$BLOB_CONTAINER_URL は https://xxx.blob.core.windows.net/$web のような指定になるが、Travis CI では特殊文字のエスケープが必要なため、 https://xxx.blob.core.windows.net/\$web とする必要がある。
Environment Variables - Travis CI
デバッグ
最新の AzCopy on Linux を動かすために、Travis CI のデバッグで少し苦労した。
Travis CI で動くエージェントは Docker イメージが用意されているので下のリンクから該当イメージを探して手元で試すと早い。
ただし ruby のイメージは3GB超。。
Common Build Problems - Travis CI
Travis CI のデバッグ用イメージ、サイズがでかすぎてPullしてる間にSaaSでデバッグ完了する疑惑。 https://t.co/O62VgdfG4w
— kheiakiyama (@kheiakiyama) 2018年11月18日
Azure CDN への反映
コンテンツ更新するため、キャッシュを一旦削除した。