ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです

私は、1から展開を自動化された方法を確認するためのコードのジェンキンス継続的インテグレーション

背景

最近、仕事のための統合持続ジェンキンスを習得する必要があります。勤勉とハンサムな私にとっては。彼はShoudaoqinlai学習ではありません。テスト環境 - - ポイントのライン環境会社はなど、ほとんど使用gitlab、ジェンキンス、上記のコードの展開における中小新興企業である、明確な生産環境がありません。一部だけが書かれ​​たコード - オープンサービス - ログインサービスは、サービス、アップロードのコードをシャットダウンします。それは多くの問題を来る傾向にあるが、また、プログラマに面倒な作業の多くをもたらすでしょう。彼らは、コードを展開するgitlab +ジェンキンスを採用したいので、これは、会社の再編の中に、明確なプロセスを必要とし、ない、とプログラマの負担を軽減するためです。

需要

プログラマによってgitlabにコードを提出し、ジェンキンスさんは、自動配信のトリガーをトリガー;テストサーバーにデプロイ、通常の場合、正式にオンライン環境に提出

環境の紹介

Ubuntu18.04:

          网络:内网环境
          服务:gitlab环境

Ubuntu16.04:

          网络:内网环境
          服务:jenkins

CentOSの7:

          网路:公网环境
          服务:php+nginx+mysql

環境をテストするためのパブリックネットワーク環境は、オンライン環境が存在しない、環境には、プライマーことができ、ラインが正常に同じように真実をテストしました。

展開プロセス

なぜそれを自動化するために1から展開?私は、展開プロセスのインストールを書きたくないので。このプロセスは、何のピットと難しい非常に単純ではありません。Baiduは、少し、たくさん。

前提条件:
1、あなたはもちろん、使用する他の誰かのは、プロジェクトが、後ろにいくつかの権限情報を設定し、それが他の人に面倒であってもよいし、自分のアカウントとgitlab独自のプロジェクトを持っている必要があります。彼のように、最も便利です。
2、公開サーバーは、パブリックネットワークサーバプルgitlabコードを使用して、エラーを低減するためにあるため、ネットワークgitlabプロジェクトにアクセスできる必要があります。具体的に、我々は戻って話しました。
3、恐れていないハード心、そしてハンサムな顔を持っています。

まず、該当するプラグインをインストール

システム管理]をクリックします - 管理プラグインは、あなたが挿入する検索ボックスをダウンロードすることができます。これは単に時間の初期化手順のジェンキンスさんにも、プラグインがインストール、機器に負担をかけ、インストールしようとしています。自分のニーズによると、ハ!

第二に、ジェンキンス上のジョブを作成

1、新しいタスク
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです
を決定するために-選択- -選択ライン2は、タスク名を入力して
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです
これらのプロジェクトの利点と欠点の簡単な概要を

フリースタイル仕事は
設定ページで設定項目やパラメータ完了するために、モジュールを追加する必要が
唯一の機能を実現することができ、各ジョブの
コード化することはできませんが、移行およびバージョン管理を助長されていません

パイプラインは、プロジェクト
のすべてのパラメータは、パイプラインのスクリプトとして具体化することができる
のワーキングセット構築するために、複数段のパイプライン定義することができ
、構成コード技術、簡単なバージョン管理と設定の移行ジョブ
ジェンキンスプロジェクト内で記述されたスクリプトを

多分岐パイプライン
ラインの利点
にGitLabプロジェクトで記述されたスクリプト(Jenkinsfile)

多分岐ラインについては、それがhttps://blog.51cto.com/12639039/2352222ブログをお勧めします

3、ジョブ構成インターフェイスに-ビルドトリガにクリックし
構成されていない一般的な必要性
、プログラマのニーズとしてはgitlab、ジェンキンストリガーに新しいコードを提出します。トリガを構築するときに、次のオプションを選択してください

ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです

このGitlabは、URLをウェブフック無視しないでください:。このウェブフックのジェンキンスは、自動ビルドをトリガするために使用されます。

