Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(docker): Add ssh-client to Docker image to access private modules via ssh #553

Merged
merged 10 commits into from
Aug 15, 2023
5 changes: 5 additions & 0 deletions .github/.container-structure-test-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,11 @@ commandTests:
command: "su-exec"
expectedOutput: ["^Usage: su-exec user-spec command \\[args\\]\\n$"]

- name: "ssh"
command: "ssh"
expectedOutput: ["^usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]$"]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should escape square brackets please.
Also should expectedOutput capture only first line of output or all output lines? @MaxymVlasov

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Escape square brackets done.

Copy link
Collaborator

@MaxymVlasov MaxymVlasov Aug 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

expectedOutput capture the whole output, so, in case it is multiline, I recommend just ending comparison regex with the end of the line, but without $, like here:

expectedOutput: [ "TFLint version ([0-9]+\\.){2}[0-9]+\\n" ]

I'm fine just to check the string in line which includes the version number (sorry that not mentioned it explicitly in the previous comment)

So for openssh it will be something like:

$ ssh -v localhost
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
...
...

IE, here check should be related just to OpenSSH_8.2p1

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The command is "ssh -V"
On my computer I have :
OpenSSH_8.4p1 Debian-5+deb11u1, OpenSSL 1.1.1n 15 Mar 2022
On alpine (base on pre-commit-terraform image), I have
OpenSSH_9.1p1, OpenSSL 3.0.9 30 May 2023

I'm trying with "^OpenSSH_[0-9]+\.[0-9]+.*\n$"

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest this as it is less specific "^OpenSSH_[0-9]+\.[0-9]+"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done



fileExistenceTests:
- name: 'terrascan init'
path: '/root/.terrascan/pkg/policies/opa/rego/github/github_repository/privateRepoEnabled.rego'
Expand Down
4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,9 @@ RUN apk add --no-cache \
musl-dev=~1 \
gcc=~12 \
# entrypoint wrapper deps
su-exec=~0.2
su-exec=~0.2 \
# ssh-client for external private module in ssh
openssh-client=~9

# Copy tools
COPY --from=builder \
Expand Down