簡単な紹介
gitlab-ciはgitlab継続的インテグレーションの手段、つまり、継続的インテグレーションの略です。中央のアイデアは、ときにスクリプトの実行をトリガすることgitlabにすべてのプッシュして、スクリプトの内容は、カスタマイズされたコンテンツのテスト、コンパイル、デプロイ、などのシリーズを含んでいたことです。
自動配備は、それは次のように焦点を当て、役割の数を必要とします
GitLab-CI
これはGitLabを用いた継続的インテグレーションシステムでどこにGitLabの場合と、サーバーにインストールされている自身のGitLab、です。スクリプト解析.gitlab-ci.ymlはそれについて責任を負うことになります。
GitLab-ランナー
これはランナーを担当している.gitlab-ci.ymlのスクリプト部分を実行しているスクリプトの実行のキャリア、です。GitLab-CIプロジェクトは、それによれば、.gitlab-ci.ymlファイルで表示した後、各ランナーに割り当てられたルールは、適切なスクリプトスクリプトを実行します。これらのスクリプトのいくつかは、いくつかの展開に、使用されるアイテムをテストします。
.gitlab-ci.yml
これは一連のステージとルールの実施を記録し、gitのプロジェクトのルートディレクトリにあるファイルです。GitLab-CIは、内部の内容に応じて実行するようにランナーを呼び出し、プッシュした後、それを解決します。
パイプライン
など運用サーバーの展開プロセスなど、インストールの依存関係など、複数のプロセスを含むことができ、ビルドタスクに実際換算でパイプラインに一度、テストを実行し、コンパイル、デプロイ、テストサーバー、。
ステージ
ステージは、上述したプロセスを意味し、構築フェーズを表します。私たちは、パイプラインで複数の段階を定義することができ、これらのステージは、次のような特徴を持っています。
ステージを完全には、次のステージが開始されます場合は、すべてのステージは、つまり、順番に実行されます
すべての段階が完了した場合のみ、ビルドタスク(パイプライン)が成功します
ステージフェイルのいずれかが、その後、ステージのバックは実行されません場合は、ビルドタスク(パイプライン)の障害
ジョブズ
ジョブズは舞台の仕事が実行表し建設工事を、示しています。私たちは、ジョブズCEOは、次のような特徴を持っているであろう、内部のステージに複数のジョブを定義することができます。
ジョブの同じステージが並列に実行される
ジョブの同じステージ中に正常に実行され、ステージが成功する
すべてのジョブが失敗した場合は、その後、障害ステージそのビルドタスク(パイプライン)の障害
次のように投稿されましたフローチャートです。
インストールと展開
gitlab公式のリポジトリを追加します。
カール-L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudoのbashの
gitlabランナーの最新バージョンをインストールします。
yumをgitlabランナーをインストール-y
サービス開始
gitlabランナーのリストには、各ランナーの状態を表示するには
、サービスを停止するgitlabランナー停止を
サービス開始するgitlabランナーのスタートを
サービスを再起動するgitlabランナーの再起動を
登録
我々は、登録トークンの前に登録を取得する必要があります
トークンの特定の場所: gitlabプロジェクト- >設定- > CI / CD - >ランナーの設定
株式ランナーのトークン所在地:管理エリア- >セットのランナー
スタートレジスタ
gitlabランナーレジスタ
[root@localhost ~]# gitlab-runner register
Runtime platform arch=amd64 os=linux pid=1784 revision=577f813d version=12.5.0
Running in system-mode.
##输入你的Gitlab URL
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.60.133/
##输入注册令牌来注册Runner
Please enter the gitlab-ci token for this runner:
SeyTs9_4mKEsYjmfPr4e
##输入Runner说明
Please enter the gitlab-ci description for this runner:
[localhost]: test
##输入Runner的tags
Please enter the gitlab-ci tags for this runner (comma separated):
test
Registering runner... succeeded runner=SeyTs9_4
##输入Runner的执行方式
Please enter the executor: parallels, ssh, virtualbox, docker+machine, custom, docker, docker-ssh, shell, docker-ssh+machine, kubernetes:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
配置文件保存在/etc/gitlab-runner/config.toml
配置项类似下面,可能需要手动添加builds_dir和cache_dir这两个变量,再重启服务
[[runners]]
name = "216XX"
url = "https://git.XX.com/"
token = "xxxxxx"
executor = "shell"
builds_dir = "/home/gitlab-runner/builds"
cache_dir = "/home/gitlab-runner/cache"
[runners.cache]
如果要同时处理多个 build 的话,需要进 /etc/gitlab-runner/config.toml 文件配置 concurrent 它的值为 >1 的值
注销runner:
gitlab-runner unregister --url https://asdf.com/ci --token 43f334f34f34f34f4
或者
gitlab-runner unregister --name NAME 删除特定的Runner
下面我们去需要发布的项目里面的根目录编写.gitlab-ci.yml脚本进行自动发布
.gitlab.-ci.yml文件必须在项目的根目录进行创建:
stages:
- build
- test
- deploy
#打包阶段
build-job:
stage: build
tags:
- report
script:
- mvn clean package -Dmaven.test.skip=true -Pprod
only:
- master
#测试阶段
test-job:
stage: test
tags:
- report
script:
- docker run -d -v $(pwd)/target:/opt/tomcat-8.5/webapps -p 8099:8080 --name=xxxx public/tomcat-8.5
only:
- master
#手动部署阶段
deploy-job:
stage: deploy
tags:
- report
only:
- master
environment:
name: $report_v
url: $report_url
script:
- echo $(whoami)
- ssh -p 222 $report_host "/test/apache-tomcat/bin/shutdown.sh"
- ssh -p 222 $report_host "rm -rf /test/tomcat/webapps/*"
- scp -P 222 target/report.war $report_host:/test/tomcat/webapps
- ssh -p 222 $report_host "/test/tomcat/bin/startup.sh"
when: manual
配置.gitlab-ci.yml文件中用到的变量信息:CI / CD Settings/Variables,也可以直接在.gitlab.-ci.yml文件中指定,这里是为了安全考虑配置在了外面。
在项目的根目录写好.gitlab.-ci.yml脚本后就会自动触发构建部署
我们在jobs里面可以看到执行的状态,是否执行成功或者报错。
手动执行部署
需要在手动执行的阶段添加参数
when: manual
ここでは、展開を待って、手動タスクを実行するには、タスクのbuild_jobフェーズが正常に実行されたtest_job段階を見ることができます。
実装プロセスのステータスを表示することができますtest_jobをクリックすると、エラーが発生した場合、何か間違っている可能性があります。
次に、我々はタスクの手動デプロイtest_jobフェーズを行いました。
後者は、リフレッシュを実行し、あなたはすでに成功した実行見ることができます。
私たちの上にロールバックを設定し、手動での展開タスク.gitlab-ci.ymlを実行し、次に我々は、ロールバックを見て。
ロールバック
ときdeployタスク、次のパラメータを追加します。
環境:
名前: lims3_v
私たちは、私たちは前に歴史にポイントを見ることができ、当社のカスタムのバージョンが存在することがわかります。
ロールバックロールバックに戻す]ボタンをクリックしてください。
Q&A:
次のように与えられました:
図1:
その理由は、gitのバージョンであるバージョン2.12のgitのバージョンにアップグレードその後、低すぎます。
図2:
ソリューション:
リードgitの不足しているコンポーネントには、再コンパイルすることとのgitをインストールすることができます
図3:
ユーザーのアクセス許可の問題:
解决方法:chownコマンド-R gitlab-ランナー:gitlab-ランナー/ホーム/ gitlabランナー