@pennlabs/kraken
TypeScript icon, indicating that this package has built-in type declarations

0.8.12 • Public • Published

kraken

A cdk library for cdkactions.

Documentation

See Kraken documentation.

Getting started

When creating a new project, do the following:

  • Follow the cdkactions getting started guide to initialize the cdkactions project.
  • Run yarn install @pennlabs/kraken
  • Configure cdkactions (See the following subjections)
  • Finally, run yarn build within the .github/cdk folder and commit your changes.

Django + React Project

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

Different Configuration

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.

Dependencies (3)

Dev Dependencies (19)

Package Sidebar

Install

npm i @pennlabs/kraken

Weekly Downloads

7

Version

0.8.12

License

MIT

Unpacked Size

147 kB

Total Files

38

Last publish

Collaborators

  • pennlabs