0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitLabCIからSSH経由でコマンドを実行する

Last updated at Posted at 2023-12-19

GitLabCIでデプロイ先サーバーのコマンドをSSH経由で実行する方法です。

前回記事を書いたftpアップロードの後にコマンドを実行する必要があったので作りました。

.gitalb-ci.yml

いきなりですが、ファイルから。

.gitlab-ci.yml
stages:
  - exec

deploy-exec:
  stage: exec
  image: alpine:latest
  variables:
    SSH_SERVER: ''
    SSH_PORT: '22'
    SSH_USER: ''
    SSH_PRIVATE_KEY: ''
    SSH_CMD: ''
  before_script:
    - 'command -v ssh-agent >/dev/null || ( apk add --update openssh )' 
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - ssh-keyscan -p $SSH_PORT -H $SSH_SERVER >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
  script:
    - ssh $SSH_USER@$SSH_SERVER -p $SSH_PORT "$SSH_CMD"
  only:
    - main

変数

見ればわかりますね(省略
GitLab CI設定のvariablesに設定してください。

解説

  • 小さいのでイメージはalpineを使います
  • ssh-agentをインストールします
  • $SSH_PRIVATE_KEYをセットします
  • SSH先サーバーを.ssh/known_hostsにセットします

むにゃむにゃ

必要になったので作りました。これで、GitLab上でファイル更新をすると、アップロード、デプロイ先でのスクリプト実行が一気に走るようになりました。めでたしめでたし:grinning:

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?