Merge pull request #957 from crazy-max/warn-docker-config
warn if docker config can't be parsed
This commit is contained in:
		
						commit
						0a97817b6a
					
				
							
								
								
									
										17
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							@ -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:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/index.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										21
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								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.`);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user