mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
75 lines
2.3 KiB
TypeScript
75 lines
2.3 KiB
TypeScript
import {getInput, setFailed} from '@actions/core';
|
|
import {context} from '@actions/github';
|
|
import {deployToFirebase, setupRedirect} from './deploy.mjs';
|
|
import {getDeployments} from './deployments.mjs';
|
|
import {AuthenticatedGitClient, GithubConfig, setConfig} from '@angular/ng-dev';
|
|
import {githubReleaseTrainReadToken} from './credential.mjs';
|
|
|
|
const refMatcher = /refs\/heads\/(.*)/;
|
|
|
|
async function deployDocs() {
|
|
setConfig({
|
|
github: {
|
|
mainBranchName: 'main',
|
|
name: 'angular',
|
|
owner: 'angular',
|
|
} as GithubConfig,
|
|
});
|
|
|
|
AuthenticatedGitClient.configure(githubReleaseTrainReadToken);
|
|
|
|
if (context.eventName !== 'push') {
|
|
throw Error();
|
|
}
|
|
const matchedRef = context.ref.match(refMatcher);
|
|
if (matchedRef === null) {
|
|
throw Error();
|
|
}
|
|
|
|
const currentBranch = matchedRef[1];
|
|
const configPath = getInput('configPath');
|
|
const distDir = getInput('distDir');
|
|
|
|
const deployment = (await getDeployments()).get(currentBranch);
|
|
if (deployment === undefined) {
|
|
console.log(`Current branch (${currentBranch}) does not deploy a documentation site.`);
|
|
console.log(`Exiting...`);
|
|
process.exit(0);
|
|
}
|
|
|
|
console.log('Doc site deployment information');
|
|
console.log('');
|
|
console.log('Current Branch:');
|
|
console.log(` ${deployment.branch}`);
|
|
console.log('');
|
|
console.log('Firebase Site:');
|
|
if (deployment.destination === undefined) {
|
|
console.log(' No deployment of a documenation site is necessary');
|
|
} else {
|
|
console.log(` Deploying to: ${deployment.destination}`);
|
|
}
|
|
console.log('');
|
|
console.log('Redirect Configuration:');
|
|
if (deployment.redirect === undefined) {
|
|
console.log(' No redirects are necessary');
|
|
} else {
|
|
console.log(` From: ${deployment.redirect.from}`);
|
|
console.log(` To: ${deployment.redirect.to}`);
|
|
}
|
|
|
|
await deployToFirebase(deployment, configPath, distDir);
|
|
await setupRedirect(deployment);
|
|
}
|
|
|
|
// Only run if the action is executed in a repository with is in the Angular org. This is in place
|
|
// to prevent the action from actually running in a fork of a repository with this action set up.
|
|
if (context.repo.owner === 'angular') {
|
|
deployDocs().catch((e: Error) => {
|
|
setFailed(e.message);
|
|
console.error(e);
|
|
});
|
|
} else {
|
|
console.warn(
|
|
'The action was skipped as this action is only meant to run in repos belonging to the Angular organization.',
|
|
);
|
|
}
|