CICDのベースとgitlab-CI

簡単な紹介

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は、次のような特徴を持っているであろう、内部のステージに複数のジョブを定義することができます。
ジョブの同じステージが並列に実行される
ジョブの同じステージ中に正常に実行され、ステージが成功する
すべてのジョブが失敗した場合は、その後、障害ステージそのビルドタスク(パイプライン)の障害

次のように投稿されましたフローチャートです。

image.png

インストールと展開

gitlab公式のリポジトリを追加します。

カール-L  https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh  | sudoのbashの

gitlabランナーの最新バージョンをインストールします。

yumをgitlabランナーをインストール-y


サービス開始

gitlabランナーのリストには、各ランナーの状態を表示するには
、サービスを停止するgitlabランナー停止を
サービス開始するgitlabランナーのスタートを
サービスを再起動するgitlabランナーの再起動を


登録

我々は、登録トークンの前に登録を取得する必要があります

  1. トークンの特定の場所:  gitlabプロジェクト- >設定- > CI / CD - >ランナーの設定

image.png

株式ランナーのトークン所在地:管理エリア- >セットのランナー

image.png

スタートレジスタ


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_dircache_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文件中指定,这里是为了安全考虑配置在了外面。

image.png

在项目的根目录写好.gitlab.-ci.yml脚本后就会自动触发构建部署


image2019-12-2_12-42-54.png?バージョン= 1&modificationDate = 1575261774000&API = V2

我们在jobs里面可以看到执行的状态,是否执行成功或者报错。

手动执行部署

需要在手动执行的阶段添加参数

when: manual

ここでは、展開を待って、手動タスクを実行するには、タスクのbuild_jobフェーズが正常に実行されたtest_job段階を見ることができます。


image2019-12-9_10-53-39.png?バージョン= 1&modificationDate = 1575860019578&API = V2

実装プロセスのステータスを表示することができますtest_jobをクリックすると、エラーが発生した場合、何か間違っている可能性があります。

image2019-12-9_10-55-20.png?バージョン= 1&modificationDate = 1575860120897&API = V2

次に、我々はタスクの手動デプロイtest_jobフェーズを行いました。

image2019-12-9_10-56-26.png?バージョン= 1&modificationDate = 1575860186324&API = V2

後者は、リフレッシュを実行し、あなたはすでに成功した実行見ることができます。

image2019-12-9_10-56-59.png?version=1&modificationDate=1575860219928&api=v2

私たちの上にロールバックを設定し、手動での展開タスク.gitlab-ci.ymlを実行し、次に我々は、ロールバックを見て。

ロールバック

ときdeployタスク、次のパラメータを追加します。

環境:
  名前: lims3_v


私たちは、私たちは前に歴史にポイントを見ることができ、当社のカスタムのバージョンが存在することがわかります。

image2019-12-9_11-1-44.png?version=1&modificationDate=1575860504222&api=v2
ロールバックロールバックに戻す]ボタンをクリックしてください。

image2019-12-9_11-5-23.png?version=1&modificationDate=1575860723668&api=v2


Q&A:

次のように与えられました:

図1:

image2019-12-2_13-54-33.png?version=1&modificationDate=1575266073000&api=v2

その理由は、gitのバージョンであるバージョン2.12のgitのバージョンにアップグレードその後、低すぎます。


図2:

image.png

ソリューション:

リードgitの不足しているコンポーネントには、再コンパイルすることとのgitをインストールすることができます


図3:

image.png

ユーザーのアクセス許可の問題:

解决方法:chownコマンド-R gitlab-ランナー:gitlab-ランナー/ホーム/ gitlabランナー


おすすめ

転載: blog.51cto.com/7072753/2457116