Skip to main content

Schedule Jobs With GitHub Actions and the CLI

Before You Begin

  • Access to a GitHub account and project. Sign up for free here.
  • Git must be set up and configured in your Coalesce Org. To use GitHub Actions, you must use GitHub as your git repository.

Upload Actions Secret

To follow best practices, Coalesce recommends that you upload your coa config file as a secure file within the GitHub Actions settings.

  1. From within your GitHub project, go to Settings → Secrets → Actions

    GitHub secrets
  2. Click New repository secret.

  3. Provide a name for it. In this example we will call it COA_CONFIG.

  4. Find and open your coa config file. Default location is ~/.coa.

  5. Copy its contents into the Value field.

  6. Click Add Secret to save.

Example Deploy on Merge Workflow

  1. From within your GitHub project, go to Actions and click New workflow.

  2. Choose Simple workflowConfigure.

  3. You will be presented with a template YAML file. Provide it a name and replace its content with the Deploy Workflow code below.

    Deploy Workflow
    name: Deploy to Environment

    on:
    push:
    branches:
    - main

    workflow_dispatch:
    env:
    COA_VERSION: latest # Before utilizing this pipeline in production scenarios, it is advised to pin a specific version. This practice aims to reduce potential disruptions. You can find the released versions on NPM at this link: https://www.npmjs.com/package/@coalescesoftware/coa
    jobs:
    deploy:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
    with:
    node-version: 18

    # Fetch config secret from GitHub Actions secret repository, then write coa config to a temporary file
    - run: echo '${{ secrets.COA_CONFIG }}' >> COA_CONFIG

    # Install Coalesce CLI tool, if not installed already
    - run: npm list | grep "@coalescesoftware/coa@${{ env.COA_VERSION }}" || npm install @coalescesoftware/coa@${{ env.COA_VERSION }}

    # Print version number
    - run: npx coa --version

    # Create Deployment Plan
    - run: npx coa plan --config COA_CONFIG --out ./coa-plan --debug

    # Deploy Plan
    - run: npx coa deploy --config COA_CONFIG --plan ./coa-plan --debug
  4. Commit this file to your repository.

  5. You'll now see your workflow, and it will automatically run when a commit is merged to the main branch. You can also manually run it by clicking Run workflow.

Deploy worklflow in GitHub

Example Scheduled Refresh Workflow

The following instructions provide an example workflow where an Environment is refreshed hourly using a cron job.

  1. From within your GitHub project, go to Actions and click New workflow.

  2. Choose Simple workflowConfigure.

  3. You will be presented with a template YAML file. Provide it a name and replace its content with the Refresh Workflow code below.

    Refresh Workflow
    name: Refresh Data

    on:
    # Set a schedule using cron
    schedule:
    - cron: "0 * * * *"

    # This option allows the workflow to be triggered manually
    workflow_dispatch:

    env:
    COA_VERSION: latest # Versions released on NPM here: https://www.npmjs.com/package/@coalescesoftware/coa

    jobs:
    build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
    with:
    node-version: 18

    # Fetch coa config secret from GitHub Actions secret repository, then write coa config to a temporary file
    - run: echo '${{ secrets.COA_CONFIG }}' >> COA_CONFIG

    # Install Coalesce CLI tool, if not installed already
    - run: npm list | grep "@coalescesoftware/coa@${{ env.COA_VERSION }}" || npm install @coalescesoftware/coa@${{ env.COA_VERSION }}

    # Execute coa CLI, starting coa refresh
    - run: npx coa refresh --config COA_CONFIG
  4. Commit this file to your repository.

  5. You'll now see your workflow, and it will automatically run every hour. You can also manually run it by clicking Run workflow.

GitHub refresh workflow