A cdk library for cdkactions.
See Kraken documentation.
When creating a new project, do the following:
yarn install @pennlabs/kraken
yarn build
within the .github/cdk
folder and commit your changes.Most Penn Labs products follow the mold of a Django project in the backend
directory and a React project in the frontend
directory.
Since this is a common use-case, kraken provides an LabsApplicationStack
that can easily configure the CI for this type of project.
To use an LabsApplicationStack
stack, just replace the generated stack with:
new LabsApplicationStack(app, {
djangoProjectName: 'exampleDjangoProject',
dockerImageBaseName: 'example-product',
});
This configuration will lint, test, build, publish docker images for, and deploy both the Django project and a React project. The published docker images will be named: $dockerImageBaseName-backend
and $dockerImageBaseName-frontend
If your repo is different from the normal 1 Django and 1 React project per repo, you can utilize the DjangoProject
and ReactProject
classes. For example, if you had a single Django project with multiple frontends, you could add something like the following inside of the generated Stack:
const workflow = new Workflow(this, 'workflow', {
name: 'Workflow',
on: 'push',
});
const django = new DjangoProject(workflow,
{
projectName: 'djangoProject',
path: 'backend',
imageName: 'project-backend',
});
const reactOne = new ReactProject(workflow,
{
id: 'one',
path: 'frontendOne',
imageName: 'project-frontendOne',
});
const reactTwo = new ReactProject(workflow,
{
id: 'two',
path: 'frontendTwo',
imageName: 'project-frontendTwo',
});
new DeployJob(workflow, {},
{
needs: [django.publishJobId, reactOne.publishJobId, reactTwo.publishJobId],
});
This configuration will lint, test, build, publish docker images for the Django project as well as the two React projects and then finally deploy the application.
Generated using TypeDoc