* Add cygwin-sdl build to buildLoadup workflow; add installer for cygwin-sdl on windows * Change how buildLoadup computes latest maiko release to accomodate draft releases * Fix call to gh release list for maiko * Debugging call to gh release list for maiko * Debugging call to gh release list for maiko #2 * Debugging call to gh release list for maiko #3 * Debugging call to gh release list for maiko #4 * Debugging call to gh release list for maiko #5 * Debugging call to gh release list for maiko #6 * Change maiko downloads to accoiunt for draft releases * Change maiko downloads to account for draft releases #2 * Specify shell (powershell) for Download cygwin installler * Few cleanup items on cygwin-install * Update ShellWhich to use command -v instead of which because which returns to much crap on cygwin and command -v is more portable overall * Switch from using medley-loadup & -runtime tars to medley-full-*.tgz so we get full release incl notecards; delete maiko on install and replace with cygwin maiko * Make sure Notecards doesn't try to load its HASH fileon PostGreet - for apps.sysout * Add xdg-utils to cygwin install to support ShellBrowser * Odds and ends on cygwin build * Redo medley.iss install script to use tar from Windows rather than cygwin tar because cygwin tar was messing up ACLs in windows. Needed to change creation of medley.bat accordingly. * Remove junk lines from buildLoadup.yml * Restore accidently deleted line to buildLoadup.yml * Fix multiple issues with cygwin_installer filename; arrange to remove placeholder.txt from the release assets at the end of cygwin installer * Change name of job from windows_installer to cygwin_installer * Fix missing GH_TOKEN is removal of placeholder.txt; fix naming of output file in medley.iss * Fiddling with getting cygwin-installer name right * Redoing merge of medley.sh/medley.command to handle the Darwin plus Cygwin cases; is medley.iss recreate symbolic links surrounding the medley.sh script * Fix typos/syntrax errors in medley.sh/medley.command
672 lines
23 KiB
YAML
672 lines
23 KiB
YAML
#*******************************************************************************
|
|
# buidLoadup.yml
|
|
#
|
|
# Interlisp workflow to build Medley release and push it to github. This workflow
|
|
# is platform independent - but runs on Linux/amd64.
|
|
#
|
|
# This workflow contains a sentry that causes it to skip the build (as identified
|
|
# by its commit SHA) if its already been done. Setting the "force" input to true
|
|
# will bypass this sentry,
|
|
#
|
|
# 2022-01-17 Frank Halasz based on an earlier version of buildLoadup for Medley.
|
|
#
|
|
# Copyright 2022-2023 by Interlisp.org
|
|
#
|
|
# ******************************************************************************
|
|
|
|
name: Build/Push Medley Release
|
|
|
|
# Run this workflow on ...
|
|
on:
|
|
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'
|
|
secrets:
|
|
OIO_SSH_KEY:
|
|
required: true
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
|
|
jobs:
|
|
|
|
# JOB: inputs #######################################################################
|
|
|
|
# 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) }}' = 'null' ];
|
|
then
|
|
echo "workflow_dispatch";
|
|
echo "draft=${{ github.event.inputs.draft }}" >> $GITHUB_OUTPUT;
|
|
echo "force=${{ github.event.inputs.force }}" >> $GITHUB_OUTPUT;
|
|
else
|
|
echo "workflow_call";
|
|
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
|
|
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
|
|
fi
|
|
|
|
|
|
# JOB: sentry #######################################################################
|
|
|
|
# Use sentry-action to determine if this release has already been built
|
|
# based on the latest commit to the repo
|
|
|
|
sentry:
|
|
needs: inputs
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
release_not_built: ${{ steps.check.outputs.release_not_built }}
|
|
|
|
steps:
|
|
# Checkout the actions for this repo owner
|
|
- name: Checkout Actions
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: ${{ github.repository_owner }}/.github
|
|
path: ./Actions_${{ github.sha }}
|
|
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
|
|
|
# Check if build already run for this commit
|
|
- name: Build already completed?
|
|
id: check
|
|
continue-on-error: true
|
|
uses: ./../actions/check-sentry-action
|
|
with:
|
|
tag: "loadup"
|
|
|
|
|
|
# JOB: loadup #######################################################################
|
|
|
|
#
|
|
# Do the loadup and push to release on github
|
|
#
|
|
|
|
loadup:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
outputs:
|
|
combined_release_tag: ${{ steps.job_outputs.outputs.COMBINED_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 }}
|
|
maiko_release_tag: ${{ steps.job_outputs.outputs.MAIKO_RELEASE_TAG }}
|
|
artifacts_filename_template: ${{ steps.job_outputs.outputs.ARTIFACTS_FILENAME_TEMPLATE }}
|
|
release_url: ${{ steps.push.outputs.html_url }}
|
|
|
|
needs: [inputs, sentry]
|
|
if: |
|
|
needs.sentry.outputs.release_not_built == 'true'
|
|
|| needs.inputs.outputs.force == 'true'
|
|
|
|
steps:
|
|
# Checkout the actions for this repo owner
|
|
- name: Checkout Actions
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: ${{ github.repository_owner }}/.github
|
|
path: ./Actions_${{ github.sha }}
|
|
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
|
|
|
# Checkout latest commit
|
|
- name: Checkout Medley
|
|
uses: actions/checkout@v3
|
|
|
|
# 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)
|
|
# release. Used to download the correct Maiko release
|
|
# Find latest release (draft or normal)
|
|
- name: Get maiko release information
|
|
id: maiko
|
|
run: |
|
|
tag=""
|
|
if [ "${{ needs.inputs.outputs.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}" ];
|
|
then
|
|
tag=$(gh release list --repo ${{ github.repository_owner }}/maiko | grep Latest | head -n 1 | awk '{ print $3 }')
|
|
fi
|
|
echo "maiko_tag=${tag}" >> ${GITHUB_OUTPUT}
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
|
|
# Setup environment variables & establish job outputs
|
|
- name: Setup Environment Variables
|
|
run: |
|
|
echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_OUTPUT}
|
|
echo "TARBALL_DIR=/tmp/tarballs" >>${GITHUB_ENV}
|
|
echo "MEDLEY_RELEASE_TAG=${RELEASE_TAG}" >>${GITHUB_ENV}
|
|
echo "MAIKO_RELEASE_TAG=${{ steps.maiko.outputs.maiko_tag }}" >>${GITHUB_ENV}
|
|
echo "ARTIFACTS_FILENAME_TEMPLATE=medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@" >>${GITHUB_ENV}
|
|
- name: More Environment Variables
|
|
run: |
|
|
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_RELEASE_TAG#medley-}" >>${GITHUB_ENV}
|
|
echo "MAIKO_SHORT_RELEASE_TAG=${MAIKO_RELEASE_TAG#maiko-}" >>${GITHUB_ENV}
|
|
- name: Even More Environment Variables
|
|
run: |
|
|
echo "COMBINED_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}_${MAIKO_SHORT_RELEASE_TAG}" >>${GITHUB_ENV}
|
|
- name: Establish job outputs
|
|
id: job_outputs
|
|
run: |
|
|
echo "COMBINED_RELEASE_TAG=${COMBINED_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;
|
|
echo "ARTIFACTS_FILENAME_TEMPLATE=${ARTIFACTS_FILENAME_TEMPLATE}" >> ${GITHUB_OUTPUT}
|
|
|
|
# Setup some needed dirs in workspace
|
|
- name: Create work dirs
|
|
run: mkdir -p ${TARBALL_DIR}
|
|
|
|
# Download Maiko Release Assets and untar it
|
|
- name: Download Release Assets
|
|
run: |
|
|
gh release download ${MAIKO_RELEASE_TAG} \
|
|
-D ${TARBALL_DIR} \
|
|
--repo ${{ github.repository_owner }}/maiko \
|
|
-p '*.tgz'
|
|
tar -xzf "${TARBALL_DIR}/${MAIKO_RELEASE_TAG}-linux.x86_64.tgz"
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
|
|
|
|
# Checkout Notecards and tar it in the tarballsdir
|
|
- name: Checkout Notecards
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: ${{ github.repository_owner }}/notecards
|
|
path: ./notecards
|
|
- name: Tar notecards into tarball dir
|
|
run: |
|
|
mv ./notecards ../notecards
|
|
cd ../notecards
|
|
git archive --format=tgz --output="${TARBALL_DIR}/notecards.tgz" --prefix=notecards/ main
|
|
|
|
# Install vnc
|
|
- name: Install vnc
|
|
run: sudo apt-get update && sudo apt-get install -y tightvncserver
|
|
|
|
- name: Build Loadup sysouts and databases
|
|
run: |
|
|
Xvnc -geometry 1280x720 :0 &
|
|
export DISPLAY=":0"
|
|
scripts/loadup-all.sh -apps
|
|
scripts/loadup-db.sh
|
|
|
|
- name: Build release tars
|
|
run: |
|
|
scripts/release-make-tars.sh "${MEDLEY_RELEASE_TAG}"
|
|
mv releases/"${MEDLEY_SHORT_RELEASE_TAG}"/*.tgz "${TARBALL_DIR}"
|
|
|
|
# Push the release up to github releases
|
|
- name: Delete existing release with same tag (if any)
|
|
uses: cb80/delrel@latest
|
|
with:
|
|
tag: ${{ env.MEDLEY_RELEASE_TAG }}
|
|
continue-on-error: true
|
|
|
|
- name: Push the release
|
|
id: push
|
|
uses: ncipollo/release-action@v1
|
|
with:
|
|
allowUpdates: true
|
|
artifacts:
|
|
# ${{ 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 }}
|
|
draft: ${{ needs.inputs.outputs.draft }}
|
|
prerelease: false
|
|
generateReleaseNotes: true
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Save the tarball directory for subsequent jobs
|
|
- name: Save tarballs
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: tarballs
|
|
path: ${{ env.TARBALL_DIR }}
|
|
if-no-files-found: error
|
|
|
|
|
|
# JOB: linux_installer ##############################################################
|
|
|
|
#
|
|
# Create the linux installers (.deb and .tgz) and push to release on github
|
|
#
|
|
linux_installer:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [inputs, sentry, loadup]
|
|
if: |
|
|
needs.sentry.outputs.release_not_built == 'true'
|
|
|| needs.inputs.outputs.force == 'true'
|
|
|
|
steps:
|
|
|
|
# Checkout latest commit
|
|
- name: Checkout Medley
|
|
uses: actions/checkout@v3
|
|
|
|
# Environment variables
|
|
- name: Environment variables
|
|
run: |
|
|
echo "DEBS_DIR=installers/deb/debs" >>${GITHUB_ENV}
|
|
echo "TARS_DIR=installers/deb/tars" >>${GITHUB_ENV}
|
|
echo "TARBALL_DIR=installers/deb/tmp/tarballs" >>${GITHUB_ENV}
|
|
echo "MEDLEY_RELEASE_TAG=${{ needs.loadup.outputs.medley_release_tag }}" \
|
|
>>${GITHUB_ENV}
|
|
echo "ARTIFACTS_FILENAME_TEMPLATE=${{ needs.loadup.outputs.artifacts_filename_template }}" >>${GITHUB_ENV}
|
|
|
|
# Create taball dir
|
|
- run: mkdir -p ${TARBALL_DIR}
|
|
|
|
# Get the tarballs
|
|
- name: Get tarballs
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: tarballs
|
|
path: ${{ env.TARBALL_DIR }}
|
|
|
|
# Build the deb files as well as the tgz files
|
|
- name: Build .deb files for 3 architectures
|
|
id: debs
|
|
run: |
|
|
cd installers/deb
|
|
./build_deb.sh
|
|
|
|
# Push the debs and tgz up to github releases
|
|
- name: Push the release
|
|
id: push_release
|
|
uses: ncipollo/release-action@v1
|
|
with:
|
|
allowUpdates: true
|
|
artifacts:
|
|
${{ env.DEBS_DIR }}/*.deb,
|
|
${{ env.TARS_DIR }}/*.tgz
|
|
tag: ${{ env.MEDLEY_RELEASE_TAG }}
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
omitBodyDuringUpdate: true
|
|
omitDraftDuringUpdate: true
|
|
omitNameDuringUpdate: true
|
|
omitPrereleaseDuringUpdate: true
|
|
|
|
- name: Rename medley tar for the x86_64 platform
|
|
run: |
|
|
cd ${{ env.TARS_DIR }}
|
|
mv medley-full-linux-x86_64-*.tgz medley.tgz
|
|
|
|
- name: Save medley tar for use in cygwin installers
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: medley-tar
|
|
path: |
|
|
${{ env.TARS_DIR }}/medley.tgz
|
|
|
|
|
|
# JOB: macos_installer ##############################################################
|
|
|
|
#
|
|
# Create the macos installers (.dmg and .zip) and push to release on github
|
|
#
|
|
macos_installer:
|
|
|
|
runs-on: macos-12
|
|
|
|
needs: [inputs, sentry, loadup]
|
|
if: |
|
|
needs.sentry.outputs.release_not_built == 'true'
|
|
|| needs.inputs.outputs.force == 'true'
|
|
# if: false
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
steps:
|
|
|
|
# Checkout latest commit
|
|
- name: Checkout Medley
|
|
uses: actions/checkout@v3
|
|
|
|
# Environment variables
|
|
- name: Environment variables
|
|
run: |
|
|
MACOS_DIR=installers/macos
|
|
echo "MACOS_DIR=${MACOS_DIR}" >>${GITHUB_ENV}
|
|
echo "ARTIFACTS_DIR=${MACOS_DIR}/artifacts" >>${GITHUB_ENV}
|
|
echo "TARBALL_DIR=${MACOS_DIR}/tmp/tarballs" >>${GITHUB_ENV}
|
|
echo "MEDLEY_RELEASE_TAG=${{ needs.loadup.outputs.medley_release_tag }}" >>${GITHUB_ENV}
|
|
echo "ARTIFACTS_FILENAME_TEMPLATE=${{ needs.loadup.outputs.artifacts_filename_template }}" >>${GITHUB_ENV}
|
|
|
|
# Create tarball dir
|
|
- run: mkdir -p ${TARBALL_DIR}
|
|
|
|
# Get the tarballs
|
|
- name: Get tarballs
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: tarballs
|
|
path: ${{ env.TARBALL_DIR }}
|
|
|
|
# Build the .dmg and .zip files
|
|
- name: Build .dmg & .zip files
|
|
id: dmg-zip
|
|
run: |
|
|
cd ${MACOS_DIR}
|
|
./build_artifacts.sh
|
|
|
|
# Push the .dmg and .zip up to github releases
|
|
- name: Push the release
|
|
id: push_release
|
|
uses: ncipollo/release-action@v1
|
|
with:
|
|
allowUpdates: true
|
|
artifacts:
|
|
# 2023-07-20 not yet building dmg -- ${{ env.ARTIFACTS_DIR }}/*.dmg,
|
|
${{ env.ARTIFACTS_DIR }}/*.zip
|
|
tag: ${{ env.MEDLEY_RELEASE_TAG }}
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
omitBodyDuringUpdate: true
|
|
omitDraftDuringUpdate: true
|
|
omitNameDuringUpdate: true
|
|
omitPrereleaseDuringUpdate: true
|
|
|
|
|
|
|
|
# JOB: cygwin_installer #############################################################
|
|
|
|
#
|
|
# Create the Windows installer, push it up to the release on github and
|
|
# update the downloads page on OIO
|
|
#
|
|
cygwin_installer:
|
|
|
|
runs-on: windows-2022
|
|
|
|
needs: [inputs, sentry, loadup, linux_installer]
|
|
if: |
|
|
needs.sentry.outputs.release_not_built == 'true'
|
|
|| needs.inputs.outputs.force == 'true'
|
|
|
|
outputs:
|
|
cygwin_installer: ${{ steps.compile_iss.outputs.CYGWIN_INSTALLER }}
|
|
|
|
steps:
|
|
|
|
# Checkout latest commit
|
|
- name: Checkout Medley
|
|
uses: actions/checkout@v3
|
|
|
|
# Store the values output from loadup job as environment variables
|
|
- name: Environment Variables
|
|
shell: powershell
|
|
run: |
|
|
$crt="${{ needs.loadup.outputs.combined_release_tag }}"
|
|
echo "COMBINED_RELEASE_TAG=$crt" | 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 }}"
|
|
echo "MEDLEY_SHORT_RELEASE_TAG=$msrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
$aft="${{ needs.loadup.outputs.artifacts_filename_template }}"
|
|
echo "ARTIFACTS_FILENAME_TEMPLATE=$aft" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
$debs="${{ needs.loadup.outputs.debs_filename_base }}"
|
|
echo "DEBS_FILENAME_BASE=$debs" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
|
|
# Retrieve medley tars from artifact store
|
|
- name: Retrieve medley tar
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: medley-tar
|
|
path: installers/cygwin/
|
|
|
|
# Download maiko cygwin build
|
|
- name: Retrieve maiko cygwin build
|
|
shell: powershell
|
|
env:
|
|
GH_TOKEN: ${{ secrets.MAIKO_TOKEN }}
|
|
run: |
|
|
gh release download ${{ needs.loadup.outputs.maiko_release_tag }} --repo interlisp/maiko --pattern ${{ needs.loadup.outputs.maiko_release_tag }}-cygwin.x86_64.tgz --output installers\cygwin\maiko-cygwin.x86_64.tgz
|
|
|
|
# Download cygwin installer to be included by medley.iss
|
|
- name: Download cygwin installer
|
|
id: cygwin
|
|
shell: powershell
|
|
run: |
|
|
wget https://cygwin.com/setup-x86_64.exe -OutFile installers\cygwin\setup-x86_64.exe
|
|
|
|
# Download vnc viewer
|
|
#- name: Download vncviewer
|
|
# shell: powershell
|
|
# run: |
|
|
# $url = "https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/vncviewer64-1.12.0.exe"
|
|
# $output = "installers\win\vncviewer64-1.12.0.exe"
|
|
# (New-Object System.Net.WebClient).DownloadFile($url, $output)
|
|
|
|
# Run iscc.exe to compile the installer
|
|
#- name: Compile medley.iss
|
|
# shell: powershell
|
|
# run: |
|
|
# iscc installers\win\medley.iss
|
|
# $filename="medley-install_${env:COMBINED_RELEASE_TAG}_x64.exe"
|
|
# echo "INSTALLER_FILENAME=$filename" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
|
|
# Run iscc.exe to compile the installer
|
|
- name: Compile cygwin_medley.iss
|
|
id: compile_iss
|
|
shell: powershell
|
|
run: |
|
|
$Env:CYGWIN_INSTALLER_BASE="medley-full-cygwin-x86_64-${env:COMBINED_RELEASE_TAG}"
|
|
$CYGWIN_INSTALLER="${Env:CYGWIN_INSTALLER_BASE}.exe"
|
|
echo "CYGWIN_INSTALLER=$CYGWIN_INSTALLER" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
echo "CYGWIN_INSTALLER=$CYGWIN_INSTALLER" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
|
|
iscc installers\cygwin\medley.iss
|
|
|
|
# Upload windows installer to release
|
|
- name: Upload windows installer to release
|
|
id: push
|
|
uses: ncipollo/release-action@v1
|
|
with:
|
|
allowUpdates: true
|
|
artifacts: installers/cygwin/${{ env.CYGWIN_INSTALLER }}
|
|
tag: ${{ env.MEDLEY_RELEASE_TAG }}
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
omitBodyDuringUpdate: true
|
|
omitDraftDuringUpdate: true
|
|
omitNameDuringUpdate: true
|
|
omitPrereleaseDuringUpdate: true
|
|
|
|
|
|
# JOB: downloads_page ################################################################
|
|
|
|
#
|
|
# Update the downloads page on OIO
|
|
#
|
|
|
|
downloads_page:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [inputs, sentry, loadup, linux_installer, macos_installer, cygwin_installer]
|
|
if: |
|
|
needs.sentry.outputs.release_not_built == 'true'
|
|
|| needs.inputs.outputs.force == 'true'
|
|
|
|
steps:
|
|
|
|
# Environment variables
|
|
- name: Environment Varibales (from other jobs)
|
|
run: |
|
|
crt="${{ needs.loadup.outputs.combined_release_tag }}"
|
|
echo "COMBINED_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 }}"
|
|
echo "MEDLEY_SHORT_RELEASE_TAG=${msrt}" >>${GITHUB_ENV}
|
|
cyginst="${{ needs.cygwin_installer.outputs.cygwin_installer }}"
|
|
echo "CYGWIN_INSTALLER=${cyginst}" >>${GITHUB_ENV}
|
|
|
|
# Checkout latest commit
|
|
- name: Checkout Medley
|
|
uses: actions/checkout@v3
|
|
|
|
|
|
# Upload a dummy file to release
|
|
# Needed since download url of the release changes on every update
|
|
# So this will be the final update before creating downloads page
|
|
# and we can use its url for the page
|
|
- run: echo "placeholder" >placeholder.txt
|
|
- name: Upload windows placeholder.txt to release
|
|
id: pushph
|
|
uses: ncipollo/release-action@v1
|
|
with:
|
|
allowUpdates: true
|
|
artifacts: placeholder.txt
|
|
tag: ${{ env.MEDLEY_RELEASE_TAG }}
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
omitBodyDuringUpdate: true
|
|
omitDraftDuringUpdate: true
|
|
omitNameDuringUpdate: true
|
|
omitPrereleaseDuringUpdate: true
|
|
|
|
# Update the downloads page and the man page on OIO
|
|
- name: Update the downloads page and the man page to the OIO static page host
|
|
shell: bash
|
|
run: |
|
|
# Figure out filenames
|
|
download_url="${{ steps.pushph.outputs.html_url }}"
|
|
download_url="${download_url/\/tag\//\/download\/}"
|
|
local_template="installers/downloads_page/medley_downloads.html"
|
|
local_filename="medley_downloads.html"
|
|
local_manpath="docs/man-page/man_medley.html"
|
|
if [ "${{ needs.inputs.outputs.draft }}" = "true" ];
|
|
then
|
|
remote_filename="draft_downloads"
|
|
remote_manname="man_draft.html"
|
|
else
|
|
remote_filename="${local_filename%.html}"
|
|
remote_manname="man_medley.html"
|
|
fi
|
|
remote_filepath="/srv/oio/static/${remote_filename}"
|
|
remote_manpath="/srv/oio/static/${remote_manname}"
|
|
# Fill in downloads page template
|
|
sed \
|
|
-e "s/@@@MEDLEY.SHORT.RELEASE.TAG@@@/${MEDLEY_SHORT_RELEASE_TAG}/g" \
|
|
-e "s/@@@COMBINED.RELEASE.TAG@@@/${COMBINED_RELEASE_TAG}/g" \
|
|
-e "s~@@@DOWNLOAD_URL@@@~${download_url}~g" \
|
|
-e "s~@@@CYGWIN.INSTALLER@@@~${CYGWIN_INSTALLER}~g" \
|
|
< "${local_template}" > "${local_filename}"
|
|
# Create sftp instruction file
|
|
echo "-rm ${remote_filepath}.oldold" > batch
|
|
echo "-rename ${remote_filepath}.old ${remote_filepath}.oldold" >> batch
|
|
echo "-rename ${remote_filepath}.html ${remote_filepath}.old" >> batch
|
|
echo "-put ${local_filename} ${remote_filepath}.html" >> batch
|
|
echo "-put ${local_manpath} ${remote_manpath}" >> batch
|
|
# Do the sftp
|
|
eval $(ssh-agent)
|
|
ssh-add - <<< "${SSH_KEY}"
|
|
sftp -o StrictHostKeyChecking=no -b batch ubuntu@online.interlisp.org
|
|
env:
|
|
SSH_KEY: ${{ secrets.OIO_SSH_KEY }}
|
|
|
|
# Remove placeholder.txt
|
|
- name: Remove placeholder.txt
|
|
run: |
|
|
gh release delete-asset ${{ env.MEDLEY_RELEASE_TAG }} placeholder.txt --yes
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
|
|
# JOB: complete #####################################################################
|
|
|
|
# Use set-sentry-action to determine set the sentry that says this release has
|
|
# been successfully built
|
|
|
|
complete:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
outputs:
|
|
build_successful: ${{ steps.output.outputs.build_successful }}
|
|
|
|
needs: [inputs, sentry, loadup, downloads_page]
|
|
|
|
steps:
|
|
# Delete the tarballs artifact
|
|
- name: Delete tarballs artifact
|
|
uses: geekyeggo/delete-artifact@v2
|
|
with:
|
|
name: tarballs
|
|
failOnError: false
|
|
|
|
# Checkout the actions for this repo owner
|
|
- name: Checkout Actions
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: ${{ github.repository_owner }}/.github
|
|
path: ./Actions_${{ github.sha }}
|
|
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
|
|
|
# Set sentry
|
|
- name: Set flag that build for this commit has been completed
|
|
id: set
|
|
uses: ./../actions/set-sentry-action
|
|
with:
|
|
tag: "loadup"
|
|
|
|
- name: Output
|
|
id: output
|
|
run: |
|
|
echo "build_successful='true'" >> $GITHUB_OUTPUT
|
|
|
|
######################################################################################
|
|
######################################################################################
|