なぜ実装したか?
SREに興味ができ、直接パイプラインを構築してみたいと思い、
Cloudtype
, Github Actions
を使って現在開発中の個人プロジェクトで実装してみたので、その過程についてまとめてみたいと思います!1. プロジェクト配布
まず、Github Actionsを適用するサービスをデプロイする必要があります。 デプロイはCloudtypeを使ってデプロイしましたが、環境変数設定以外はデプロイするのに大きな困難がないので、デプロイします。
2. Github Actionsのコードをコピー
デプロイが正常に行われたらサービス詳細ページのCLIタブの下部にGithub Actionsコードが書かれています。これをコピーします。
コピーしたコードをGithubリポジトリへ戻って
.github/workflows/deploy.yml
ファイルを生成して貼り付けます。3. Secret値追加
GithubがCloudtypeにコマンドできるように、レポジトリに2つのSecret値を追加する必要があります。 最初のSecret値は
CloudtypeアカウントのAPIキー
で、'認証'メニューで生成することができます。生成されたAPIキーをコピーして、GithubのActions secretメニューでSecret値を追加します。
注意!
: Secret名はdeploy.yml
ファイルのtoken行
に書かれている名前と同じでなければなりません!
二つ目のSecret値はGithubアカウントの
Personal Access Token
です。Githubアカウント設定ページ左下の<> Developer settings
メニューで生成することができます。Secret scopes項目ではrepo
とadmin:public_key
のチェックボックスを選択します。発行されたキー値を最初のキー保存方法と同じように保存します。
注意!
: Secret名はdeploy.yml
ファイルのghtoken行
にある名前と同じでなければなりません!
正常に
deploy.yml
ファイルが動作していることがわかります!😊mainブランチにpushイベントが発生すると、自動でデプロイが行われることが分かります。
まとめ
デプロイを完了したら
Cloudtype
がGithub Actions
に適用するコードを自動で完成させてくれるので、大きな問題なくパイプライン構築を完了することができました。Github Actions
を何回か使ってみて便利さを実感していますが、Jenkins
や他のツールも使ってみたいと思いました🙂。参考
deploy.yml
コードは以下の通りです。name: Deploy to cloudtype # mainブランチにpushが発生するたびに実行 on: push: branches: - main # ワークフローで実行されるタスクの定義 jobs: deploy: # 最新バージョンのUbuntuに基づいてタスクを実行 runs-on: ubuntu-latest steps: # 最初のステップ: GitHubリポジトリをチェックアウトする - name: Checkout uses: actions/checkout@v2 # 第二段階:cloudtypeに接続する。GitHub トークンと cloudtype トークンが必要 - name: Connect deploy key uses: cloudtype-github-actions/connect@v1 with: token: ${{ secrets.CLOUDTYPE_TOKEN }} ghtoken: ${{ secrets.GHP_TOKEN }} # 第三段階: cloudtypeにデプロイ。cloudtypeトークン、プロジェクト名、ステージ名、yaml設定が必要。 - name: Deploy uses: cloudtype-github-actions/deploy@v1 with: token: ${{ secrets.CLOUDTYPE_TOKEN }} project: gimyumin40/jitsu stage: main yaml: | # アプリ名の設定 name: project-jitsu-deployment-repo # アプリタイプ設定 app: php # 追加オプション設定 options: # ポート設定 ports: 9000 # 文書のデフォルトパス設定 docbase: /public # Node.jsの使用有無の設定 nodejs: true # 環境変数設定 env: - name: APP_KEY value: base64:g0PmlgtiDlxx+yYySTRZnjccq4/bxJqPcHUl/uLbQRU= - name: LOG_CHANNEL value: errorlog # 配布するGitHubリポジトリ情報を設定 context: git: url: git@github.com:${{ github.repository }}.git ref: ${{ github.ref }}
댓글