Skip to content
Snippets Groups Projects
Select Git revision
  • 6f9ee56d00ee5408953fa24323dbba81aa2d4f3a
  • master default protected
  • 7
  • 7.10
  • 7.10.2
  • 7.10.1
  • 7.10.0
  • 7.9
  • 7.9.2
  • 7.9.1
  • 7.9.0
  • 7.8.3
  • 7.8.2
  • 7.8.1
  • 7.8
  • 7.8.0
  • 7.7
  • 7.7.1
  • 7.7.0
  • 7.6
  • 7.6.0
  • 7.5
22 results

gitlab-ci-python.yml

Blame
  • docker.js 1.09 KiB
    const got = require('got');
    
    module.exports = {
      getDigest,
    };
    
    async function getDigest(name, tag, logger) {
      const repository = name.includes('/') ? name : `library/${name}`;
      try {
        const authUrl = `https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repository}:pull`;
        logger.debug(`Obtaining docker registry token for ${repository}`);
        const { token } = (await got(authUrl, { json: true })).body;
        if (!token) {
          logger.warn('Failed to obtain docker registry token');
          return null;
        }
        logger.debug('Got docker registry token');
        const url = `https://index.docker.io/v2/${repository}/manifests/${tag ||
          'latest'}`;
        const headers = {
          Authorization: `Bearer ${token}`,
          Accept: 'application/vnd.docker.distribution.manifest.v2+json',
        };
        const digest = (await got(url, { json: true, headers })).headers[
          'docker-content-digest'
        ];
        logger.debug({ digest }, 'Got docker digest');
        return digest;
      } catch (err) {
        logger.warn({ err, name, tag }, 'Error getting docker image digest');
        return null;
      }
    }