/
docker
/
login-action
Обзор
Документация
Войти
/
docker
/
login-action
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
v1
src/docker.ts
71 строка
2 KB
CrazyMax
ecr input to specify whether the given registry is ECR
20 дек 2021, 12:59
Не верифицирован
20 дек 2021, 12:59
b9a4d91
Код
Авторство
О чём код?
import * as aws from './aws'; import * as core from '@actions/core'; import * as exec from '@actions/exec'; export async function login(registry: string, username: string, password: string, ecr: string): Promise<void> { if (/true/i.test(ecr) || (ecr == 'auto' && aws.isECR(registry))) { await loginECR(registry, username, password); } else { await loginStandard(registry, username, password); } } export async function logout(registry: string): Promise<void> { await exec .getExecOutput('docker', ['logout', registry], { ignoreReturnCode: true }) .then(res => { if (res.stderr.length > 0 && res.exitCode != 0) { core.warning(res.stderr.trim()); } }); } export async function loginStandard(registry: string, username: string, password: string): Promise<void> { if (!username || !password) { throw new Error('Username and password required'); } let loginArgs: Array<string> = ['login', '--password-stdin']; loginArgs.push('--username', username); loginArgs.push(registry); if (registry) { core.info(`Logging into ${registry}...`); } else { core.info(`Logging into Docker Hub...`); } await exec .getExecOutput('docker', loginArgs, { ignoreReturnCode: true, silent: true, input: Buffer.from(password) }) .then(res => { if (res.stderr.length > 0 && res.exitCode != 0) { throw new Error(res.stderr.trim()); } core.info(`Login Succeeded!`); }); } export async function loginECR(registry: string, username: string, password: string): Promise<void> { core.info(`Retrieving registries data through AWS SDK...`); const regDatas = await aws.getRegistriesData(registry, username, password); for (const regData of regDatas) { core.info(`Logging into ${regData.registry}...`); await exec .getExecOutput('docker', ['login', '--password-stdin', '--username', regData.username, regData.registry], { ignoreReturnCode: true, silent: true, input: Buffer.from(regData.password) }) .then(res => { if (res.stderr.length > 0 && res.exitCode != 0) { throw new Error(res.stderr.trim()); } core.info('Login Succeeded!'); }); } }