質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

3180閲覧

Docker上のコンテナ(Jenkins)から実行ファイルを起動させたい

max_eipi

総合スコア7

Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2019/09/07 02:49

編集2019/09/07 06:08

やりたいこと及び問題点

Docker上のコンテナとしてJenkinsが立ち上がっています。
このJenkinsのジョブで[シェルの実行]内で実行ファイルを指定して起動させたいのですが、
実行すると次のエラーが吐き出されエラーとなりました。

[Jenkins_Test] $ /bin/sh /tmp/jenkins****.sh /tmp/jenkins****.sh: line 2: ./called_program: not found

一応[シェルの実行]のコードを載せます。

#!/bin/sh ./called_program

これを呼び出せるようにするには、どのようにすれば良いのでしょうか?
あるいは、どういう箇所に着目すれば良いでしょうか?

試していること

  • ホストマシンから該当の実行ファイルを起動することを確認しています。
  • Jenkinsコンテナに入って該当の実行ファイルを起動しようとすると、

次のエラーが出たのを確認しています。

bash: ./called_program: No such file or directory

[追記]
また、ジェンキンスジョブに書いたものと同等のシェルスクリプトを作成して実行した場合、

  • ホストマシンからだと起動を確認
  • コンテナからだとJenkinsジョブのコンソールに出力されたエラーと同じであることを確認

このようになりました。

[追記]
JenkinsコンテナのOSを確認したところ、Alpineであることが分かったため、
後述の『環境』にあるプログラムを linux-musl-x64 でビルドしコンテナから呼び出したところ、
下記のエラーが出ました。

error: Error loading shared library libintl.so.8: No such file or directory (needed by /var/jenkins_home/workspace/Jenkins_Test/publish/libcoreclr.so) Failed to bind to CoreCLR at '/var/jenkins_home/workspace/Jenkins_Test/publish/libcoreclr.so'

環境

Windows上で開発している.Net CoreプロジェクトをUbuntu向け(linux-x86)に自己完結型でパブリッシュしたもの

補足

Linux/Docker/Jenkins諸々初学者です。
「Linux触りたいけどなー。素人だからあれこれ入れてるうちによくわからなくなってくるからなー。
ん?Docker?これは便利そう。(すぐ破棄することができるから)
丁度今Jenkinsジョブを自分で作れるようにしたいからそこらへん取り巻きで勉強がてらやってみるかー。」
というきっかけで遊んでたら今に至りました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

jenkins job は実行時に自身の workspace フォルダをルートディレクトリとして扱います。
workspace フォルダに ./called_program がないため、 No such file or directory と言われています。

  1. シェルスクリプトの ./called_program の前行に pwd を1行追加
  2. ジョブを実行し workspace フォルダがどこにあるのか確認
  3. workspace フォルダ内に ./called_program を配置してジョブを再実行

すれば暫定的に回避可能です。

投稿2020/01/23 14:49

yurak

総合スコア160

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問