LoginSignup
1
0

GitLabでCDを行う(オープンデータ活用③)

Posted at

※この記事はドラフト版です。

目的

  • ソースが更新されたタイミングで本番環境を更新したい
  • モダンな開発に必須といわれる噂のCI/CDを試してみたい

方法

実施

秘密鍵と公開鍵の作成

GitLabから本番環境のサーバへ接続する際に使用する鍵を作ります
Powershellで次のコマンドを実行

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

次のファイルが作成される

  • 秘密鍵「id_rsa」
  • 公開鍵「id_rsa.pub」

本番環境のサーバに公開鍵を置く

次のファイルに公開鍵「id_rsa.pub」の内容をコピペして保存する
※サーバへの接続は説明省略

nano ~/.ssh/authorized_keys

GitLab(SaaS版)への登録とプロジェクトの作成

説明は省略
次の構成でサーバと同じ内容のmain.pyを配置
[fastapi]
 [imari_city_opendata]
  main.py
image.png

GitLabに秘密鍵を登録する

[Settings]→[CI/CD]
image.png
image.png

[Variables]→[expand]
image.png
[Add variable]
image.png

次のKeyとValueを設定する

  • Key:SSH_PRIVATE_KEY
  • Value:秘密鍵「id_rsa」の内容をコピペ

GitLabのYAMLファイルを作成する

[Build]→[Pipeline editor]
image.png
image.png

次の内容を記載

本番環境のサーバにGitLabのfastapiフォルダをコピーする内容です
(先ほど設定した環境変数「$SSH_PRIVATE_KEY」から秘密鍵を取得してsshの接続情報として使う)

build-job:
  stage: build
  script:
    - echo "Hello, $GITLAB_USER_LOGIN!"

deploy-prod:
  stage: deploy
  before_script:
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo "$SSH_PRIVATE_KEY" >> ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    - eval "$(ssh-agent -s)"
    - ssh-add ~/.ssh/id_rsa
    - ssh-add -l
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
  script:
    - scp -i ~/.ssh/id_rsa -r fastapi ubuntu@example.sakura.ne.jp:/home/ubuntu/app
    - ssh -tt ubuntu@example.sakura.ne.jp -i ~/.ssh/id_rsa -C "sudo systemctl restart fastapi_imari_opendata_gunicorn"
  environment: production

[Commit Change]ボタンを押下

リポジトリにYAMLファイルがプッシュされる
image.png

pipelineが走る

[Build]→[Pipelines]
image.png
image.png

image.png

image.png

詳細(#番号のリンクをクリック)

image.png
さらに、[deploy]などをクリックすると詳細が表示される
※色々見えてるので折りたたんでいます。別途要検討。
image.png

main.pyの中身を変更してpushする

変更前

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

変更後

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World 20240325"}

コミットとプッシュ

git add .
git commit -m "test"
git push

pipelineが走る

image.png

ブラウザで確認

変わっていることが確認できたらCDは成功です。
image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0