Skip to main content

View on Construct Hub

🚧 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.

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

or

yarn add github-actions-cdk

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, actions } from 'github-actions-cdk';

const project = new Project({
  //additionalChecks: true,
});

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

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

new actions.CheckoutV4(job, "checkout", {
  name: "Checkout Code",
});

const setupNode = new actions.SetupNodeV4(job, "setup-node", {
  name: "Set up Node.js",
  nodeVersion: "20.x",
});

job.addOutput("node-version", setupNode.outputs.nodeVersion);

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 CheckoutV4, SetupNodeV4

project = Project(
    #additional_checks=True,
)

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

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

CheckoutV4(
    scope=job,
    id="checkout",
    name="Checkout Code",
)

setup_node = SetupNodeV4(
    scope=job,
    id="setup-node",
    name="Set up Node.js",
    node_version="14.x",
)

job.add_output("node-version", setup_node.outputs.node_version)

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.

Metadata

Release files for github-actions-cdk 0.0.23

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for github-actions-cdk 0.0.23
File Size Uploaded
github_actions_cdk-0.0.23.tar.gz 260.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for github-actions-cdk 0.0.23
File Interpreter ABI Platform
github_actions_cdk-0.0.23-py3-none-any.whl Python 3 none any Details

Total release size: 519.5 kB

Release files / github_actions_cdk-0.0.23.tar.gz

Download URL github_actions_cdk-0.0.23.tar.gz
Size 260.5 kB
Tags Source
SHA-256 checksum
How to use checksums
10fed0cdead0c5efcd732e2427508facfe7a032c4d865ad25a0bfe87fd93f3e3
BLAKE2b-256 checksum
How to use checksums
3f7235dd9fa3e34c833b600a578865a760be9013cfe140e87a8473524602218e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.2

Release files / github_actions_cdk-0.0.23-py3-none-any.whl

Download URL github_actions_cdk-0.0.23-py3-none-any.whl
Size 259.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
daeb314cdc32b86ac8a9f89146b1b6c5862b9a7e02e5ade6155c72d1de1448e6
BLAKE2b-256 checksum
How to use checksums
8d7a4d87f20da4ea27ee7a4f5217285177f89d3b4cb40c98ce40f65610e26f75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.2

Release history Release notifications | RSS feed

This release

0.0.23 This release

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page