tmt
tmt copied to clipboard
tmt does not like if entrypoint is not standard
While working on our CLI tool, I found this annoyance, if I have ENTRYPOINT
set, tmt
starts the container with the command and just exits, subsequent commands file. The error is cryptic:
❯ tmt run -dddvvv
Using tree '/home/mvadkert/git/gitlab.com/testing-farm/cli'.
/var/tmp/tmt/run-007
tmt version: 1.9.0 (599b9a1)
Read file '/var/tmp/tmt/run-007/run.yaml'.
Run data not found.
Enabled steps: discover, report, finish, provision, execute and prepare
Sync the worktree to '/var/tmp/tmt/run-007/plans/sanity/tree'.
Run command 'rsync -ar --exclude .git /home/mvadkert/git/gitlab.com/testing-farm/cli/ /var/tmp/tmt/run-007/plans/sanity/tree'.
Found 1 plan.
Write file '/var/tmp/tmt/run-007/run.yaml'.
/plans/sanity
summary: Sanity test plan
info
environment: {}
context: {}
wake
discover
Read file '/var/tmp/tmt/run-007/plans/sanity/discover/step.yaml'.
Step data not found.
Read file '/var/tmp/tmt/run-007/plans/sanity/discover/tests.yaml'.
Discovered tests not found.
Using the 'DiscoverFmf' plugin for the 'fmf' method.
status: todo
Write file '/var/tmp/tmt/run-007/plans/sanity/discover/step.yaml'.
Write file '/var/tmp/tmt/run-007/plans/sanity/discover/tests.yaml'.
provision
Read file '/var/tmp/tmt/run-007/plans/sanity/provision/step.yaml'.
Step data not found.
Read file '/var/tmp/tmt/run-007/plans/sanity/provision/guests.yaml'.
Provisioned guests not found.
Using the 'ProvisionPodman' plugin for the 'container' method.
status: todo
Write file '/var/tmp/tmt/run-007/plans/sanity/provision/step.yaml'.
Write file '/var/tmp/tmt/run-007/plans/sanity/provision/guests.yaml'.
prepare
Read file '/var/tmp/tmt/run-007/plans/sanity/prepare/step.yaml'.
Step data not found.
Using the 'PrepareShell' plugin for the 'shell' method.
status: todo
Write file '/var/tmp/tmt/run-007/plans/sanity/prepare/step.yaml'.
execute
Read file '/var/tmp/tmt/run-007/plans/sanity/execute/step.yaml'.
Step data not found.
Read file '/var/tmp/tmt/run-007/plans/sanity/execute/results.yaml'.
Test results not found.
Using the 'ExecuteInternal' plugin for the 'tmt' method.
status: todo
Write file '/var/tmp/tmt/run-007/plans/sanity/execute/step.yaml'.
Write file '/var/tmp/tmt/run-007/plans/sanity/execute/results.yaml'.
report
Read file '/var/tmp/tmt/run-007/plans/sanity/report/step.yaml'.
Step data not found.
Report step always force mode enabled.
Clean up workdir '/var/tmp/tmt/run-007/plans/sanity/report'.
status: todo
Using the 'ReportDisplay' plugin for the 'display' method.
Write file '/var/tmp/tmt/run-007/plans/sanity/report/step.yaml'.
finish
Read file '/var/tmp/tmt/run-007/plans/sanity/finish/step.yaml'.
Step data not found.
Using the 'FinishShell' plugin for the 'shell' method.
status: todo
Write file '/var/tmp/tmt/run-007/plans/sanity/finish/step.yaml'.
action
go
discover
workdir: /var/tmp/tmt/run-007/plans/sanity/discover
how: fmf
order: 50
Run command 'git rev-parse --show-toplevel'.
out: /home/mvadkert/git/gitlab.com/testing-farm/cli
directory: /home/mvadkert/git/gitlab.com/testing-farm/cli
Copy '/home/mvadkert/git/gitlab.com/testing-farm/cli' to '/var/tmp/tmt/run-007/plans/sanity/discover/default/tests'.
Run command 'git rev-parse --short HEAD'.
out: 3111ba8
hash: 3111ba8
Check metadata tree in '/var/tmp/tmt/run-007/plans/sanity/discover/default/tests/'.
summary: 2 tests selected
/tests/commands/request
/tests/commands/version
status: done
Write file '/var/tmp/tmt/run-007/plans/sanity/discover/step.yaml'.
Write file '/var/tmp/tmt/run-007/plans/sanity/discover/tests.yaml'.
Write file '/var/tmp/tmt/run-007/plans/sanity/discover/run.yaml'.
provision
workdir: /var/tmp/tmt/run-007/plans/sanity/provision
how: container
order: 50
image: quay.io/testing-farm/cli:latest
Check for container image 'quay.io/testing-farm/cli:latest'.
out: 082f27d79382
name: tmt-var-tmp-tmt-run-007-plans-sanity
Start container 'quay.io/testing-farm/cli:latest'.
Run command 'podman run --security-opt seccomp=unconfined --name tmt-var-tmp-tmt-run-007-plans-sanity -v /var/tmp/tmt/run-007/plans/sanity:/var/tmp/tmt/run-007/plans/sanity:Z -itd quay.io/testing-farm/cli:latest'.
err: time="2022-02-09T20:46:01+01:00" level=warning msg="The input device is not a TTY. The --tty and --interactive flags might not work properly"
out: 0de66e9ef36b875974b0b3e7a92e8f702af38b1c827438351643f9f352f651d9
Run command 'podman exec tmt-var-tmp-tmt-run-007-plans-sanity sh -c cat /etc/os-release'.
out: PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
out: NAME="Debian GNU/Linux"
out: VERSION_ID="11"
out: VERSION="11 (bullseye)"
out: VERSION_CODENAME=bullseye
out: ID=debian
out: HOME_URL="https://www.debian.org/"
out: SUPPORT_URL="https://www.debian.org/support"
out: BUG_REPORT_URL="https://bugs.debian.org/"
distro: Debian GNU/Linux 11 (bullseye)
Run command 'podman exec tmt-var-tmp-tmt-run-007-plans-sanity sh -c uname -r'.
out: 5.15.16-100.fc34.x86_64
kernel: 5.15.16-100.fc34.x86_64
summary: 1 guest provisioned
status: done
Write file '/var/tmp/tmt/run-007/plans/sanity/provision/step.yaml'.
Write file '/var/tmp/tmt/run-007/plans/sanity/provision/guests.yaml'.
prepare
workdir: /var/tmp/tmt/run-007/plans/sanity/prepare
summary: 0 preparations applied
status: done
Write file '/var/tmp/tmt/run-007/plans/sanity/prepare/step.yaml'.
execute
workdir: /var/tmp/tmt/run-007/plans/sanity/execute
how: tmt
order: 50
exit-first: False
Write file '/var/tmp/tmt/run-007/plans/sanity/execute/data/tests/commands/request/metadata.yaml'.
Write file '/var/tmp/tmt/run-007/plans/sanity/execute/data/tests/commands/version/metadata.yaml'.
Write file '/var/tmp/tmt/run-007/plans/sanity/execute/tmt-file-submit'.
Back up '/usr/bin/rstrnt-reboot' if present.
Run command 'podman exec tmt-var-tmp-tmt-run-007-plans-sanity sh -c [ ! -e "/usr/bin/rstrnt-reboot" ]'.
Run command 'podman exec tmt-var-tmp-tmt-run-007-plans-sanity sh -c cp "/var/tmp/tmt/run-007/plans/sanity/execute/default/reboot_template" "/usr/bin/rstrnt-reboot" && chmod +x "/usr/bin/rstrnt-reboot"'.
err: Error: can only create exec sessions on running containers: container state improper
Command returned '255'.
Remove our reboot script implementations.
Run command 'podman exec tmt-var-tmp-tmt-run-007-plans-sanity sh -c rm "/usr/bin/rstrnt-reboot"'.
err: Error: can only create exec sessions on running containers: container state improper
Command returned '255'.
finish
workdir: /var/tmp/tmt/run-007/plans/sanity/finish
Run command 'podman container stop tmt-var-tmp-tmt-run-007-plans-sanity'.
out: tmt-var-tmp-tmt-run-007-plans-sanity
container: stopped
Run command 'podman container rm -f tmt-var-tmp-tmt-run-007-plans-sanity'.
out: 0de66e9ef36b875974b0b3e7a92e8f702af38b1c827438351643f9f352f651d9
container: removed
summary: 0 tasks completed
status: done
Write file '/var/tmp/tmt/run-007/plans/sanity/finish/step.yaml'.
stderr (1/1 lines)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: can only create exec sessions on running containers: container state improper
Failed to run command 'podman exec tmt-var-tmp-tmt-run-007-plans-sanity sh -c rm "/usr/bin/rstrnt-reboot"'. Reason: Command returned '255'.
I believe we should support setting entrypoint in these cases or maybe even force entrypoint to sh
? WDYT @lukaszachy @psss ?