CI/CDパイプラインを構築してみよう
CI/CDパイプラインを構築してみよう

CI/CDパイプラインを構築してみよう

작성자
ユミンユミン
카테고리
Dev.Log
작성일
2023년 11월 02일
태그
DevOps
notion image
 

なぜ実装したか?

SREに興味ができ、直接パイプラインを構築してみたいと思い、Cloudtype, Github Actionsを使って現在開発中の個人プロジェクトで実装してみたので、その過程についてまとめてみたいと思います!
 

1. プロジェクト配布

まず、Github Actionsを適用するサービスをデプロイする必要があります。 デプロイはCloudtypeを使ってデプロイしましたが、環境変数設定以外はデプロイするのに大きな困難がないので、デプロイします。
notion image
 

2. Github Actionsのコードをコピー

デプロイが正常に行われたらサービス詳細ページのCLIタブの下部にGithub Actionsコードが書かれています。これをコピーします。
notion image
 
コピーしたコードをGithubリポジトリへ戻って.github/workflows/deploy.ymlファイルを生成して貼り付けます。
notion image
 

3. Secret値追加

GithubがCloudtypeにコマンドできるように、レポジトリに2つのSecret値を追加する必要があります。 最初のSecret値はCloudtypeアカウントのAPIキーで、'認証'メニューで生成することができます。
notion image
 
生成されたAPIキーをコピーして、GithubのActions secretメニューでSecret値を追加します。
notion image
注意!: Secret名はdeploy.ymlファイルのtoken行に書かれている名前と同じでなければなりません!
 
二つ目のSecret値はGithubアカウントのPersonal Access Tokenです。Githubアカウント設定ページ左下の<> Developer settingsメニューで生成することができます。Secret scopes項目ではrepoadmin:public_keyのチェックボックスを選択します。
notion image
 
発行されたキー値を最初のキー保存方法と同じように保存します。
注意!: Secret名はdeploy.ymlファイルのghtoken行にある名前と同じでなければなりません!
 
正常にdeploy.ymlファイルが動作していることがわかります!😊
mainブランチにpushイベントが発生すると、自動でデプロイが行われることが分かります。
notion image
 

まとめ

デプロイを完了したらCloudtypeGithub 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 }}

댓글

guest