Opportunity - Using GitHub Actions to Trigger System Initiative

By Paul Stack
1/8/2025

The ability to trigger infrastructure changes from a continuous delivery pipeline has become a standard practice in the industry. System Initiative is introducing this capability, with the first iteration focusing on integration with GitHub Actions. This post will fill you in on the details, and you can always watch the readout of the opportunity on YouTube.

If this is your first exposure to how we communicate about the ongoing development of System Initiative, welcome! On our docs site, you can learn more about what opportunities are and how we work on System Initiative. You will also find our vocabulary page useful.

System Initiative embedded in the delivery pipeline

A software delivery pipeline is essential to modern software development. It enables teams to consistently and efficiently deliver high-quality, reliable software. A delivery pipeline becomes a critical tool for any team striving to innovate and succeed by adhering to industry best practices, fostering collaboration, and streamlining processes. Teams that aspire to deliver software faster cannot do so reliably without leveraging a delivery pipeline.

Over time, infrastructure delivery practices have evolved, with GitOps emerging as a more refined and modern approach to these workflows. Traditional infrastructure pipelines, often built with Continuous Integration (CI)/ Continuous Delivery (CD) tools, enable teams to automate the validation, testing, and deployment of infrastructure code. GitOps takes this a step further by introducing a declarative model where Git serves as the single source of truth. Changes are not just automated but continuously reconciled to ensure the live infrastructure state matches the desired state. This evolution simplifies workflows, enhances consistency, and aligns closely with modern cloud-native and Kubernetes-based environments, making GitOps an ideal choice for teams looking to push infrastructure automation to the next level.

Since these practices are now the industry standard, System Initiative will allow teams to integrate into their existing pipelines, automating, validating, and deploying infrastructure changes with the same rigor and efficiency as modern software delivery practices. This approach ensures that infrastructure teams can enhance their workflows while remaining competitive, consistent, and agile in an increasingly fast-paced and complex ecosystem.

Our implementation plan is as follows:

  • A workspace owner can create an API token to use in a CD pipeline
    • The API token can be given an expiration date as well as be revoked from usage
  • A user can dispatch a management function execution using a component ID, a function ID, and a payload to that function
  • The API request can specify if the change should auto-merge or if the change set is kept in a preview for manual approval.
  • The dispatch API will return the change set ID that can be used in a status API to understand the progress of any resulting actions.
  • The API can be used from CURL requests or a native GitHub Action.

Example usage

The API is in active development, but it will have a shape similar to the following:

curl -X POST https://app.systeminit.com/api/dispatch \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SYSTEM_INITIATIVE_API_TOKEN" \
-d '{
  "componentId": "your_component_id_here",
  "functionId": "your_function_id_here",
  "payload": {
    "props": [
      {"propId": "example_prop_1", "value": "example_value_1"},
      {"propId": "example_prop_2", "value": "example_value_2"}
    ],
    "execution": {
      "autoMerge": false,
      "changeSetName": "abc",
    }
  }
}'

Alternatively, we will provide a GitHub Action that may look similar to the following:

name: System Initiative
on:
  push:
    branches:
      - main
jobs:
  up:
    name: Mgmt Func
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: systeminit/actions@v1
        with:
          component-id: <ComponentId>
          func-id: <func-id>
          props: '[{"propId":"example_prop_1","value":"example_value_1"},{"propId":"example_prop_2","value":"example_value_2"}]'
          execution: '{"autoMerge":false,"changeSetName":"abc"}'
        env:
          SI_ACCESS_TOKEN: ${{ secrets.SI_ACCESS_TOKEN }}

When can I expect this to land?

This opportunity has a budget of four weeks, ending January 17th, 2025. You can follow along with our progress by watching our weekly demos, posted every Monday on Discord, YouTube, and our Changelog. You can always find this, and every other active opportunity, in our Road map.

Paul Stack, Director of Product

Paul is an engineer turned product manager who is passionate about the Continuous Delivery and DevOps movements and how they are critical in helping businesses deliver value to their customers.

Use System Initiative.

Generous free tier