2020年9月13日日曜日

Jenkins、上流ジョブから下流ジョブへパラメーターの引き渡す方法

やりたいことは、下流ジョブは上流ジョブからメッセージを受け取って表示します。そして上流ジョブのビルドURLも表示します。

まず、上流ジョブから下流ジョブにパラメーターを渡すこと

調査したところ、Jenkinsの「Parameterized Trigger plugin」というプラグインを使えばジョブ間のパラメーター引き渡す事ができます。

まずプラグインをインストールします。

次に、上流ジョブのビルドURLを取得し、下流ジョブに渡します。

ジョブのビルドURLを取得するには「BUILD_URL」を使います。

上流ジョブの「Predefined parameters」に、以下のように下流ジョブに渡す「メッセージ」と「ビルドURL」を定義します。

# ↓下流ジョブに渡す上流ジョブのビルドURL
LAST_TRIGGERED_JOB_URL=${BUILD_URL}
# ↓下流ジョブに渡すメッセージ
MESSAGE=[${JOB_NAME}]が正常に完了しました。




下流ジョブの「ビルドパラメータ化」を設定

下流ジョブの中、上流ジョブからのパラメータを使うには、「ビルドパラメータ化」を設定しないと直接使えないので、以下のように設定します。



 

2020年9月5日土曜日

eclipseを使って、リモートサーバに接続してリモートサーバのファイルを直接編集する方法

メタデータの先頭に移動

概要

ローカルでファイルを修正して開発サーバにあげて確認するのは一般的な流れだと思います。ただトライアンドエラーの回数が多いと、鬱陶しいです。リモートサーバにsshして修正するのもありですが、慣れたエディターで開発したいですね。eclipseのプラグイン「Remote System Explorer」を使えば、ローカルからリモートサーバに接続して直接リモートサーバのファイルを修正できます。

1.まずeclipseをダウンロード

こちらのサイトよりダウンロードできます。https://www.eclipse.org/downloads/packages/release/helios/sr2/eclipse-php-developers

2. 「Remote System Explorer」プラグインをインストール

「Help」→「Install New Software ...」の順にクリックします。↓

Work with: 「–All Available Sites」を選びます

「remote sytem」を入力し、しばらくしたらダウンロード可能なプラグイン一覧が表示されます。↓


一番先頭の「General Purpose Tools」の 「Remote System Explorer End-User Runtime」と「Remote system Explorer User Actions」にチェックを入れて、「Next」ボタンを押してインストールします。


以下の画面が表示されたら同じく「Next」ボタンを押します↓

続いてReview Licenses画面が表示されます。「I accept the terms of the license agreements」にチェックを入れて、「Finish」ボタンを押します。↓

インストール完了後「Restart Now」ボタンが表示されます。ボタンを押してリスタートします。

3.リモートサーバに接続

「Window」→「Show View」→「Other」の順にクリックします。表示された「Show View」ウィンドウの「Remote Systems」/「Remote Systems」を選択して「Open」します。


リモート接続の追加アイコンをクリックします。↓



「Select Remote System Type」から「SSH Only」を選択して「Next」ボタンを押します。↓





「Host name」にリモートサーバのIPを入力します。「Connection name」と「Description」に適切な名前と説明を入力します。





リモートサーバのフォルダーを展開しようとすると、ユーザーとパスワードが求められます。ssh用ユーザー名とパスワードを入力して「OK」ボタンを押せば接続できます。↓



2020年8月28日金曜日

CVSのステータスで表示された略称「P U ? C M A」の意味

 cvs update -Ad を実行すると、ターミナルには以下のように表示されます。

P xx.v
 
P xx.c
 
? xx.v
 
? xx.c
 
A xx.v
 
M xx.v
 
U xx.v
 
C xx.v

頭文字「P U ? C M A」のぞれぞれの意味は以下の通りです。

  • ? ===> CVSにはありません。
  • A ===> 新規(ローカルで追加されたが、まだコミットされていない)
  • C ===> コンフリクト(競合、複数の人が同時に同じ文書を編集している可能性あり)
  • M ===> 修正済み(修正済みだが未提出)
  • P ===> パッチ (Uに似ていますが、Uよりもデータの受け渡しが少ない)
  • U ===> 更新(ローカルファイルの更新や新しいファイルのダウンロード)
  • R ===> 削除(ファイルは削除されたがコミットされていない)

2020年8月23日日曜日

2020年8月16日日曜日

git特定のコミットのファイル一覧を表示するコマンド

 「git show コミット番号」で全ての差分を表示することができます。

ただ、差分ではなく、ファイル一覧のみを表示したい時があります。

