Radicle CI Integrations

UPDATE:

After close collaboration with the Heartwood team, we are happy to announce the considerable progress towards several Continuous Integration / Continuous Delivery (CI/CD) integration options that are nearing completion, ahead of the official Radicle 1.0 launch. This is an important milestone for any teams / maintainers that rely on CI pipelines for the projects that would like to migrate to Radicle.

In a nutshell, we will soon be shipping:

  • GitHub Actions,
  • Woodpecker CI,
  • Kraken CI,
  • other 3rd party CI/CD engines that support integration via webhooks.

The above integrations are still evolving and will presumably continue to do so in the future, as more users onboard to Radicle that rely on these CI engines. At the time of writing this, they are primarily dependent on an open (Work In Progress) Patch we need to merge to the Radicle Broker to enable all this.

The below sections provide additional details on the progress made on all these integrations during October 2023 - 15 January 2024. (The original funding was meant to cover until end of December, but we had some remaining budget that covered an additional 2 weeks in January).

Milestone 1: Required Functionality on Radicle side

Number Deliverable Specification
1. Radicle Webhooks Event Schema A first version of the schema has been agreed upon and published here. :white_check_mark:
2. Long-Lived Access Tokens support We have opened a Patch that has already received some approvals and is pending final merge into Heartwood. :white_check_mark:
3. Extend CI Broker to send Radicle Webhook Events In collaboration with the Heartwood team, we have created a new broker that delegates radicle node events to adapters. We have thus created the radicle-webhooks-adapter that takes care of forwarding events via HTTP. It supports multiple outgoing webhooks per project, and secure machine-to-machine communication, using an encrypted shared secret. :white_check_mark:
4. More deployment options for CI Broker There was a change of plans here, resulting to an entirely new version of the broker created and the dropping of the previous iteration of the broker. The new broker is owned by the Heartwood team, so this is now out of scope. We are, however, contributing a Patch to the Broker that enriches the information the broker sends to adapters. This is still Work In Progress. :construction:
5. Documentation and how-to guide The guide about how to persist webhook settings is available here. :white_check_mark:

Demo

You can watch a short demo of the Radicle Webhooks adapter here.

Milestone 2: Woodpecker Integration

Number Deliverable Specification
1. Forge scaffold Done. :white_check_mark:
2. Enable Radicle Forge in Woodpecker Woodpecker users who install the Radicle Forge plugin can browse Radicle projects, by connecting to a Radicle HTTPD instance, and selecting a project which they want to enable in Woodpecker. This configures an API endpoint in Woodpecker that the Radicle CI Broker (and Webhooks Adapter) can forward Radicle Webhook Events to. The user manually needs to configure these in the Radicle CI Broker. :white_check_mark:
3. Parse Radicle Webhook Events in Woodpecker Woodpecker users who install the Radicle Forge plugin can listen to Radicle Webhook events (push, patch_created, patch_updated). These trigger the respective Woodpecker Jobs. :white_check_mark:
4. Support updating Radicle Patches with Woodpecker Build Status The plugin allows users to define a Woodpecker pipeline step that adds a comment to a Patch. :white_check_mark:
5. Woodpecker docs :construction: Work In Progress.
6. Radicle guide :construction: Work In Progress.

Demo

You can watch a short demo of the Woodpecker plugin for the Radicle Forge and how you can trigger jobs in Woodpecker from Radicle Patches here.

Milestone 3: Kraken CI Integration

Number Deliverable Specification
1. Enable Radicle Webhook Events in Kraken CI :construction: Work is in progress and will be delivered in the next few weeks. No extra budget required to cover this work, it is already included in the provided budget.
2. Support updating Radicle Patches with Kraken CI Build Status :construction: Work is in progress and will be delivered in the next few weeks. No extra budget required to cover this work, it is already included in the provided budget.
3. Kraken CI docs for Radicle :construction: Work is in progress and will be delivered in the next few weeks. No extra budget required to cover this work, it is already included in the provided budget.
4. Radicle guide :construction: Work is in progress and will be delivered in the next few weeks. No extra budget required to cover this work, it is already included in the provided budget.

Milestone 4: GitHub Actions Integration

Number Deliverable Specification
1. Extend CI Broker to track GitHub Action Workflows and Workflow Runs. In collaboration with the Heartwood team, we have created a new broker that delegates radicle node events to adapters. We have thus created the radicle-github-actions-adapter that takes care of tracking GitHub Actions workflow runs for the commit that was just pushed or patch that was just updated. It responds back to the broker the results of all the workflows as soon as they finish. :white_check_mark:
2. Support updating Radicle Patches with Workflow Run status The radicle-github-actions-adapter tracks the workflow run and writes a comment on the Patch with the outcome of the workflow run. It also writes a message if the workflow run takes β€œtoo long” (there is a configurable timeout). :white_check_mark:
3. Documentation & How-to Guide Docs are currently available on the project repository and more will be made available as soon as the Broker - Adapters integration has been completely and our Patch to the Broker has been accepted.

Demo

You can watch a short demo of the Radicle GitHub Actions adapter, which is triggered using a patch event, here.

Conclusion

These deliverables conclude the work funded by this particular grant. We will seek additional funding to continue work in this area through subsequent Grants applications and/or a new Org proposal in the more distant future.

4 Likes