[詳細設定]をクリックし、秘密のトークンを作成

ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです
4、ウェブフックgitlab 3添加工程上の
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです
ウェブフックのURLを記入する;ステップ3ランダムに生成された文字列でシークレットトークンの塗りを。完了して、[追加]をクリックします。
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです

在这里可以进行测试连通性。
注意到这里的时候,你可能会遇到一个问题:有些用户添加的时候会报这样一个错误,
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです
说是不允许本地网络请求。这是由于新版本安全性的问题造成的,非常容易解决!
解决方法:使用gitlab管理员账户登陆。
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです
将那两个全部勾选。然后回去重新添加即可。
5、编写pipeline脚本
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです
这里有两个选择,第一个是在这里直接写入脚本(温馨提示,脚本在自己电脑上的编辑器上写好粘贴到这里,因为这里的编辑器像吃了翔一样难用!太难了。。。)第二个是使用jenkinsfile文件。我使用了第一个(因为演示操作简单,易懂!嘿嘿)。
写完后点击保存。即可完成一个job的创建

你以为这就完了。最重要的才刚刚开始!!!!!!!!!!!!!!!!!!!!!!!!!!!


三、pipeline script编写

让我们再来回顾一下需求:

程序员通过提交代码到gitlab上;出发jenkins自动部署触发器;部署到测试服务器,如果正常,提交到正式线上环境。不过,我觉得这个没有任何挑战性。我想自己加点难度,不管部署过程是否成功,都要有个钉钉消息发到程序员小哥哥的群里,给他们个警示!

话不多说,上代码一点点解释:
温馨提示:这是我为了满足自身需要而编写的代码,请不要照搬,当然与我有同样需求的随意喽。同时中间的解释也根据我的代码去解释,没有刻意去讲解语法,请谅解!

pipeline{
    agent any
    stages{
        stage("拉去代码"){
            steps {
                echo "STEP 1 :clone code"
            }

        }
        stage("打包代码"){
            steps {
                echo "step 2 : code package"
                sh label: '', script: '/usr/bin/ssh -p 62322 root@*.*.*.* "cd /var/www/html/pipeline/mytest && git pull && chmod -R 777 /var/www/html/pipeline/mytest/storage && composer install"'
            }
        }
        stage("上线发布"){
            steps {
                echo "step 3 :deploy package"
            }
        }
    }
    post {
        success {
            dingTalk accessToken:'钉钉机器人的token', 
            imageUrl:'图片的url', 
            jenkinsUrl:'http://192.168.5.194:8080/', 
            message:'pipeline-test代码部署成功。', 
            notifyPeople:''
        }
        failure {
            dingTalk accessToken:'钉钉机器人的token', 
            imageUrl:'图片的url', 
            jenkinsUrl:'http://192.168.5.194:8080/', 
          message:'pipeline-test代码部署失败'。, 
          notifyPeople:''
        }
    }

}

详解:

agent

          指示 Jenkins 为整个流水线分配一个执行器(在 Jenkins 环境中的任何可用代理/节点上)和工作区。

echo

          写一个简单的字符串到控制台输出。注意这里不是shell命令行的echo或php语法。和他们作用相同而已。

stage

          定义了在整个流水线的执行任务的概念性地不同的的子集(比如 "Build", "Test" 和 "Deploy" 阶段), 它被许多插件用于可视化 或Jenkins流水线目前的 状态/进展.

可能这句话不太形象(我第一次看官文也是蒙蔽),来张图
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです

其中最后一个是post处理的状态。

在打包代码的stage块中

sh label: '', script: '/usr/bin/ssh  root@*.*.*.* "cd /var/www/html/pipeline/mytest && git pull && chmod -R 777 /var/www/html/pipeline/mytest/storage && composer install"'

这是通过jenkins的片段生成器生成的符合语法的命令,可以在shell中去执行的命令
那么,如何使用jenkins片段生成器?
(1)、点击流水线语法
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです

