Schedule Jobs With GitHub Actions and the CLI

Prerequisites

  • 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.
2876

Location of GitHub secrets

  1. Click New repository secret.
  2. Provide a name for it. In this example we will call it COA_CONFIG.
  3. Find and open your coa config file. Default location is ~/.coa.
  4. Copy its contents into the Value field.
  5. 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.
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
  1. Commit this file to your repository
  2. 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 Workflow

Deploy Workflow

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.
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
  1. Commit this file to your repository.
  2. You'll now see your workflow, and it will automatically run every hour. You can also manually run it by clicking Run workflow.
3224

Refresh workflow


What’s Next