Upgrade to Pro — share decks privately, control downloads, hide ads and more …

もっと快適に! デプロイフロー改善への道!

TOC
December 08, 2022

もっと快適に! デプロイフロー改善への道!

2022/12/06開催の「3社合同PHP勉強会!CTOが語る事業とPHPの向き合い方【BASE/Cake.jp/コネヒト】」における LT 資料です。

https://connehito.connpass.com/event/266703/

TOC

December 08, 2022
Tweet

More Decks by TOC

Other Decks in Technology

Transcript

  1. 自己紹介 - TOC(とっしー) - コネヒト株式会社 - バックエンドエンジニア - 主にPHP -

    趣味でGo - (宣伝)Let's Go Talkもやってます - Twitter: @toc_toc05
  2. • Web 側のプロダクトは Github Flow を採用 • PR が Approve

    されたら マージ→自動デプロイ 当時のデプロイフロー master は常に リリースレディ
  3. 具体的には https://github.com/Connehito/gdp を使っているよ デプロイ宣言 マージ(dev デプロイ) デプロイ成功通知 dev 環境確認 タグを打つ(gdp

    deploy) (prod デプロイ) デプロイ成功通知 prod 環境確認 リリースノート作成と 利用終了宣言(gdp publish) ※「dev」環境は一般的に言うステージング環境を指しています。
  4. 具体的には https://github.com/Connehito/gdp を使っているよ デプロイ宣言 マージ(dev デプロイ) デプロイ成功通知 dev 環境確認 タグを打つ(gdp

    deploy) (prod デプロイ) デプロイ成功通知 prod 環境確認 リリースノート作成と 利用終了宣言(gdp publish) ※「dev」環境は一般的に言うステージング環境を指しています。 • 誰かがリリースで使っているかを目視で確認 ◦ 「あ、使っていたんですね!」みたいなことが起き ていた ◦ いろんなリポジトリが混在+フリーテキストで書き 方も統一されてない
  5. 具体的には https://github.com/Connehito/gdp を使っているよ デプロイ宣言 マージ(dev デプロイ) デプロイ成功通知 dev 環境確認 タグを打つ(gdp

    deploy) (prod デプロイ) デプロイ成功通知 prod 環境確認 リリースノート作成と 利用終了宣言(gdp publish) ※「dev」環境は一般的に言うステージング環境を指しています。 • デプロイが終わっているかを都度確認しなければい けない ◦ 別作業していてデプロイ忘れることもしばしば
  6. どう実現したのか • コメントをつける actions を利用 ◦ https://github.com/peter-evans/create-or-update-comment • 自動でラベルをつけ外しする actions

    を作成 ◦ ラベルがついてたらデプロイストップも可能 ◦ https://github.com/Connehito/deploying-marker-with-issue
  7. コメントをつける actions を利用 env: DEPLOYMENT_RECORD_ISSUE_NUMBER: 1234 jobs: build: runs-on: ubuntu-latest

    steps: - name: Set ref link for notification id: set_link run: | if [[ "${GITHUB_REF_TYPE}" == "branch" ]]; then echo "::set-output name=REF_LINK::[${GITHUB_SHA:0:8}](https://github.com/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA})" elif [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then echo "::set-output name=REF_LINK::[${GITHUB_REF_NAME}](https://github.com/${GITHUB_REPOSITORY}/releases/tag/${GITHUB_REF_NAME})" fi - name: Create comment uses: peter-evans/create-or-update-comment@v2 with: issue-number: ${{ env.DEPLOYMENT_RECORD_ISSUE_NUMBER }} body: | @${{ github.actor }} ${{ steps.set_link.outputs.REF_LINK }} によるdevデプロイを開始します。 コミットへのリンク作成 イシューにコメントする
  8. 自動でラベルをつけ外しする actions を作成 # ラベルをつけて、デプロイ中であることを明示する # デプロイ中にエラーなどでラベルが残り、再実行でエラーになる場合は手動でラベルを外す - uses: Connehito/deploying-marker-with-issue@v2

    env: GITHUB_TOKEN: ${{ github.token }} with: action: "attach-marker" issue-number: ${{ env.DEPLOYMENT_RECORD_ISSUE_NUMBER }} exit-with-error: true # 既にラベルが付いている場合は、他のデプロイが進行中と判断できるためエラーにする イシューを指定 ラベルがついていたらデプロイを中 止するかどうかを指定
  9. これが... デプロイ宣言 マージ(dev デプロイ) デプロイ成功通知 dev 環境確認 タグを打つ (gdp deploy)

    (prod デプロイ) デプロイ成功通知 prod 環境確認 リリースノート作成と 利用終了宣言 (gdp publish)
  10. こう! マージ(dev デプロイ) デプロイ成功通知 dev 環境確認 タグを打つ (gdp deploy) (prod

    デプロイ) デプロイ成功通知 prod 環境確認 リリースノート作成 (gdp publish)