1
0
mirror of synced 2026-03-20 16:48:09 +00:00

Compare commits

...

9 Commits

4 changed files with 147 additions and 132 deletions

View File

@@ -21,18 +21,18 @@ name: 'Build/Push Docker Image'
on:
workflow_dispatch:
inputs:
github_release_tag:
description: "Tag for the Github Release to use for building this Medley Docker image"
type: string
default: "Latest"
draft:
description: "Mark this as a draft release"
type: choice
options:
- 'false'
- 'true'
type: boolean
default: false
force:
description: "Force build even if build already successfully completed for this commit"
type: choice
options:
- 'false'
- 'true'
type: boolean
default: false
workflow_call:
outputs:
@@ -40,16 +40,21 @@ on:
description: "'True' if medley docker build completed successully"
value: ${{ jobs.complete.outputs.build_successful }}
inputs:
github_release_tag:
description: "Tag for the Github Release to use for building this Medley Docker image"
required: false
type: string
default: "Latest"
draft:
description: "Mark this as a draft release"
required: false
type: string
default: 'false'
type: boolean
default: false
force:
description: "Force build even if build already successfully completed for this commit"
required: false
type: string
default: 'false'
type: boolean
default: false
secrets:
DOCKER_USERNAME:
required: true
@@ -77,7 +82,7 @@ jobs:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
@@ -104,25 +109,27 @@ jobs:
needs: [sentry]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| inputs.force == 'true'
|| inputs.force == true
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v4
uses: actions/checkout@v6
# Find latest release (draft or normal)
# Find named or latest release
# and download its assets
- name: Download linux debs from latest (draft) release
- name: Download linux debs from named or latest release
run: |
tag=""
if [ "${{ inputs.draft }}" = "true" ];
then
tag=$(gh release list | grep Draft | head -n 1 | awk '{ print $3 }')
fi
if [ -z "${tag}" ];
if [ "${{ inputs.github_release_tag }}" = "Latest" ];
then
tag=$(gh release list | grep Latest | head -n 1 | awk '{ print $3 }')
else
tag=$(echo "${{ inputs.github_release_tag }}" | sed 's/[[:space:]]//g')
set +e
gh release view ${tag} --repo ${{ github.repository_owner }}/medley
if [ $? -ne 0 ]; then echo "!!!!!!! Error: Cannot find Medley release ${tag} on github Medley repo. Exiting."; exit 1; fi
set -e
fi
mkdir -p release_debs
gh release download ${tag} -D release_debs -p '*-linux-*.deb'
@@ -130,7 +137,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Get Maiko and Medley release information from name of deb files
# just downloaded from the Medley latest release
# just downloaded from the Medley github release
- name: Get info about Miako and Medley releases
id: release_info
run: |
@@ -142,7 +149,7 @@ jobs:
echo "MEDLEY_RELEASE=${medley_release}" >> ${GITHUB_ENV}
echo "MAIKO_RELEASE=${maiko_release}" >> ${GITHUB_ENV}
# regex="^[^0-9]*\([^_]*\)_\([^-]*-[^-]*\)-\([^-]*\)-\([^.]*\).*\$"
# re gex="^[^0-9]*\([^_]*\)_\([^-]*-[^-]*\)-\([^-]*\)-\([^.]*\).*\$"
# Set repo env variables
- name: Set repo/docker env variables
@@ -157,7 +164,7 @@ jobs:
platforms="linux/amd64"
#,linux/arm64
else
docker_tags="${docker_image}:draft"
docker_tags="${docker_image}:draft,${docker_image}:${MEDLEY_RELEASE#*-}_${MAIKO_RELEASE#*-}""
platforms="linux/amd64"
fi
echo "REPO_NAME=${repo_name}" >> ${GITHUB_ENV}
@@ -170,7 +177,7 @@ jobs:
# Setup the Docker Machine Emulation environment.
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v4
with:
platforms: linux/amd64
# ,linux/arm64,linux/arm/v7
@@ -178,11 +185,11 @@ jobs:
# Setup the Docker Buildx funtion
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4
# Login into DockerHub - required to store the created image
- name: Login to DockerHub
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
@@ -191,7 +198,7 @@ jobs:
# checked out and the release tars just downloaded.
# Push the result to Docker Hub
- name: Build Docker Image for Push to Docker Hub
uses: docker/build-push-action@v5
uses: docker/build-push-action@v7
with:
builder: ${{ steps.buildx.outputs.name }}
build-args: |
@@ -223,7 +230,7 @@ jobs:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}

