giteeプッシュによってトリガイベント後1.は、実行ウェブフックは、我々が設定したアドレスへのリクエスト
含まれているスクリプトは、上記のLinuxの実装をコンパイルする場合、現在はそれが「コンパイルのラベルを自動化する必要がある」が含まれていることをコミットするかどうかを決定するアドレス設定要求2.を自動展開プロジェクト
例:Linuxのスクリプトの実行が含まれている場合、上記の例では、それが現在は10086をコミット含まれていることを決定することです
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
(値= "/共通/ラン"、メソッド= RequestMethod.POST)が 公共 ResponseEntity (HttpServletRequestのリクエスト) スロー はParseException { 試みる { リストの<string> jsonList = org.apache.commons.io.IOUtils.readLines(request.getInputStream() ); もし(Objects.nonNull(jsonList)&& jsonList.size()> 0){ StringBuilderのjsonBuilder = 新規のStringBuilder(); jsonList.forEach(STR - > { jsonBuilder.append(STR); }); JSONObject jsonObject = JSON.parseObject(jsonBuilder.toString())。
JSONArray commitsJSONArray =(JSONArray)jsonObject.get("コミット"); ブールフラグ= 偽。以下のために(int型 I = 0、長さ= commitsJSONArray.size(); iは長さ<; iは++){ JSONObject childJSONObject =(JSONObject)commitsJSONArray.get(I)。 文字列メッセージ=(文字列)childJSONObject.get("メッセージ")。 log.info("获取到} {消息的里面コミット"、メッセージ)。もし(message.contains("10086" )){ フラグ= 真。 } }
log.info("フラグ的值{}" 、フラグ); もし(フラグ){ 工程(新しい文字列[] { "SH" 、"/root/run.sh" })。 } } } キャッチ(Throwableをスロー可能){ throwable.printStackTrace()。 } を返す(ResponseEntity.okを"执行完毕")。}
保護された ボイド 処理(文字列[] cmdArray) スローのThrowable { ProcessBuilderをPB = 新しい ProcessBuilderを(cmdArray)を、 pb.redirectErrorStream(真の); プロセスp = NULL ; BufferedReaderのBR = NULL ; 試す { P = pb.start()。 BR = 新しい BufferedReaderの(新しい InputStreamReaderの(p.getInputStream()))。 文字列の行= nullを
; log.info("シェルを起動:{}"、StringUtils.join(cmdArray、"" )); 一方、((ライン= br.readLine())!= NULL){ log.info(ライン) } p.waitFor()。 } 最後に { 場合(BR!= NULL){ br.close()。 } もし(!p = NULL){ p.destroy()。 } } }
|
オリジナル:ビッグボックス カスタムスクリプトはgitのをトリガー構築します