以下のコマンドを使えば、コミット内の全てのファイルをリストアップすることができます。

git diff-tree --no-commit-id --name-only -r [コミット番号]
例:
git diff-tree --no-commit-id --name-only -r 1e3698d5fee9d3cdce68b6a708ba54efc47513d3

2020年6月20日土曜日

Solr Cloud一部のノードが「down」から復旧しない問題の解消方法

先日solr configファイルをいじって「upconfig」した後、solr再行動しようとしたらsolrが起動できなくなりました。

設定ファイルに何か問題があったようで、急いてconfigファイルを元に戻して再度solr再起動してみたら一応できましたが、ノードが「gone」の状態になっていまいました。

その後admin APIのDELETEREPLICAを使って消そうとしても消すことはできません。(使ったコマンドは以下の通りです。↓)

curl "http://localhost:8983/solr/admin/collections?action=DELETEREPLICA&collection=hoge&shard=shard1&replica=hoge_shard1_replica1"

サービス稼働中であるため、collectionを消して作り直すもできません。変なことをしたら他の活きているノードもし死なせたらサービスダウンになってしまうので、結構焦りました。


Solr管理画面の「Core Admin」で確認すると、そのコアが消えた状態となっています。「Add Core」ボタンより前と同じ名前のコアを作ってみることにしました。そしたら以下のようなエラーが管理画面のトップで表示するようになりました。

SolrCore Initialization Failures org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Error opening new searcher

調べてみたら、インデックスデータが作成中にシャットダウンしたり、接続が切断されたりすると、インデックスデータが破損して上記のエラーになってしまうようです。

解消方法は破損したデータを削除してsolrを再起動するだけです。具体的な手順は以下の通りです。

  • まずsolrをstopします。
  • tlogフォルダとdataフォルダの中身を全部削除します。
  • もしwrite.lockがあればそのファイルも削除します。
  • solrをstartします。

参考にした記事:https://community.cloudera.com/t5/Support-Questions/Solr-5-5-Solr-Exception-Error-opening-new-searcher-NiFi-Flow/td-p/127998

2020年6月14日日曜日

EC2インスタンスにSSHできないトラブルシューティング

EC2でインスタンスを作成しましたが、SSHしようとしたらできない。自分は何度も経験したのでそしてつい先も経験したのでトラブルシューティングメモとして残しておきたいと思います。

パブリックIPが割り振られたかどうか

以下のようにパブリックIPが割り振られたことを確認

セキュリティグループの確認

「セキュリティグループ」の「インバウンドルールの表示」で自分IPにアクセス権限を付与できたかどうかを確認。↓ポート22番ば自分のIPに向けて公開できている状態でなければなりません。

プライベートキーが合っているかどうかを確認

インスタンスを選択された状態で上の「接続」ボタンをクリックすれば、接続用情報が表示されます。

サブネットを確認

サブネットIDをクリックします。そしてサブネット先の「ルートテーブル」タブをクリックします。

ターゲットにインターネットゲートウェイに紐付いているかどうかを確認。プライベートサブネットで作られたインスタンスに直接SSHできないので、直接SSHしたい場合はパブリックで作る必要があります。

最終手段AWSに問い合わせ

とあるフォルダの中、作成日は一ヶ月前のファイルを消す

以下のコマンドを使えば「/home/hoge/」(サブフォルダも含む)中の作成日は一ヶ月前のファイルを消すことができます

find /home/hoge/ -type f -mtime +30 -exec rm -f {} \;

更に接尾詞は「.log」のファイルを絞りたい時

find /home/hoge/ -name "*.log" -type f -mtime +30 -exec rm -f {} \;

2020年6月2日火曜日

APIを使ってApache solrからデータを削除する方法

たまに特定な条件に一致するデータを削除したい時があります。

SolrのAPIを使えば実現できます。xml形式とjson形式をそれぞれ紹介します。

形式1、xml形式で削除

例:「title」というフィルドが存在します。「title」の中文字列「プレミアム」が存在しているドキュメントを全部削除

curl 'http://localhost:8983/solr/コア名を入れて/update?commit=true&stream.body=<delete><query>title:*プレミアム*</query></delete>'



形式2、json形式で削除

例:「category」(カテゴリ)と「update_at」(更新日)というフィルドが存在します。更新日は2018年12月13日前、かつカテゴリが「fasion」のドキュメントを削除

curl -H 'Content-Type: application/json' \
'http://localhost:8983/solr/コア名を入れて/update?commit=true' \
-d '{ "delete": { "query": "category:fasion AND update_at:[* TO 2018-12-13T00:00:00]" }}'