Reuse Picasso Workflow in Your Repository
Contents
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.