feat: add docker-socket-host-path input (#862)

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
This commit is contained in:
Mike Ryan 2024-09-30 06:24:25 -04:00 committed by GitHub
parent 669f02b0b3
commit c0afe86658
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 27 additions and 1 deletions

View file

@ -13,6 +13,7 @@ GitHub Action to run Renovate self-hosted.
- [`configurationFile`](#configurationfile) - [`configurationFile`](#configurationfile)
- [`docker-cmd-file`](#docker-cmd-file) - [`docker-cmd-file`](#docker-cmd-file)
- [`docker-network`](#docker-network) - [`docker-network`](#docker-network)
- [`docker-socket-host-path`](#docker-socket-host-path)
- [`docker-user`](#docker-user) - [`docker-user`](#docker-user)
- [`docker-volumes`](#docker-volumes) - [`docker-volumes`](#docker-volumes)
- [`env-regex`](#env-regex) - [`env-regex`](#env-regex)
@ -113,6 +114,12 @@ Specify a network to run container in.
You can use `${{ job.container.network }}` to run renovate container [in the same network as other containers for this job](https://docs.github.com/en/actions/learn-github-actions/contexts#job-context), You can use `${{ job.container.network }}` to run renovate container [in the same network as other containers for this job](https://docs.github.com/en/actions/learn-github-actions/contexts#job-context),
or set it to `host` to run in the same network as github runner, or specify any custom network. or set it to `host` to run in the same network as github runner, or specify any custom network.
### `docker-socket-host-path`
Allows the overriding of the host path for the Docker socket that is mounted into the container.
Useful on systems where the host Docker socket is located somewhere other than `/var/run/docker.sock` (the default).
Only applicable when `mount-docker-socket` is true.
### `docker-user` ### `docker-user`
Specify a user (or user-id) to run docker command. Specify a user (or user-id) to run docker command.

View file

@ -36,6 +36,13 @@ inputs:
can use Docker. Also add the user inside the renovate container to the can use Docker. Also add the user inside the renovate container to the
docker group for socket permissions. docker group for socket permissions.
required: false required: false
docker-socket-host-path:
description: |
Allows the overriding of the host path for the Docker socket that is mounted into the container.
Useful on systems where the host Docker socket is located somewhere other than '/var/run/docker.sock' (the default).
Only applicable when 'mount-docker-socket' is true.
required: false
default: /var/run/docker.sock
docker-cmd-file: docker-cmd-file:
description: | description: |
Override docker command. Default command is `renovate` Override docker command. Default command is `renovate`

View file

@ -73,6 +73,10 @@ class Input {
return core.getInput('mount-docker-socket') === 'true'; return core.getInput('mount-docker-socket') === 'true';
} }
dockerSocketHostPath(): string {
return core.getInput('docker-socket-host-path') || '/var/run/docker.sock';
}
getDockerCmdFile(): string | null { getDockerCmdFile(): string | null {
const cmdFile = core.getInput('docker-cmd-file'); const cmdFile = core.getInput('docker-cmd-file');
return !!cmdFile && cmdFile !== '' ? path.resolve(cmdFile) : null; return !!cmdFile && cmdFile !== '' ? path.resolve(cmdFile) : null;

View file

@ -33,8 +33,16 @@ class Renovate {
} }
if (this.input.mountDockerSocket()) { if (this.input.mountDockerSocket()) {
const sockPath = this.input.dockerSocketHostPath();
const stat = await fs.stat(sockPath);
if (!stat.isSocket()) {
throw new Error(
`docker socket host path '${sockPath}' MUST exist and be a socket`,
);
}
dockerArguments.push( dockerArguments.push(
'--volume /var/run/docker.sock:/var/run/docker.sock', `--volume ${sockPath}:/var/run/docker.sock`,
`--group-add ${await this.getDockerGroupId()}`, `--group-add ${await this.getDockerGroupId()}`,
); );
} }