kitchen-docker 2.11.0 → 2.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.kitchen.yml +15 -14
- data/CHANGELOG.md +66 -77
- data/README.md +14 -0
- data/lib/kitchen/docker/docker_version.rb +1 -1
- data/lib/kitchen/docker/helpers/cli_helper.rb +21 -0
- data/lib/kitchen/docker/helpers/image_helper.rb +10 -4
- data/test/Dockerfile +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfc2ec595062530ef1a860930cb80cbdfd1f2d9b0f23f1bd7d261e769679b3a1
|
4
|
+
data.tar.gz: 51b9b8e5f65991cd5dfb26d719301ae55e90d94b2591671617396b993d0c614b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2149ff5a8af75c70e88b93d03f5431e1586d7e0d69d117d742ec591e76fb9aca96b9d8c76e4e9d937c8c398daa4a641d0089c608a6bea9762a0c48b5b9708590
|
7
|
+
data.tar.gz: 6e235534cf2f6ec24dc9cc3e59c10048fe874684c0488dcd15c5ffe0c9409491b27c40683a5945ad5cd857b6c03c72d8d0b90b0446069a0583068aebb5ae5cce
|
data/.kitchen.yml
CHANGED
@@ -14,28 +14,22 @@ provisioner:
|
|
14
14
|
|
15
15
|
platforms:
|
16
16
|
- name: amazonlinux-2
|
17
|
-
- name: ubuntu-16.04
|
18
17
|
- name: ubuntu-18.04
|
18
|
+
- name: ubuntu-20.04
|
19
19
|
- name: fedora-latest
|
20
20
|
driver:
|
21
21
|
provision_command:
|
22
|
-
- yum install libxcrypt-compat
|
22
|
+
- yum install libxcrypt-compat -y
|
23
23
|
- curl -L https://www.chef.io/chef/install.sh | bash
|
24
|
-
- name: centos-6
|
25
24
|
- name: centos-7
|
26
|
-
- name:
|
25
|
+
- name: centos-8
|
27
26
|
- name: oraclelinux-7
|
28
|
-
- name:
|
27
|
+
- name: rockylinux-8
|
29
28
|
- name: debian-9
|
30
|
-
|
31
|
-
|
32
|
-
#- name: opensuse-42.3
|
33
|
-
# driver:
|
34
|
-
# image: opensuse/leap:42.3
|
35
|
-
- name: unknown
|
29
|
+
- name: debian-10
|
30
|
+
- name: opensuse-15
|
36
31
|
driver:
|
37
|
-
image:
|
38
|
-
platform: ubuntu
|
32
|
+
image: opensuse/leap:15
|
39
33
|
- name: dockerfile
|
40
34
|
driver:
|
41
35
|
username: dockerfile
|
@@ -51,13 +45,20 @@ suites:
|
|
51
45
|
driver:
|
52
46
|
build_context: false
|
53
47
|
- name: capabilities
|
54
|
-
includes: [debian-
|
48
|
+
includes: [debian-9,debian-10,ubuntu-18.04,ubuntu-20.04]
|
55
49
|
driver:
|
56
50
|
provision_command:
|
57
51
|
- curl -L https://www.chef.io/chef/install.sh | bash
|
58
52
|
- apt-get install -y net-tools
|
59
53
|
cap_drop:
|
60
54
|
- NET_ADMIN
|
55
|
+
- name: arm64
|
56
|
+
excludes: [debian-9]
|
57
|
+
driver:
|
58
|
+
docker_platform: linux/arm64
|
59
|
+
- name: amd64
|
60
|
+
driver:
|
61
|
+
docker_platform: linux/amd64
|
61
62
|
- name: inspec
|
62
63
|
driver:
|
63
64
|
provision_command: true
|
data/CHANGELOG.md
CHANGED
@@ -1,125 +1,114 @@
|
|
1
1
|
# Kitchen-Docker Changelog
|
2
2
|
|
3
|
+
## 2.12.0 - December 22, 2021
|
4
|
+
|
5
|
+
- Support Docker BuildKit - [@RulerOf](https://github.com/RulerOf)
|
6
|
+
- Add new `docker_platform` config to allow specifying architectures - [@RulerOf](https://github.com/RulerOf)
|
7
|
+
|
3
8
|
## 2.11.0 - July 2, 2021
|
4
9
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
10
|
+
- Update the development dependency on kitchen-inspec to 2.x
|
11
|
+
- Retrieve hostname state data after container is launched to avoid failures when `use_internal_docker_network` is set
|
12
|
+
- Add a new option for setting container isolation. See the readme for additional details
|
13
|
+
- Support GPUs in containers with a new `gpus` option that takes the same arguments that would be passed to `docker run --gpus`
|
14
|
+
- suse platform: use system script for ssh key initialization
|
15
|
+
- Add support for the `--mount` docker CLI option. See the readme for additional details
|
16
|
+
- Use sudo.d files instead of directly editing the sudoers file
|
17
|
+
- Allow passing `--tmpfs` entries to the docker run command. See the readme for additional details
|
18
|
+
- Use less verbose and quicker setup on Gentoo
|
19
|
+
- Lowercase the instance-name to avoid issues since docker does not allow instance with capital cases
|
20
|
+
- Fix the error "Could not parse Docker build output for image ID" by improving the output line matching
|
21
|
+
- Add support for `almalinux` & `rockylinux`
|
17
22
|
|
18
23
|
## 2.10.0 - Mar 28, 2020
|
19
24
|
|
20
|
-
|
21
|
-
|
22
|
-
|
25
|
+
- Switched from require to require_relative to slightly improve load time performance
|
26
|
+
- Allow for train gem 3.x
|
27
|
+
- Refactor driver to include Windows support (includes new transport for all supported platforms)
|
23
28
|
|
24
29
|
## 2.9.0 - Mar 15, 2019
|
25
30
|
|
26
|
-
|
27
|
-
|
31
|
+
- Add automatic OS detection for amazonlinux, opensuse/leap, and opensuse/tumbleweed
|
32
|
+
- On Fedora containers uses dnf to setup the OS not yum
|
28
33
|
|
29
34
|
## 2.8.0 - Jan 18, 2019
|
30
35
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
36
|
+
- Add new config option `use_internal_docker_network`, which allows running Docker within Docker. See readme for usage details.
|
37
|
+
- Resolve errors while loading libraries on archlinux
|
38
|
+
- Fix failures on Ubuntu 18.04
|
39
|
+
- Check if image exists before attempting to remove it so we don't fail
|
40
|
+
- Add oraclelinux platform support
|
41
|
+
- Prevent `uninitialized constant Kitchen::Driver::Docker::Base64` error by requiring `base64`
|
37
42
|
|
38
43
|
## 2.7.0
|
39
44
|
|
40
|
-
|
41
|
-
|
42
|
-
|
45
|
+
- Support for SUSE-based container images.
|
46
|
+
- Improved support for build context shipping.
|
47
|
+
- Changed `use_sudo` to default to `false` in keeping with modern Docker usage.
|
43
48
|
|
44
49
|
## 2.6.0
|
45
50
|
|
46
|
-
|
51
|
+
- Set container name with information from the run so you can identify them
|
47
52
|
later on.
|
48
|
-
|
53
|
+
- Upgrade to new driver base class structure.
|
49
54
|
|
50
55
|
## 2.5.0
|
51
56
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
57
|
+
- [#209](https://github.com/portertech/kitchen-docker/pulls/209) Fix usage with Kitchen rake tasks.
|
58
|
+
- Add `run_options` and `build_options` configuration.
|
59
|
+
- [#195](https://github.com/portertech/kitchen-docker/pulls/195) Fix Arch Linux support.
|
60
|
+
- Fix shell escaping for build paths and SSH keys.
|
56
61
|
|
57
62
|
## 2.4.0
|
58
63
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
- [#148](https://github.com/portertech/kitchen-docker/issues/148) Restored support for older versions of Ruby.
|
65
|
+
- [#149](https://github.com/portertech/kitchen-docker/pulls/149) Handle connecting to a container directly as root.
|
66
|
+
- [#154](https://github.com/portertech/kitchen-docker/pulls/154) Improve container caching by reordering the build steps.
|
67
|
+
- [#176](https://github.com/portertech/kitchen-docker/pulls/176) Expose proxy environment variables to the container automatically.
|
68
|
+
- [#192](https://github.com/portertech/kitchen-docker/pulls/192) Set `$container=docker` for CentOS images.
|
69
|
+
- [#196](https://github.com/portertech/kitchen-docker/pulls/196) Mutex SSH key generation for use with `kitchen -c`.
|
70
|
+
- [#192](https://github.com/portertech/kitchen-docker/pulls/192) Don't wait when stopping a container.
|
66
71
|
|
67
72
|
## 2.3.0
|
68
73
|
|
69
|
-
|
74
|
+
- `build_context` option (boolean) to enable/disable sending the build
|
70
75
|
context to Docker.
|
71
76
|
|
72
77
|
## 2.2.0
|
73
78
|
|
74
|
-
|
79
|
+
- Use a temporary file for each suite instance Docker container
|
75
80
|
Dockerfile, instead of passing their contents via STDIN. This allows for
|
76
81
|
the use of commands like ADD and COPY. **Users must now use Docker >= 1.5.0**
|
77
|
-
|
78
|
-
* Passwordless suite instance Docker container login (SSH), using a
|
82
|
+
- Passwordless suite instance Docker container login (SSH), using a
|
79
83
|
generated key pair.
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
* README YAML highlighting.
|
84
|
+
- Support for sharing a host device with suite instance Docker containers.
|
85
|
+
- README YAML highlighting.
|
84
86
|
|
85
87
|
## 2.1.0
|
86
88
|
|
87
|
-
|
89
|
+
- Use `NUL` instead of `/dev/null` on Windows for output redirection
|
88
90
|
|
89
91
|
## 2.0.0
|
90
92
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
* wait_for_sshd option (boolean)
|
100
|
-
|
101
|
-
* Create `/etc/sudoers.d` if missing
|
102
|
-
|
103
|
-
* Fixed option deprecation warnings, require Docker >= 1.2
|
93
|
+
- Use Docker `top` and `port` instead of `inspect`
|
94
|
+
- Don't create the kitchen user if it already exists
|
95
|
+
- Docker container capabilities options: cap_add, cap_drop
|
96
|
+
- Docker security profile option (SELinux/AppArmor): security_opt
|
97
|
+
- wait_for_sshd option (boolean)
|
98
|
+
- Create `/etc/sudoers.d` if missing
|
99
|
+
- Fixed option deprecation warnings, require Docker >= 1.2
|
104
100
|
|
105
101
|
## 1.7.0
|
106
102
|
|
107
|
-
|
103
|
+
- Ensure a container id is set before attempting to inspect a container
|
108
104
|
|
109
105
|
## 1.6.0
|
110
106
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
* Fixed verify dependencies output redirection
|
120
|
-
|
121
|
-
* Added `fedora` to platform names
|
122
|
-
|
123
|
-
* Support for `gentoo` and `gentoo-paludis` platforms
|
124
|
-
|
125
|
-
* Adding sudo rule to `/etc/sudoers.d/#{username}` in addition to `/etc/sudoers`
|
107
|
+
- `publish_all` option to publish all ports to the host interface
|
108
|
+
- `instance_name` option to name the Docker container
|
109
|
+
- `links` option to link suite instance Docker containers
|
110
|
+
- `socket` option will now default to ENV `DOCKER_HOST` if set
|
111
|
+
- Fixed verify dependencies output redirection
|
112
|
+
- Added `fedora` to platform names
|
113
|
+
- Support for `gentoo` and `gentoo-paludis` platforms
|
114
|
+
- Adding sudo rule to `/etc/sudoers.d/#{username}` in addition to `/etc/sudoers`
|
data/README.md
CHANGED
@@ -596,6 +596,20 @@ Examples:
|
|
596
596
|
use_internal_docker_network: true
|
597
597
|
```
|
598
598
|
|
599
|
+
### docker_platform
|
600
|
+
|
601
|
+
Configure the CPU platform (architecture) used by docker to build the image.
|
602
|
+
|
603
|
+
Examples:
|
604
|
+
|
605
|
+
```yaml
|
606
|
+
docker_platform: linux/arm64
|
607
|
+
```
|
608
|
+
|
609
|
+
```yaml
|
610
|
+
docker_platform: linux/amd64
|
611
|
+
```
|
612
|
+
|
599
613
|
## Development
|
600
614
|
|
601
615
|
* Source hosted at [GitHub][repo]
|
@@ -36,6 +36,26 @@ module Kitchen
|
|
36
36
|
run_command("#{docker} #{cmd}", docker_shell_opts(options))
|
37
37
|
end
|
38
38
|
|
39
|
+
# Copied from kitchen because we need stderr
|
40
|
+
def run_command(cmd, options = {})
|
41
|
+
if options.fetch(:use_sudo, false)
|
42
|
+
cmd = "#{options.fetch(:sudo_command, "sudo -E")} #{cmd}"
|
43
|
+
end
|
44
|
+
subject = "[#{options.fetch(:log_subject, "local")} command]"
|
45
|
+
|
46
|
+
debug("#{subject} BEGIN (#{cmd})")
|
47
|
+
sh = Mixlib::ShellOut.new(cmd, shell_opts(options))
|
48
|
+
sh.run_command
|
49
|
+
debug("#{subject} END #{Util.duration(sh.execution_time)}")
|
50
|
+
sh.error!
|
51
|
+
sh.stdout + sh.stderr
|
52
|
+
rescue Mixlib::ShellOut::ShellCommandFailed => ex
|
53
|
+
raise ShellCommandFailed, ex.message
|
54
|
+
rescue Exception => error # rubocop:disable Lint/RescueException
|
55
|
+
error.extend(Kitchen::Error)
|
56
|
+
raise
|
57
|
+
end
|
58
|
+
|
39
59
|
def build_run_command(image_id, transport_port = nil)
|
40
60
|
cmd = 'run -d'
|
41
61
|
cmd << ' -i' if config[:interactive]
|
@@ -64,6 +84,7 @@ module Kitchen
|
|
64
84
|
Array(config[:cap_add]).each { |cap| cmd << " --cap-add=#{cap}"} if config[:cap_add]
|
65
85
|
Array(config[:cap_drop]).each { |cap| cmd << " --cap-drop=#{cap}"} if config[:cap_drop]
|
66
86
|
Array(config[:security_opt]).each { |opt| cmd << " --security-opt=#{opt}"} if config[:security_opt]
|
87
|
+
cmd << " --platform=#{config[:docker_platform]}" if config[:docker_platform]
|
67
88
|
extra_run_options = config_to_options(config[:run_options])
|
68
89
|
cmd << " #{extra_run_options}" unless extra_run_options.empty?
|
69
90
|
cmd << " #{image_id} #{config[:run_command]}"
|
@@ -26,7 +26,11 @@ module Kitchen
|
|
26
26
|
|
27
27
|
def parse_image_id(output)
|
28
28
|
output.each_line do |line|
|
29
|
-
if line =~ /image
|
29
|
+
if line =~ /writing image sha256:[[:xdigit:]]{64} done/i
|
30
|
+
img_id = line[/writing image (sha256:[[:xdigit:]]{64}) done/i,1]
|
31
|
+
return img_id
|
32
|
+
end
|
33
|
+
if line =~ /image id|build successful|successfully built/i
|
30
34
|
img_id = line.split(/\s+/).last
|
31
35
|
return img_id
|
32
36
|
end
|
@@ -42,17 +46,19 @@ module Kitchen
|
|
42
46
|
def build_image(state, dockerfile)
|
43
47
|
cmd = 'build'
|
44
48
|
cmd << ' --no-cache' unless config[:use_cache]
|
49
|
+
cmd << " --platform=#{config[:docker_platform]}" if config[:docker_platform]
|
45
50
|
extra_build_options = config_to_options(config[:build_options])
|
46
51
|
cmd << " #{extra_build_options}" unless extra_build_options.empty?
|
47
52
|
dockerfile_contents = dockerfile
|
48
|
-
build_context = config[:build_context] ? '.' : '-'
|
49
53
|
file = Tempfile.new('Dockerfile-kitchen', Dir.pwd)
|
54
|
+
cmd << " -f #{Shellwords.escape(dockerfile_path(file))}" if config[:build_context]
|
55
|
+
build_context = config[:build_context] ? '.' : '-'
|
50
56
|
output = begin
|
51
57
|
file.write(dockerfile)
|
52
58
|
file.close
|
53
|
-
docker_command("#{cmd}
|
59
|
+
docker_command("#{cmd} #{build_context}",
|
54
60
|
input: dockerfile_contents,
|
55
|
-
environment: {
|
61
|
+
environment: { BUILDKIT_PROGRESS: 'plain' })
|
56
62
|
ensure
|
57
63
|
file.close unless file.closed?
|
58
64
|
file.unlink
|
data/test/Dockerfile
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-docker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Porter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-kitchen
|
@@ -266,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
266
266
|
- !ruby/object:Gem::Version
|
267
267
|
version: '0'
|
268
268
|
requirements: []
|
269
|
-
rubygems_version: 3.2.
|
269
|
+
rubygems_version: 3.2.32
|
270
270
|
signing_key:
|
271
271
|
specification_version: 4
|
272
272
|
summary: A Docker Driver for Test Kitchen
|