# Setup Continuous Integration using GitHub Actions

**URL:** <https://meta.discourse.org/t/setup-continuous-integration-using-github-actions/240150>\
**Category:** Developer Guides\
**Tags:** how-to, code\
**Created:** [September 28, 2022, 3:52pm UTC](https://meta.discourse.org/t/setup-continuous-integration-using-github-actions/240150 "2022-09-28T15:52:57Z")\
**Posts on this page:** 1\
**Showing post:** 12

<div class="post-metadata">

**Author:** ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)\
**Post date:** [March 3, 2025, 8:53am UTC](https://meta.discourse.org/t/setup-continuous-integration-using-github-actions/240150/12 "2025-03-03T08:53:00Z")

</div>

Yup that should do it. Or you can just write the two jobs out manually without using a matrix:

```plaintext
name: Discourse Plugin

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  ci:
    uses: discourse/.github/.github/workflows/discourse-plugin.yml@v1

  ci-stable:
    uses: discourse/.github/.github/workflows/discourse-plugin.yml@v1
    with:
      core_ref: stable

```

Worth noting though: these jobs won’t check `.discourse-compatiblity`. So this is only worth doing on plugins that don’t use that file, and need to be compatible with both `main` and `stable` simultaneously.

For all of CDCK’s public themes/plugins, we add an entry to discourse-compatibility to ‘freeze’ them at every stable release. Then we don’t need to worry about stable compatibility while developing them.

---

_[View the full topic](https://meta.discourse.org/t/setup-continuous-integration-using-github-actions/240150)._
