【インターンステラ】GitLab+Sphinx+Google Cloud Storageで自動ビルド&デプロイするには

こんにちは、國分です。
今回は前回のAppEngineに代わり、CloudStorageにデプロイする方法を説明します。

前回とGitLab Runnerの構築までは同じなので省略します。

.gitlab-ci.ymlの作成

.gitlab-ci.yml image: python:2.7
stages:
  - pages
  - deploy

pages:
  stage: pages
  script:
  - pip install sphinx
  - pip install sphinxcontrib-blockdiag sphinxcontrib-nwdiag sphinx_rtd_theme
  - make html
  - mv build/html/ public/
  artifacts:
    paths:
    - public
  only:
  - master

before_script:
  - echo "deb http://packages.cloud.google.com/apt cloud-sdk-jessie main" | tee /etc/apt/sources.list.d/google-cloud-sdk.list
  - curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
  - apt-get update && apt-get install -y google-cloud-sdk

deploy_production:
  stage: deploy
  environment: Production
  only:
    - master
  script:
    - echo $DEPLOY_KEY_FILE_PRODUCTION > /tmp/$CI_PIPELINE_ID.json
    - gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
    - gcloud config set project プロジェクトID
    - gsutil -m rsync -d -r build/html gs://バケット名/dir
    - gsutil -m acl -ar set public-read gs://バケット名/dir
※プロジェクトIDはPROJECT_ID_PRODUCTIONに入力したものと同じものを
※バケット名には保存したいバケット名を(なければGCP→Storage→ブラウザから作成)

以上でmasterに変更が反映されるたびに
・sphinxのHTML化・ビルド
・Cloud Storageへのデプロイ
が自動で行われるようになりました。

パイプライン実行が成功していれば、Cloud Storage上にファイルが保存されているはずです。

終わり

参考  https://unicorn.limited/jp/item/700

このブログの人気の投稿

【AWS】IAMFullAccessを付与せずIAM Roleの作成とアタッチを行う方法

【AWS】EBSボリューム自動取得/削除 を Lambda で実行 (世代管理も)

【GCP】Compute EngineでVPNサーバーを立てるときの注意点