67398
Github上の特定のブランチに対して PRがマージされたことをトリガーに、GCEにその変更をデプロイしたいです。  
現在は dockerは使っておらず、GCEのあるディレクトリ上で git
pullをして変更を反映させる運用方法をとっているのでこれを自動化したいと考えております。

Travis CIや Cloud Buildのドキュメントを読みましたが、いずれもトリガーがブランチへの
pushであり実現することは難しいのではないかと思っています。  
できれば GCP上で完結することが望ましいです。

提案やアドバイス、実際に行われている方法などがあれば教えていただけますでしょか。  
よろしくお願い致します。
CC BY-SA 4.0
2020-06-06T10:00:04.253
67361
2020-06-07T14:57:17.203
40514
question
github google-cloud デプロイ google-compute-engine
Githubと GCEを連携してデプロイを自動化する方法を教えてください
> Travis CIや Cloud Buildのドキュメントを読みましたが、いずれもトリガーがブランチへの
> pushであり実現することは難しいのではないかと思っています。

いいえ、Mergeは`push`をトリガーとすることで認識できます。私が知っている限りではCloud Build/Travis CI/Drone
CIはmergeを`push`として検知します。これはmasterへの直接pushしたときと同じ意味を持ちます。

Cloud BuildとTravis CIの設定例は以下の通りです。

## Cloud Build

Cloud BuildはGUI上での設定になるので項目のみ記します。

**Event**  
\- Push to branch

**Source**  
\- Branch _master_

## Travis CI

echoするだけの簡単な実装例です。手元で動かしてご確認ください。

```

    language: node_js
    branches:
      only:
      - master
    
    stages:
    # masterへpull requestを投げたときにjobを動かす条件
    - name: pull request to master
      if: branch = master AND type = pull_request
    # masterへpushしたときにjobを動かす条件
    - name: push or merge to master
      if: branch = master AND type = push
    
    jobs:
      include:
      - stage: pull request to master
        script:
        - echo "This job works when the job is committed to a PR to master."
      - stage: push or merge to master
        script:
        - echo "This job works when the job is merged with master or when the job is pushed." //
    
```

## その他

> 提案やアドバイス、実際に行われている方法などがあれば教えていただけますでしょか。  
>  よろしくお願い致します。

これに応えると、私個人としてはtagが作成されたイベントをデプロイなどのトリガーとしています。理由としては、masterブランチというのは、Pull
Requestだけでなく、直接push可能な状態です。当たり前ですが先着順でコードが入ってしまうため作業が前後した場合に後戻りするのが面倒なことが多いです。それに対してtagは特定のコミットより作成するため、作業の順序はそもそも発生せず、特定のコミットまでの作業を確実にリリースへ反映させることが可能です。もし追加の作業がそのタグより後に発生した場合は、新しいタグを作成すればよいだけなので、不要な運用トラブルを避けることが可能です。
CC BY-SA 4.0
2020-06-07T14:57:17.203
67398
2020-06-07T14:57:17.203
7997
67361
answer