fixing techdocs-cli Docker client creation

Docker client does not need to be created when --no-docker
option is provided.

If you had DOCKER_CERT_PATH environment variable defined
the Docker client was looking for certificates
and breaking techdocs-cli generate command even with --no-docker
option.

Signed-off-by: Matteo Silvestri <matteosilv@gmail.com>
This commit is contained in:
Matteo Silvestri
2022-09-07 15:34:47 +02:00
parent b8b2d4ab04
commit 0b2a30dead
5 changed files with 45 additions and 7 deletions
@@ -89,6 +89,23 @@ describe('end-to-end', () => {
expect(proc.exit).toEqual(0);
});
it('can generate with DOCKER_* TLS variables and --no-docker option', async () => {
const env = {
DOCKER_HOST: 'tcp://localhost:2376',
DOCKER_TLS_CERTDIR: '/certs',
DOCKER_TLS_VERIFY: '1',
DOCKER_CERT_PATH: '/certs/client',
...process.env,
};
const proc = await executeCommand(entryPoint, ['generate', '--no-docker'], {
cwd,
timeout,
env,
});
expect(proc.stdout).toContain('Successfully generated docs');
expect(proc.exit).toEqual(0);
});
it('can serve in mkdocs', async () => {
const proc = await executeCommand(
entryPoint,
@@ -22,7 +22,10 @@ import {
TechdocsGenerator,
ParsedLocationAnnotation,
} from '@backstage/plugin-techdocs-node';
import { DockerContainerRunner } from '@backstage/backend-common';
import {
ContainerRunner,
DockerContainerRunner,
} from '@backstage/backend-common';
import { ConfigReader } from '@backstage/config';
import {
convertTechDocsRefToLocationAnnotation,
@@ -66,8 +69,12 @@ export default async function generate(opts: OptionValues) {
});
// Docker client (conditionally) used by the generators, based on techdocs.generators config.
const dockerClient = new Docker();
const containerRunner = new DockerContainerRunner({ dockerClient });
let containerRunner: ContainerRunner | undefined;
if (opts.docker) {
const dockerClient = new Docker();
containerRunner = new DockerContainerRunner({ dockerClient });
}
let parsedLocationAnnotation = {} as ParsedLocationAnnotation;
if (opts.techdocsRef) {