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になりました!