Skip to main content

A TypeScript library for creating and managing GitHub Actions workflows using Constructs, enabling type-safe and modular CI/CD automation.

Project description

🚧 GitHub Actions CDK

github-actions-cdk is a TypeScript library that simplifies the creation and management of GitHub Actions workflows using Constructs. With this library, developers can define workflows in a structured and type-safe manner, making it easier to automate CI/CD pipelines on GitHub. It also includes Python bindings for developers who prefer working in Python.

Features

  • Type-Safe Workflows: Leverage TypeScript's strong typing to define your GitHub Actions workflows and ensure correctness.
  • Python Bindings: Access the same powerful constructs and features in Python, allowing seamless integration for Python developers.
  • Modular Design: Easily create and manage jobs, triggers, and options for your workflows.
  • Built-In Support for GitHub Events: Configure workflows based on various GitHub events such as push, pull request, issue comments, and more.
  • Customizable Options: Define environment variables, permissions, concurrency settings, and default job settings.

Installation

To get started with github-actions-cdk, install the package using npm or yarn for TypeScript, or pip for Python:

TypeScript

npm install github-actions-cdk constructs

or

yarn add github-actions-cdk constructs

Python

pip install github-actions-cdk

Getting Started

Basic Usage (TypeScript)

Here's a simple example of how to create a GitHub Actions workflow using github-actions-cdk in TypeScript::

import { PermissionLevel, Project } from 'github-actions-cdk';
import { Checkout, SetupNode } from 'github-actions-cdk/actions';

const project = new Project();

const workflow = project.addWorkflow('build', {
    name: "Build",
    triggers: {
        push: { branches: ['main'] },
        workflowDispatch: {}
    },
    permissions: {
        contents: PermissionLevel.READ,
    }
});

const job = workflow.addJob('build', {
	env: {
		CI: 'true',
	},
});

job.addAction(
  new Checkout("checkout", {
    name: "Checkout Code",
    version: "v4",
  }),
);

job.addAction(
  new SetupNode("setup-node", {
    name: "Set up Node.js",
    version: "v4",
    nodeVersion: "20.x",
  }),
);

project.synth();

Basic Usage (Python)

Here's how to create a GitHub Actions workflow using github-actions-cdk in Python:

from github_actions_cdk import Project, PermissionLevel
from github_actions_cdk.actions import Checkout, SetupNode

project = Project(
    outdir="examples/python/.github/workflows",
)

workflow = project.add_workflow("build",
    name="Build",
    triggers={
        "push": {
            "branches": ["main"],
        }
    },
    permissions={
        "contents": PermissionLevel.READ,
    }
)

job = workflow.add_job("build",
    env={
        "CI": "true",
    },
)

job.add_action(
    Checkout("checkout",
        name="Checkout Code",
        version="v4",
    ),
)

job.add_action(
    SetupNode("setup-node",
        name="Set up Node.js",
        version="v4",
        node_version="20.x",
    ),
)

project.synth()

Contributing

Contributions are welcome! Please read the CONTRIBUTING.md for details on how to get involved.

License

This project is licensed under the MIT License. See the LICENSE file for more information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

github_actions_cdk-0.0.12.tar.gz (252.4 kB view details)

Uploaded Source

Built Distribution

github_actions_cdk-0.0.12-py3-none-any.whl (250.7 kB view details)

Uploaded Python 3

File details

Details for the file github_actions_cdk-0.0.12.tar.gz.

File metadata

  • Download URL: github_actions_cdk-0.0.12.tar.gz
  • Upload date:
  • Size: 252.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for github_actions_cdk-0.0.12.tar.gz
Algorithm Hash digest
SHA256 c58b0a1e3d1d9c3eb2cfd85da7b5290f33f5a7a455e74893a0bc3fe154105db7
MD5 c4a747f71a4312f51033c5f16a8a0726
BLAKE2b-256 aa0a6277bcde1aa2d66ebd4b4dcc1c7b624049d6571a7db0fb9b4837bfd90356

See more details on using hashes here.

File details

Details for the file github_actions_cdk-0.0.12-py3-none-any.whl.

File metadata

File hashes

Hashes for github_actions_cdk-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 250b742c5afaf5b9f5127c7193b82eecdcb7cc7407031919b6270a297a60e98e
MD5 ee87803a13aed07426ce5e3bca415e89
BLAKE2b-256 608ebf2d8618d58be411599bd6ded9c89bf2b1a4ce2e7329de0912de312b61b1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page