Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
CrazyMax committed Aug 20, 2020
1 parent 26618cd commit 2c57607
Show file tree
Hide file tree
Showing 4 changed files with 251 additions and 105 deletions.
217 changes: 166 additions & 51 deletions dist/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions src/context.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import * as core from '@actions/core';

export interface Inputs {
registry: string;
username: string;
password: string;
logout: string;
}

export async function getInputs(): Promise<Inputs> {
return {
registry: core.getInput('registry'),
username: core.getInput('username'),
password: core.getInput('password', {required: true}),
logout: core.getInput('logout')
};
}
61 changes: 61 additions & 0 deletions src/docker.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import * as exec from '@actions/exec';
import * as core from '@actions/core';
import * as ecr from './ecr';
import * as execm from './exec';

export async function login(registry: string, username: string, password: string): Promise<void> {
if (await ecr.isECR(registry)) {
await loginECR(registry, username, password);
} else {
await loginStandard(registry, username, password);
}
}

export async function logout(registry: string): Promise<void> {
await execm.exec('docker', ['logout', registry], false).then(res => {
if (res.stderr != '' && !res.success) {
core.warning(res.stderr);
}
});
}

export async function loginStandard(registry: string, username: string, password: string): Promise<void> {
let loginArgs: Array<string> = ['login', '--password', password];
if (username) {
loginArgs.push('--username', username);
}
loginArgs.push(registry);

if (registry) {
core.info(`🔑 Logging into ${registry}...`);
} else {
core.info(`🔑 Logging into DockerHub...`);
}
await execm.exec('docker', loginArgs, true).then(res => {
if (res.stderr != '' && !res.success) {
throw new Error(res.stderr);
}
core.info('🎉 Login Succeeded!');
});
}

export async function loginECR(registry: string, username: string, password: string): Promise<void> {
await exec.exec('aws', ['--version']);
const ecrRegion = await ecr.getRegion(registry);
process.env.AWS_ACCESS_KEY_ID = username;
process.env.AWS_SECRET_ACCESS_KEY = password;

core.info(`⬇️ Retrieving docker login command for ECR region ${ecrRegion}...`);
await execm.exec('aws', ['ecr', 'get-login', '--region', ecrRegion, '--no-include-email'], true).then(res => {
if (res.stderr != '' && !res.success) {
throw new Error(res.stderr);
}
core.info(`🔑 Logging into ${registry}...`);
execm.exec(res.stdout, [], true).then(res => {
if (res.stderr != '' && !res.success) {
throw new Error(res.stderr);
}
core.info('🎉 Login Succeeded!');
});
});
}
Loading

0 comments on commit 2c57607

Please sign in to comment.