diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a4b83fc..2acce3e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1013,6 +1013,23 @@ jobs: build-contexts: | alpine=docker-image://localhost:5000/my-base-image:latest + docker-config-malformed: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Set malformed docker config + run: | + mkdir -p ~/.docker + echo 'foo_bar' >> ~/.docker/config.json + - + name: Build + uses: ./ + with: + context: ./test + proxy-docker-config: runs-on: ubuntu-latest services: diff --git a/src/main.ts b/src/main.ts index 286e594..f689236 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,5 @@ import * as fs from 'fs'; +import * as path from 'path'; import * as stateHelper from './state-helper'; import * as core from '@actions/core'; import * as actionsToolkit from '@docker/actions-toolkit'; @@ -8,6 +9,7 @@ import {Exec} from '@docker/actions-toolkit/lib/exec'; import {GitHub} from '@docker/actions-toolkit/lib/github'; import {Inputs as BuildxInputs} from '@docker/actions-toolkit/lib/buildx/inputs'; import {Toolkit} from '@docker/actions-toolkit/lib/toolkit'; +import {ConfigFile} from '@docker/actions-toolkit/lib/types/docker'; import * as context from './context'; @@ -34,9 +36,16 @@ actionsToolkit.run( } }); - const dockerConfig = await Docker.configFile(); - if (dockerConfig && dockerConfig.proxies) { - await core.group(`Proxy configuration found`, async () => { + await core.group(`Proxy configuration`, async () => { + let dockerConfig: ConfigFile | undefined; + let dockerConfigMalformed = false; + try { + dockerConfig = await Docker.configFile(); + } catch (e) { + dockerConfigMalformed = true; + core.warning(`Unable to parse config file ${path.join(Docker.configDir, 'config.json')}: ${e}`); + } + if (dockerConfig && dockerConfig.proxies) { for (const host in dockerConfig.proxies) { let prefix = ''; if (dockerConfig.proxies.length > 1) { @@ -47,8 +56,10 @@ actionsToolkit.run( core.info(`${prefix}${key}: ${dockerConfig.proxies[host][key]}`); } } - }); - } + } else if (!dockerConfigMalformed) { + core.info('No proxy configuration found'); + } + }); if (!(await toolkit.buildx.isAvailable())) { core.setFailed(`Docker buildx is required. See https://github.com/docker/setup-buildx-action to set up buildx.`);