私はジェンキンスとドッカーには新しく、いくつかの調査をしてもこれらのことを行う方法は見つけられません。ジェンキンスは、生成されたレポートを含むドッカーコンテナ内に構築します
私がしたい:
- は、ドッキングウィンドウコンテナ内部の私のプロジェクトにpytestとのpython-カバレッジを実行します。
- これは、テストレポートとカバレッジレポートを生成する必要があります。
- 生成されたレポートにアクセスして、いくつかのJenkinsプラグインでそれらを読み取ります。
私はDockerでローカルに試してみるとうまくいきます。私はDockerfileを作成し、必要なlibsとソースコードを含むドッカー画像を作成し、コンテナが作成されテストを実行するときにスクリプトが呼び出されます。私は猫を使っていて、私の端末の中で生成されたレポートを見ることができたので、それが動作しているのがわかります。
私の問題は次のとおりです。Jenkinsのコンテナ内で生成されたレポートにアクセスし、後でプラグインを使用してそれらを読み取るにはどうすればよいですか。
編集:ここに私がしようとしていることの例がありますので、より良いアイデアを得ることができます。
まず、私のDockerfile例:
# starting from debian image
FROM debian
# install pytest and coverage to execute my tests
RUN apt-get update && apt-get install -y \
python-pytest \
python-coverage
# add source files to the image
ADD . /HelloPython/
WORKDIR /HelloPython/
# execute shell script which run tests
CMD sh ./compil.sh
私compil.shは、私はCloudBeesのプラグインでそれを実行したときに私のテストの実行
# Run unit tests and generate JUnit reports in the reports directory
py.test --junitxml reports/test-results.xml test*.py
# Generate reports of the test code coverage
python-coverage run -m unittest discover
python-coverage xml -o reports/test-coverage.xml
そして、ここに私のジェンキンスさんは、ログイン含まれています
Démarré par l'utilisateur chris
Building in workspace /var/lib/jenkins/workspace/HelloPythonCover
Build Docker image from ./Dockerfile ...
$ docker build --file /var/lib/jenkins/workspace/HelloPythonCover/Dockerfile /var/lib/jenkins/workspace/HelloPythonCover
Sending build context to Docker daemon 8.704 kB
Step 1 : FROM debian
---> 1b088884749b
Step 2 : RUN apt-get update && apt-get install -y python-pytest python-coverage
---> Using cache
---> a5883bbc27e4
Step 3 : ADD . /HelloPython/
---> c03ecb80040c
Removing intermediate container d2cc8ea14c11
Step 4 : WORKDIR /HelloPython/
---> Running in dc3b08c6fa02
---> 20f41970849c
Removing intermediate container dc3b08c6fa02
Step 5 : CMD sh ./compil.sh
---> Running in 14ceca0e5975
---> 853cb296b94f
Removing intermediate container 14ceca0e5975
Successfully built 853cb296b94f
Docker container faaedb777e032e38586278ad776e1561a9f1c5a92536c06bca7e3af12b74a355 started to host the build
$ docker exec --tty faaedb777e032e38586278ad776e1561a9f1c5a92536c06bca7e3af12b74a355 env
[HelloPythonCover] $ docker exec --tty --user 116:125 faaedb777e032e38586278ad776e1561a9f1c5a92536c06bca7e3af12b74a355 env BUILD_DISPLAY_NAME=#29 BUILD_ID=29 BUILD_NUMBER=29 BUILD_TAG=jenkins-HelloPythonCover-29 BUILD_URL=http://localhost:8080/job/HelloPythonCover/29/ CLASSPATH= EXECUTOR_NUMBER=0 HOME=/root HOSTNAME=faaedb777e03 HUDSON_HOME=/var/lib/jenkins HUDSON_SERVER_COOKIE=bd683ee6091ff880 HUDSON_URL=http://localhost:8080/ JENKINS_SERVER_COOKIE=bd683ee6091ff880 JENKINS_URL=http://localhost:8080/ JOB_NAME=HelloPythonCover JOB_URL=http://localhost:8080/job/HelloPythonCover/ NODE_LABELS=master NODE_NAME=master PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin TERM=xterm WORKSPACE=/var/lib/jenkins/workspace/HelloPythonCover /bin/sh -xe /tmp/hudson6836918802627685893.sh
Stopping Docker container after build completion
Finished: SUCCESS
ここで私の主な目標は、ジェンキンが生成されたレポートにアクセスする方法を見つけることです。また、ビルド中にドッカーコンテナ内に何が入っているのかを確認する方法はありますか?たとえば、ローカルで試してみたときに、私のシェルスクリプトの中にcat
を入れてレポートを見ようとしましたが、Jenkinsでは見る方法が見つかりませんでした。
あなたが使用しているメカニズムを構築していますか?あなたのビルドファイルに記載されているログの場所を確認できましたか? – DevD
私の説明は間違っています、私はそれを編集します。実際には、単体テストとコードカバレッジに関するレポートを生成するために、ソースコードにpytestとpython-coverageを実行しています。 – Whin3
共有ボリュームをお勧めします。 –