Reuse Picasso Workflow in Your Repository#

This document will guide you through different ways of reusing the Picasso workflow in your own repository.

To use a reusable workflow from your own repository, you can use the uses keyword in your workflow file. The uses keyword specifies the location of the reusable workflow file, which can be a specific tag, branch, or commit, either in the same repository or a different repository.

The (caller) workflow can access the reusable workflow file (callee) without restriction if the callee is public. If the callee is in a private repository, then the caller must belong to the same organization as the callee.

For more information, see Reusing workflows.

Workflow Dispatch Event#

Here is an example of how to use the Picasso workflow using the workflow_dispatch event:

name: Build Open edX Image
run-name: Build image for service '${{ inputs.SERVICE }}' from repository '${{ inputs.STRAIN_REPOSITORY }}' on branch '${{ inputs.STRAIN_REPOSITORY_BRANCH }}'
on:
    workflow_dispatch:
        inputs:
            STRAIN_REPOSITORY:
                description: 'Repository to clone the configuration from'
                default: 'eduNEXT/build-manifests'
                type: string
            STRAIN_REPOSITORY_BRANCH:
                description: 'Branch to clone the configuration from'
                default: 'master'
                type: string
            STRAIN_PATH:
                description: 'Path to the configuration within the repository'
                default: 'redwood/base'
                type: string
            SERVICE:
                description: 'Service to build'
                default: 'openedx'
                type: choice
                options:
                - openedx
                - mfe
                - codejail
                - aspects
                - aspects-superset
                - ecommerce
                - discovery

jobs:
    build:
        name: Build Open edX Image
        uses: eduNEXT/picasso/.github/workflows/build.yml@main
        with:
            STRAIN_REPOSITORY: ${{ inputs.STRAIN_REPOSITORY }}
            STRAIN_REPOSITORY_BRANCH: ${{ inputs.STRAIN_REPOSITORY_BRANCH }}
            STRAIN_PATH: ${{ inputs.STRAIN_PATH }}
            SERVICE: ${{ inputs.SERVICE }}
        secrets:
            DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
            DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
            SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}

In this example, you can trigger the workflow manually via the GitHub Actions tab, using the workflow_dispatch feature to input the necessary values. Based on the provided inputs, the workflow will then build the Open edX image.

Push Event#

Here’s an example of how to use the Picasso workflow using the push event:

name: Build Open edX Image
run-name: Build image for service '${{ inputs.SERVICE }}' from repository '${{ inputs.STRAIN_REPOSITORY }}' on branch '${{ inputs.STRAIN_REPOSITORY_BRANCH }}'
on:
    push:
        branches:
            - master
            - main
        paths:
            - 'redwood/base/**'

jobs:
    build:
        name: Build Open edX Image
        uses: eduNEXT/picasso/.github/workflows/build.yml@main
        with:
            STRAIN_REPOSITORY: eduNEXT/build-manifests
            STRAIN_REPOSITORY_BRANCH: master
            STRAIN_PATH: redwood/base
            SERVICE: openedx
        secrets:
            DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
            DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
            SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}

In this example, the workflow will be triggered automatically when a push event occurs on the master or main branch, affecting the path redwood/base/**. Based on the provided inputs, the workflow will then build the Open edX image.

For more details on the available events, see Events that trigger workflows.

Note

To better identify the workflow run, you can set the run-name attribute in the workflow file. This attribute will be displayed in the GitHub Actions tab.