gitlabのgitlab-runner自動配置
5088 ワード
転載先:https://blog.csdn.net/hxpjava1/article/details/78514999
gitlab-ciの全称はgitlab continuous integrationの意味であり、すなわち持続的な統合である.中心的な考え方は、gitlabにpushが届くたびに、スクリプトの実行がトリガーされ、スクリプトの内容にはテスト、コンパイル、導入などのカスタムコンテンツが含まれます.本稿ではgitlab-ciの持続的な統合を用いて自動導入を実現する.これまでのwebhookの自動導入に比べて、強力で便利です.
自動導入にはいくつかの役割があります.主に次のように説明します. GitLab-CIこれはGitLabに合わせて使用される持続的な統合システムで、GitLabが持参したものです.つまり、GitLabをインストールしたサーバーに搭載されています.あまり考えなくてもいいです.gitlab-ci.ymlのスクリプト解析はそれが担当します. GitLab-Runnerこれはスクリプト実行のベアラである.gitlab-ci.ymlのscript部分の実行はrunnerが担当しています.GitLab-CIはプロジェクトをブラウズしたことがある.gitlab-ci.ymlファイルの後、中のルールに従って、各Runnerに割り当てて、対応するスクリプトscriptを実行します.これらのスクリプトには、テストプロジェクト用のものもあれば、導入用のものもあります.GitLab-CIとGitLab-Runnerの関係概略図 .gitlab-ci.yml gitプロジェクトのルートディレクトリの下にあるファイルで、一連のフェーズと実行ルールが記録されています.GitLab-CIはpush後に解析し,その内容に基づいてrunnerを呼び出して実行する.
インストールGitLab-CIこれはインストールする必要はありません.GitLabを装着すると を持参します.インストールGitLab-Runner centOSにgitlab-ci-multi-runnerをインストールgitlab-ci-multi-runnerをインストールします.しかし、gitlab-runnerをインストールしただけです.もちろんgitlab-CIにこのrunnerを登録します.そうしないと、gitlab-CIはpushイベントが来たときに誰を呼び出すか分かりません.ここでもwebhook方式との違いを見つけることができます.webhook方式はgitlabに接続するようにアクティブに構成されています.gitlab-runnerは登録すればいいです.では、登録して登録します.gitlabの対応する場所には、登録したrunner情報が表示されます.
作成.gitlab-ci.ymlはプロジェクトルートディレクトリの下で作成する.gitlab-ci.ymlはpushの後gitlab-ciが自動的に認識して解析する. ここにはdeployというステージが1つしかありません.onlyは、masterブランチpushの場合にのみ実行されることを指定します.tagsはshellで、さっきrunnerに登録したときのtagsに対応しています.最も重要なscriptセクションdeploy Example_Group Example_Project、ここではshellコマンドです.汎用性を容易にするために、deployは私がサーバーで作成したスクリプトで、入力パラメータはExample_です.Group Example_Projectは、それぞれプロジェクトグループ名とプロジェクト名です.このコマンドを実行すると、/xxx/Example_に自動的に配置できます.Group/Example_Projectのサーバディレクトリの下にあります.では、どんなプロジェクトでもこのフォーマットでカバーすればいいので、新しいプロジェクトの自動配置もサーバにログインして修正する必要はありません. deployスクリプトはgitlab-runnerの~/.local/bin/ディレクトリの下にdeployファイル を新規作成 $ su gitlab-runner $ mkdir ~/.local/bin $ cd ~/.local/bin $ touch deploy は、ディレクトリが存在しない場合はgit clone、存在する場合はgit pullの1つを指定ディレクトリの下に編集する を加える sshログイン上のdeployスクリプトを構成するには、gitlabにssh方式で連絡します.だからgitlab-runnerというユーザーにgitlab上でsshできるユーザーを構成します.まずgitlab-runnerの下で鍵対 を生成する. 配置ディレクトリ権限の移管スクリプトの実行に失敗したと主張する学生もいるかもしれませんが、/var/exampleの所有者がrootであり、gitlab-runnerは新しいファイルを作成する権限がないためです.だから私たちは/var/exampleディレクトリの所有者をgitlab-runner 注:発行実行中にsshの鍵検証がssh-keyscan-Hサーバip>~/.ssh/known_hosts
git pushを対応するプロジェクトに試して、サーバーのディレクトリに行って、あるかどうか見てみましょう.
概要
gitlab-ciの全称はgitlab continuous integrationの意味であり、すなわち持続的な統合である.中心的な考え方は、gitlabにpushが届くたびに、スクリプトの実行がトリガーされ、スクリプトの内容にはテスト、コンパイル、導入などのカスタムコンテンツが含まれます.本稿ではgitlab-ciの持続的な統合を用いて自動導入を実現する.これまでのwebhookの自動導入に比べて、強力で便利です.
げんり
自動導入にはいくつかの役割があります.主に次のように説明します.
ステップ
$ curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
$ yum install gitlab-ci-multi-runner
$ gitlab-ci-multi-runner register
# gitlab url, url, http://gitlab.example.com/
# token, token, ase12c235qazd32
# tag, runner, tag runner , , web,hook,deploy
# executor, , shell 。
stages:
- deploy
- build
- ops
deploy-web1_job:
stage: deploy
tags:
- gitRunner tag
only:
- master
script:
- bash deploy master
build-web1_job:
stage: build
tags:
- gitRunner tag
only:
- master
script:
- source /etc/profile
- cd /data/wwwroot/master/ /
- /data/wwwroot/apache-maven-3.6.0/bin/mvn clean package -Dmaven.test.skip=true
ops-web1_job:
stage: ops
tags:
- gitRunner tag
only:
- master
script:
- rm -f /data/wwwroot/tomcat/apache-tomcat-8.5.35/webapps/ .war
- cp /data/wwwroot/master/ / /target/ .war /data/wwwroot/tomcat/apache-tomcat-8.5.35/webapps/ .war
if [ $# -ne 3 ]
then
echo "arguments error!"
exit 1
else
deploy_path="/data/wwwroot/$3/$1/$2"
if [ ! -d "$deploy_path" ]
then
git clone "gitlab :${1}/${2}.git" $deploy_path
cd $deploy_path
git checkout $3
else
cd $deploy_path
git pull
fi
fi
というスクリプトの大意である.これにより、自動導入の目的が達成されます.中のgitlabを修正してください.example.comのアドレスですよ.実行権限を付けてgitlab-runnerの~/.local/binで有効になります(見苦しい./deployを書かないように)$ chmod +x ~/.local/bin/deploy
そして~/.local/binを$PATHパスに追加する(ユーザがコマンドを実行するときにこのディレクトリを見つけることができる).profile末尾にこの言葉PATH="$HOME/.local/bin:$PATH"
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ssh-keygen
#
$ cat id_rsa.pub
はcatで公開鍵を表示し、この一連の公開鍵をコピーする.gitlabにgitlab-runnerというアカウントを新規作成し、このアカウントをプロジェクトメンバーに追加し、このアカウントのuser_profileの中に、公開鍵を貼り付けるといいです.つまりこのアカウントをsshでログインできるようにしています.$ chown -hR gitlab-runner:gitlab-runner /var/www
に渡しました.もし成功しなかったら、サーバー上で手作業でdeploy XXを一度、このサーバーに初めてアクセスしたとき、signを既知のサーバーリストに追加するには、手作業でyesを入力する必要があるというコマンドラインのヒントがあります.サーバ上で正常なdeployがあれば、これで大成功です.git pushを対応するプロジェクトに試して、サーバーのディレクトリに行って、あるかどうか見てみましょう.