Briswell Tech Blog

ブリスウェルのテックブログです

GitLab CI 触ってみた

最近弊社ではソース管理にGitLabを使い始めた。

折角なので、GitLab CIを使ってみた。

まだまだ初心者中の初心者なので、ご指摘等ございましたらぜひお願いします。

 

やってみたのは下記内容

・サーバにGitLab Runnerを仕込み単純にGitから最新ソースを取得する

・Doker imageからAWS Elastic Beanstalkに更新をかける

・Doker imageからAWS S3経由でLambdaに更新をかける

 

・サーバにGitLab Runnerを仕込み単純にGitから最新ソースを取得する

CentOSにて実行

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
yum install -y gitlab-runner

でGitLab runnerを最新ソースを取得したいサーバにinstall

gitlab-runner register

で、いくつか質問されるので、順番に回答する

 

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/)

→GitLabのURL

Please enter the gitlab-ci token for this runner:

→GitLab画面

プロジェクト → CI/CD → Runner

画面に記載されているTokenを入力

Please enter the gitlab-ci description for this runner:

[ip-172-31-43-84.ap-northeast-1.compute.internal]:

→なんか、一意の判断

Please enter the gitlab-ci tags for this runner (comma separated):

→tagが必要であれば入れる

Please enter the executor: ssh, docker+machine, kubernetes, docker, docker-ssh, parallels, shell, virtualbox, docker-ssh+machine

→種類を入力、今回はshellで作成

 

ps aux | grep gitlab
→このコマンドで、GitLab CIがどのユーザで実行されるかを確認する

今回はrootで強制的に実行したかったので、

gitlab-runner uninstall
gitlab-runner install -user root
gitlab-runner restart

の3つを実行し、再度ユーザ確認すると、rootに変わっている

 

SSHログイン時に実行するコマンドを定義

yum install expect

→installを行う
vi ~/.bash_profile

→でファイル編集

記載内容

eval `ssh-agent`

# 秘密鍵ファイル
KEY_FILENAME='id_rsa'
# パスフレーズ
PASSPHRASE='password'

expect -c "
set timeout -1
spawn ssh-add $HOME/.ssh/$KEY_FILENAME
expect {
\"Enter passphrase for\" {
send \"$PASSPHRASE\r\"
}
}
expect {
\"denied\" { exit 1 }
eof { exit 0 }
}
"

 

で、該当プロジェクトの直下に

.gitlab-ci.yml

を作成

—pullの場合—
stages:
- deploy

deploy:
stage: deploy
script:
- id
- ssh-add -l
- ssh -vT git@gitlab.com
- cd /var/www/html/

git pull origin master:master
only:
- master
tags:
- tags_name

 

で、とりあえずmaster Push時にだけ反応するように設定

developだけであればdevelopに変更すればOK

次回は
・Doker imageからAWS Elastic Beanstalkに更新をかける
・Doker imageからAWS S3経由でLambdaに更新をかける

を書きます