GitLab-Runnerからssh通信で、ファイルを送れるWebサーバを構築する話
GitLab runnerが動いてくれない環境… sshポートとhttp(s)のみの公開環境などでCDするのはどうすれば良いかな?何て考えてみました。
正直、xUnitの実行結果レポートHTMLをチャックする方法を簡単に考えてみました。
簡単な図を書いておきますと
ま、シンプルに開発者のgit pushを実行すると、browser用のhtmlページができあがりました
webページをサブディレクトリに分けることで、いろいろなページがリリースされます。git pushとjobの間にマージリクエストを入れることで、1 commitだけでページを作るとか言う微妙な物もありませんし。
webページの実行前にはxUnitが走りますので、便利です
今回作ったサンプルプロジェクトはすごくシンプルです

はい、index.htmlが入っているpublicがあるだけですね。README.mdはアクセスurlとかメモっておきます
.gitlab-ci.ymlはCIを動かすための指示書です
stages:
- report
deploy:
stage: report
tags:
- www
script:
- scp -r -P 18822 ./public/* runner@192.168.1.203:/usr/share/nginx/html/
はい、bash読めない人は困りますが、単純です。
全部送るのは困るので今回はrunnerをtagに絞っています。
tagをwwwに移動した場合にこのスクリプトを動かすという感じです。
gitのtag移動にはコツがいるので後で書きます。
削除して、コミットして、追加してコミットって感じが普通の使い方です;;
次にサーバですが、runnerが走っているサーバから公開サーバの18822ポートsshでscpしてファイル内容をnginxのルートに突っ込んでいます
Runnerをtag固定にすること
はじめはGitlab-runnerを構成します…
はい、前回QNAPでのrunnerスクリプトを紹介しましたので割愛です
タグ付きのレジスタを作成します
# gitlab-runner register
Runtime platform arch=amd64 os=linux pid=36 revision=8fa89735
version=13.6.0
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.1.203:9080/
Enter the registration token:
tsa_DpDrZ9g_nsPLLvxw
Enter a description for the runner:
[d2c5b2137461]: cd_web_ruunner
Enter tags for the runner (comma-separated):
www
Registering runner... succeeded
runner=tsa_DpDrEnter an executor: virtualbox, docker+machine, kubernetes, docker-ssh, shell, parallels, ssh, docker-ssh+machine, custom, docker:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Enter tags… にて、wwwを指定しました。
後で、タグは修正できますので、ミスってもOKです
今回は、プロジェクトではなくグループに作りました。
Webサーバを立ち上げよう
公開のWebサーバ SSHで入れ込むサーバの構築をします。
今回の構成は、こんな感じで、QNAPのdockerで作成しました
http : 18880
ssh : 18822
Dockerに関してはnginx:latestで作りましたw
作成しましたら、SSHサーバを導入しましょう
# apt-get update
# apt-get -y upgrade
# apt-get -y install ssh
# service ssh restart
次に、sshで接続するユーザを作成します
# groupadd develop
# usermod -G develop runner
# usermod -G develop apache
# passwd runner
GitLab-runnerからのパスワードレスな接続を行う
鍵を登録することでパスワードがなしで登録できます
ので、ユーザ変更して、パスワードを作成して、Webサーバに送ります
# su gitlab-runner -
$ ssh-keygen -t rsa -b 4096
$ ssh-copy-id -i ~/.ssh/id_rsa.pub -p 18822 gitlab-runner@192.168.1.203
パスワード聞かれますので、入れればOKです
これでパスワードレスで接続可能になりました
実際に実行してみる…


OKになりました!