(2)、从实例步骤中选择sh:shell script。在文本框输入需要生成的shell命令,
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです
(3)、点击生成流水线脚本 按钮即可成成相应的流水线语法

Post

类似于python中try语句。如何根据stage执行的结果而进行特定处理则是实际Pipeline使用中经常会碰到的问题。所以这里post就是来做对异常处理的功能。同时,你也可以理解为自由风格中的构建后的操作步骤(在自由风格中发钉钉可以下载dingding的插件)。而这个post块,就是我要满足自己加的钉钉反馈的需求。说到这里为了让大家更明白post的使用方法想再多解释一下:

使用限制:

需要写在pipeline或者stage块中
注意:post块的位置一定要遵循这个原则,否则不会执行。

支持的条件预置:

always: 无论pipeline或者stage的执行结果如何,此块中的预置操作都会执行。

changed:只有当pipeline或者stage的执行后,当前状态与之前发生了改变时,此块中的预置操作才会执行。

fixed:前一次运行为不稳定状态或者失败状态,而且本次运行成功结束,这两个条件同时满足时,此块中的预置操作才会执行。

regression: 本次运行状态为不稳定状态,失败状态或者是中止状态,而且前一次运行成功结束,这两个条件同时满足时,此块中的预置操作才会执行。

aborted:当前pipeline或者stage的状态为aborted时,此块中的预置操作才会执行。通常是由于流水线被手工中会导致此状态产生,而产生此状态后,通常在Jenkins的UI界面会显示为灰色。

failure:当前pipeline或者stage的状态为failed时,此块中的预置操作才会执行。而产生此状态后,通常在Jenkins的UI界面会显示为红色。

success:当前pipeline或者stage的状态为success时,此块中的预置操作才会执行。而产生此状态后,通常在Jenkins的UI界面会显示为绿色。

unstable: 当前pipeline或者stage的状态为unstable时,此块中的预置操作才会执行。通常情况下测试失败或者代码规约的违反都会导致此状态产生,而产生此状态后,通常在Jenkins的UI界面会显示为黄色。

unsuccessful:当前pipeline或者stage的状态不是success时,此块中的预置操作才会执行。

cleanup:无论pipeline或者stage的状态为何种状态,在post中的其他的条件预置操作执行之后,此块中的预置操作就会执行。

我用到了两个,分别是success和failure,在成功时应该做什么操作,在失败时应该做什么操作。

dingTalkaccessToken:'钉钉机器人的token', 如果不知道如何添加钉钉机器人,去隔壁百度即可
imageUrl:'在发送的信息里会附加这个图片',
jenkinsUrl:'自己jenkins的访问地址', 发送的信息就是这个链接,可以直接跳转到我们的jenkins
message:'发送的文本信息、提示信息',
notifyPeople:'需要通知的人'

私はまた、スクリプト、完成したプレゼンテーションの状況についてはこちらです。あなたはより詳細なジェンキンス文法、推奨学習アドレスしたい場合
https://jenkins.io/zh/doc/book/pipeline/中国語、非常に詳細を。私はパートナーが参照できる類似のニーズに合わせて、ちょうど私の個人的なニーズを満たすためにスクリプトを記述するためにここにいます!

もう一つのリマインダー:初心者は可能な限り標準化され、優れたコードブロックを書き込むことに注意を払う、とても簡単なトラブルシューティングのいくつかの種類必要があります。最も可能性が高いため、コードの中括弧のブロックのGroovyの構文は半日を見つけることができるようになります。だから、仕様にしてみてください。よりよいのためのGroovyの構文の強調表示エディタがある場合。

第四に、ジョブのテスト動作
のすぐクリック建物
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです

完成したら、コンソール出力を通じてプロセス全体を見ることができます

ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです
ネイルニュース
ジェンキンス継続的インテグレーション - 私は、自動的に1から展開コードを参照してくださいするにはどうすればよいです

これはあなたの弟のプログラマはそれをしようとするコードをプッシュしてみましょう、行われます!

おすすめ

転載: blog.51cto.com/12332766/2460393