diff --git a/.github/workflows/buildDocker.yml b/.github/workflows/buildDocker.yml index 6de4b20b..c752046c 100644 --- a/.github/workflows/buildDocker.yml +++ b/.github/workflows/buildDocker.yml @@ -21,18 +21,18 @@ name: 'Build/Push Docker Image' on: workflow_dispatch: inputs: + medley_release: + description: "Tag for Medley 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: @@ -40,16 +40,21 @@ on: description: "'True' if medley docker build completed successully" value: ${{ jobs.complete.outputs.build_successful }} inputs: + medley_release: + description: "Tag for Medley 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: DOCKER_USERNAME: required: true @@ -104,26 +109,28 @@ 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 - # 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.medley_release }}" = "Latest" ]; then tag=$(gh release list | grep Latest | head -n 1 | awk '{ print $3 }') - fi + else + tag=$(echo "${{ inputs.medley_release }}" | 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}. Exiting."; exit 1; fi + set -e + fi mkdir -p release_debs gh release download ${tag} -D release_debs -p '*-linux-*.deb' env: @@ -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 diff --git a/.github/workflows/buildLoadup.yml b/.github/workflows/buildLoadup.yml index 0170680a..b57c399b 100644 --- a/.github/workflows/buildLoadup.yml +++ b/.github/workflows/buildLoadup.yml @@ -38,6 +38,9 @@ on: successful: description: "'True' if medley build completed successully" value: ${{ jobs.complete.outputs.build_successful }} + medley_release: + description: "Medley release tag for this run" + value: inputs: maiko_release: description: "What maiko release to use" diff --git a/.github/workflows/buildReleaseInclDocker.yml b/.github/workflows/buildReleaseInclDocker.yml index 08118c4c..2b618386 100644 --- a/.github/workflows/buildReleaseInclDocker.yml +++ b/.github/workflows/buildReleaseInclDocker.yml @@ -24,18 +24,18 @@ 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: @@ -43,16 +43,21 @@ 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 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,39 +68,16 @@ 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 @@ -103,21 +85,21 @@ jobs: # 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 }} + 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 ###################################################################################### @@ -125,11 +107,11 @@ jobs: # Kickoff workflow in online repo to build and deploy Medley docker image to oio do_oio: runs-on: ubuntu-24.04 - needs: [inputs, do_docker] + needs: [do_docker] steps: - name: trigger-oio-buildAndDeploy run: | - if [ ! "${{ needs.inputs.outputs.draft }}" = "true" ] + if [ ! "${{ inputs.draft }}" = true ] then gh workflow run buildAndDeployMedleyDocker.yml --repo Interlisp/online --ref main fi