View File

@@ -20,35 +20,43 @@ name: Build/Push Medley Release
on:
workflow_dispatch:
inputs:
maiko_release:
description: "What maiko release to use"
type: string
default: 'Latest'
draft:
description: "Mark this as a draft release"
type: choice
options:
- 'false'
- 'true'
type: boolean
default: false
force:
description: "Force build even if build already successfully completed for this commit"
type: choice
options:
- 'false'
- 'true'
type: boolean
default: false
workflow_call:
outputs:
successful:
description: "'True' if medley build completed successully"
value: ${{ jobs.complete.outputs.build_successful }}
github_release_tag:
description: "Github Release tag for release created in this run"
value: ${{ jobs.loadup.outputs.github_release_tag }}
inputs:
maiko_release:
description: "What maiko release to use"
required: false
type: string
default: 'Latest'
draft:
description: "Mark this as a draft release"
required: false
type: string
default: 'false'
type: boolean
default: false
force:
description: "Force build even if build already successfully completed for this commit"
required: false
type: string
default: 'false'
type: boolean
default: false
secrets:
OIO_SSH_KEY:
required: true
@@ -73,7 +81,7 @@ jobs:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
@@ -100,6 +108,7 @@ jobs:
outputs:
combined_release_tag: ${{ steps.job_outputs.outputs.COMBINED_RELEASE_TAG }}
github_release_tag: ${{ steps.job_outputs.outputs.GITHUB_RELEASE_TAG }}
medley_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_RELEASE_TAG }}
medley_short_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_SHORT_RELEASE_TAG }}
debs_filename_base: ${{ steps.debs.outputs.DEBS_FILENAME_BASE }}
@@ -110,12 +119,12 @@ jobs:
needs: [sentry]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| inputs.force == 'true'
|| inputs.force == true
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
@@ -123,35 +132,33 @@ jobs:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v4
uses: actions/checkout@v6
# Setup release tag
- name: Setup Release Tag
id: tag
uses: ./../actions/release-tag-action
# Get Maiko release information, retrieves the name of the latest (draft)
# Get Maiko release information, use maiko release tag from input or Latest
# release. Used to download the correct Maiko release
# Find latest release (draft or normal)
- name: Get maiko release information
id: maiko
run: |
tag=""
if [ "${{ inputs.draft }}" = "true" ];
then
gh release list --repo ${{ github.repository_owner }}/maiko | grep Draft >/tmp/releases-$$
if [ $? -eq 0 ];
then
tag=$(head -n 1 /tmp/releases-$$ | awk '{ print $3 }')
fi
fi
if [ -z "${tag}" ];
if [ "${{ inputs.maiko_release }}" = "Latest" ];
then
tag=$(gh release list --repo ${{ github.repository_owner }}/maiko | grep Latest | head -n 1 | awk '{ print $3 }')
else
tag=$(echo "${{ inputs.maiko_release }}" | sed 's/[[:space:]]//g')
set +e
gh release view ${tag} --repo ${{ github.repository_owner }}/maiko
if [ $? -ne 0 ]; then echo "!!!!!!! Error: Cannot find Maiko release ${tag}. Exiting."; exit 1; fi
set -e
fi
echo "maiko_tag=${tag}" >> ${GITHUB_OUTPUT}
env:
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
# Setup environment variables & establish job outputs
- name: Setup Environment Variables
run: |
@@ -167,10 +174,12 @@ jobs:
- name: Even More Environment Variables
run: |
echo "COMBINED_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}_${MAIKO_SHORT_RELEASE_TAG}" >>${GITHUB_ENV}
echo "GITHUB_RELEASE_TAG=medley-${COMBINED_RELEASE_TAG}" >>${GITHUB_ENV}
- name: Establish job outputs
id: job_outputs
run: |
echo "COMBINED_RELEASE_TAG=${COMBINED_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "GITHUB_RELEASE_TAG=${GITHUB_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MEDLEY_RELEASE_TAG=${MEDLEY_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MAIKO_RELEASE_TAG=${MAIKO_RELEASE_TAG}" >> $GITHUB_OUTPUT;
@@ -193,7 +202,7 @@ jobs:
# Checkout Notecards and tar it in the tarballsdir
- name: Checkout Notecards
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ github.repository_owner }}/notecards
path: ./notecards
@@ -223,7 +232,7 @@ jobs:
- name: Delete existing release with same tag (if any)
uses: cb80/delrel@latest
with:
tag: ${{ env.MEDLEY_RELEASE_TAG }}
tag: ${{ env.GITHUB_RELEASE_TAG }}
continue-on-error: true
- name: Push the release
@@ -235,7 +244,7 @@ jobs:
# ${{ env.TARBALL_DIR }}/notecards.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-loadups.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-runtime.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
tag: ${{ env.GITHUB_RELEASE_TAG }}
draft: ${{ inputs.draft }}
prerelease: false
generateReleaseNotes: true
@@ -243,7 +252,7 @@ jobs:
# Save the tarball directory for subsequent jobs
- name: Save tarballs
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
@@ -262,13 +271,13 @@ jobs:
needs: [sentry, loadup]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| inputs.force == 'true'
|| inputs.force == true
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v4
uses: actions/checkout@v6
# Environment variables
- name: Environment variables
@@ -285,7 +294,7 @@ jobs:
# Get the tarballs
- name: Get tarballs
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
@@ -306,7 +315,7 @@ jobs:
artifacts:
${{ env.DEBS_DIR }}/*.deb,
${{ env.TARS_DIR }}/*.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
tag: ${{ env.GITHUB_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
@@ -319,7 +328,7 @@ jobs:
mv medley-full-linux-x86_64-*.tgz medley.tgz
- name: Save medley tar for use in cygwin installers
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: medley-tar
path: |
@@ -338,7 +347,7 @@ jobs:
needs: [sentry, loadup]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| inputs.force == 'true'
|| inputs.force == true
# if: false
defaults:
@@ -349,7 +358,7 @@ jobs:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v4
uses: actions/checkout@v6
# Environment variables
- name: Environment variables
@@ -366,7 +375,7 @@ jobs:
# Get the tarballs
- name: Get tarballs
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
@@ -387,7 +396,7 @@ jobs:
artifacts:
# 2023-07-20 not yet building dmg -- ${{ env.ARTIFACTS_DIR }}/*.dmg,
${{ env.ARTIFACTS_DIR }}/*.zip
tag: ${{ env.MEDLEY_RELEASE_TAG }}
tag: ${{ env.GITHUB_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
@@ -409,7 +418,7 @@ jobs:
needs: [sentry, loadup, linux_installer]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| inputs.force == 'true'
|| inputs.force == true
outputs:
cygwin_installer: ${{ steps.compile_iss.outputs.CYGWIN_INSTALLER }}
@@ -418,7 +427,7 @@ jobs:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v4
uses: actions/checkout@v6
# Store the values output from loadup job as environment variables
- name: Environment Variables
@@ -426,6 +435,8 @@ jobs:
run: |
$crt="${{ needs.loadup.outputs.combined_release_tag }}"
echo "COMBINED_RELEASE_TAG=$crt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$grt="${{ needs.loadup.outputs.github_release_tag }}"
echo "GITHUB_RELEASE_TAG=$grt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$mrt="${{ needs.loadup.outputs.medley_release_tag }}"
echo "MEDLEY_RELEASE_TAG=$mrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
@@ -437,7 +448,7 @@ jobs:
# Retrieve medley tars from artifact store
- name: Retrieve medley tar
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: medley-tar
path: installers/cygwin/
@@ -491,7 +502,7 @@ jobs:
with:
allowUpdates: true
artifacts: installers/cygwin/${{ env.CYGWIN_INSTALLER }}
tag: ${{ env.MEDLEY_RELEASE_TAG }}
tag: ${{ env.GITHUB_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
@@ -512,7 +523,7 @@ jobs:
needs: [sentry, loadup, linux_installer, macos_installer, cygwin_installer]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| inputs.force == 'true'
|| inputs.force == true
steps:
@@ -521,6 +532,8 @@ jobs:
run: |
crt="${{ needs.loadup.outputs.combined_release_tag }}"
echo "COMBINED_RELEASE_TAG=${crt}" >>${GITHUB_ENV}
grt="${{ needs.loadup.outputs.github_release_tag }}"
echo "GITHUB_RELEASE_TAG=${crt}" >>${GITHUB_ENV}
mrt="${{ needs.loadup.outputs.medley_release_tag }}"
echo "MEDLEY_RELEASE_TAG=${mrt}" >>${GITHUB_ENV}
msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
@@ -530,7 +543,7 @@ jobs:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v4
uses: actions/checkout@v6
# Upload a dummy file to release
@@ -544,7 +557,7 @@ jobs:
with:
allowUpdates: true
artifacts: placeholder.txt
tag: ${{ env.MEDLEY_RELEASE_TAG }}
tag: ${{ env.GITHUB_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
@@ -616,14 +629,14 @@ jobs:
steps:
# Delete the tarballs artifact
- name: Delete tarballs artifact
uses: geekyeggo/delete-artifact@v5
uses: geekyeggo/delete-artifact@v6
with:
name: tarballs
failOnError: false
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}

View File

@@ -24,18 +24,22 @@ on:
workflow_dispatch:
inputs:
maiko_release:
description: "What maiko release to use"
type: string
default: 'Latest'
draft:
description: "Mark this as a draft release"
type: choice
options:
- 'false'
- 'true'
type: boolean
default: false
online:
description: "Deploy this release online"
type: boolean
default: true
force:
description: "Force build even if build already successfully completed for this commit"
type: choice
options:
- 'false'
- 'true'
type: boolean
default: false
workflow_call:
outputs:
@@ -43,16 +47,26 @@ on:
description: "'True' if medley build completed successully"
value: ${{ jobs.complete.outputs.build_successful }}
inputs:
maiko_release:
description: "What maiko release to use"
required: false
type: string
default: 'Latest'
draft:
description: "Mark this as a draft release"
required: false
type: string
default: 'false'
type: boolean
default: false
online:
description: "Deploy this release online"
required: false
type: boolean
default: true
force:
description: "Force build even if build already successfully completed for this commit"
required: false
type: string
default: 'false'
type: boolean
default: false
defaults:
run:
@@ -63,75 +77,56 @@ defaults:
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-24.04
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 }}
maiko_release: ${{ inputs.maiko_release }}
draft: ${{ inputs.draft }}
force: ${{ inputs.force }}
secrets: inherit
outputs:
github_release_tag: ${{ needs.do_release.outputs.github_release_tag }}
######################################################################################
# Build Docker Image
do_docker:
needs: [inputs, do_release]
needs: [do_release]
uses: ./.github/workflows/buildDocker.yml
with:
draft: ${{ needs.inputs.outputs.draft }}
force: ${{ needs.inputs.outputs.force }}
github_release_tag: ${{ needs.do_release.outputs.github_release_tag }}
draft: ${{ inputs.draft }}
force: ${{ inputs.force }}
secrets: inherit
######################################################################################
# Run HCFILES and push to files.interlisp.org
do_HCFILES:
needs: [inputs, do_release]
needs: [do_release]
uses: ./.github/workflows/doHCFILES.yml
with:
draft: ${{ needs.inputs.outputs.draft }}
draft: ${{ inputs.draft }}
secrets: inherit
######################################################################################
# Kickoff workflow in online repo to build and deploy Medley docker image to oio
do_oio:
if: ${{ inputs.online }} == true
runs-on: ubuntu-24.04
needs: [inputs, do_docker]
needs: [do_release, do_docker]
steps:
- name: trigger-oio-buildAndDeploy
run: |
if [ ! "${{ needs.inputs.outputs.draft }}" = "true" ]
then
gh workflow run buildAndDeployMedleyDocker.yml --repo Interlisp/online --ref main
fi
gh workflow run buildAndDeployMedleyDocker.yml \
--repo Interlisp/online --ref main \
-f github_release_tag=${{ needs.do_release.outputs.github_release_tag }} \
-f draft=${{ inputs.draft }}
env:
GITHUB_TOKEN: ${{ secrets.ONLINE_TOKEN }}

View File

@@ -50,28 +50,28 @@ jobs:
steps:
- name: Checkout Medley repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Checkout maiko
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ github.repository_owner }}/maiko
path: ./maiko
- name: Checkout notecards
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ github.repository_owner }}/notecards
path: ./notecards
- name: Checkout loops
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ github.repository_owner }}/loops
path: ./loops
- name: Checkout test
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ github.repository_owner }}/test
path: ./test