Build/Push Release, Docker, OIO #140
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#******************************************************************************* | |
# buidReleaseInclDocker.yml | |
# | |
# Interlisp webflow to build a Medley release and push it to github. | |
# And to build a multiplatform Docker image for the release and push it to Docker Hub. | |
# And to kickoff a build and deploy workflow for Medley-online within the online repo. | |
# | |
# This workflow just calls two reuseable workflows to the two task: | |
# buildLoadup.yml and buildDocker.yml | |
# | |
# 2022-01-18 Frank Halasz | |
# | |
# Copyright 2022 by Interlisp.org | |
# | |
# ****************************************************************************** | |
name: "Build/Push Release, Docker, OIO" | |
# Run this workflow on ... | |
on: | |
schedule: | |
- cron: '17 9 * * 3' | |
workflow_dispatch: | |
inputs: | |
draft: | |
description: "Mark this as a draft release" | |
type: choice | |
options: | |
- 'false' | |
- 'true' | |
force: | |
description: "Force build even if build already successfully completed for this commit" | |
type: choice | |
options: | |
- 'false' | |
- 'true' | |
workflow_call: | |
outputs: | |
successful: | |
description: "'True' if medley build completed successully" | |
value: ${{ jobs.complete.outputs.build_successful }} | |
inputs: | |
draft: | |
description: "Mark this as a draft release" | |
required: false | |
type: string | |
default: 'false' | |
force: | |
description: "Force build even if build already successfully completed for this commit" | |
required: false | |
type: string | |
default: 'false' | |
defaults: | |
run: | |
shell: bash | |
# Jobs that compose this workflow | |
jobs: | |
###################################################################################### | |
# Regularize the inputs so they can be referenced the same way whether they are | |
# the result of a workflow_dispatch or a workflow_call | |
inputs: | |
runs-on: ubuntu-latest | |
outputs: | |
draft: ${{ steps.one.outputs.draft }} | |
force: ${{ steps.one.outputs.force }} | |
steps: | |
- id: one | |
run: > | |
if [ '${{ toJSON(inputs) }}' != '{}' ]; | |
then | |
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT; | |
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT; | |
else | |
echo "draft=false" >> $GITHUB_OUTPUT; | |
echo "force=false" >> $GITHUB_OUTPUT; | |
fi | |
###################################################################################### | |
# Build Loadup | |
do_release: | |
needs: inputs | |
uses: ./.github/workflows/buildLoadup.yml | |
with: | |
draft: ${{ needs.inputs.outputs.draft }} | |
force: ${{ needs.inputs.outputs.force }} | |
secrets: inherit | |
###################################################################################### | |
# Build Docker Image | |
do_docker: | |
needs: [inputs, do_release] | |
uses: ./.github/workflows/buildDocker.yml | |
with: | |
draft: ${{ needs.inputs.outputs.draft }} | |
force: ${{ needs.inputs.outputs.force }} | |
secrets: inherit | |
###################################################################################### | |
# Run HCFILES and push to files.interlisp.org | |
do_HCFILES: | |
needs: [inputs, do_release] | |
uses: ./.github/workflows/doHCFILES.yml | |
with: | |
draft: ${{ needs.inputs.outputs.draft }} | |
secrets: inherit | |
###################################################################################### | |
# Kickoff workflow in online repo to build and deploy Medley docker image to oio | |
do_oio: | |
runs-on: ubuntu-latest | |
needs: [inputs, do_docker] | |
steps: | |
- name: trigger-oio-buildAndDeploy | |
run: | | |
if [ ! "${{ needs.inputs.outputs.draft }}" = "true" ] | |
then | |
gh workflow run buildAndDeployMedleyDocker.yml --repo Interlisp/online --ref master | |
fi | |
env: | |
GITHUB_TOKEN: ${{ secrets.ONLINE_TOKEN }} |