Skip to content

Create Release

Create Release #1

Workflow file for this run

on:
workflow_dispatch: # TODO change to workflow_call
inputs:
package_name:
description: 'Name of package, e.g. "alphadia"'
required: true
type: string
build_ui:
description: 'Whether or not an UI needs to be built'
required: true
default: false
type: boolean
commit_to_release:
description: 'Enter commit hash to release (example: ef4037cb571f99cb4919b520fde7174972aae473)'
type: string
required: true
tag_to_release:
description: 'Enter tag to release (example: v1.5.5)'
type: string
required: true
name: Create Draft Release
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: A job to say hello
steps:
- uses: actions/checkout@v4
- id: foo
uses: actions/alphashared/hello_world@v1
with:
who-to-greet: 'Mona the Octocat'
- run: echo random-number "$RANDOM_NUMBER"
shell: bash
env:
RANDOM_NUMBER: ${{ steps.foo.outputs.random-number }}
Get_New_Version:
runs-on: ubuntu-latest
outputs:
new_version: ${{ steps.check_release_tag.outputs.new_version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_to_release }}
# TODO make this a custom action
# - name: Check release tag
# id: check_release_tag
# shell: bash -le {0}
# run: |
# CURRENT_VERSION=$(./misc/get_current_version.sh)
# if [ "v${CURRENT_VERSION}" != "${{ inputs.tag_to_release }}" ]; then
# echo Code version "v${CURRENT_VERSION}" does not match the tag to release ${{ inputs.tag_to_release }}
# exit 1
# fi
# echo "new_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
- uses: mukunku/[email protected]
id: check-tag
with:
tag: ${{ inputs.tag_to_release }}
- name: Check if tag already exists
run: |
echo "Tag already exists!"
exit 1
if: steps.check-tag.outputs.exists == 'true'
Create_Draft_Release:
runs-on: ubuntu-latest
needs: Get_New_Version
outputs:
upload_url: ${{ steps.draft_release.outputs.upload_url }}
steps:
- name: Draft Release
id: draft_release
# TODO this action is deprecated, replace with https://github.com/ncipollo/release-action
# cf. https://github.com/actions/create-release/issues/119#issuecomment-783010321
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ inputs.tag_to_release }}
release_name: ${{ inputs.tag_to_release }}
draft: true
prerelease: false
Create_MacOS_Installer:
needs: [Create_Draft_Release, Get_New_Version]
env:
ARCH: x64
EAGER_IMPORT: true
runs-on: macos-latest-xlarge
steps:
- name : Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_to_release }}
# Build backend
- name: Install conda
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
auto-update-conda: true
activate-environment: alpha
python-version: "3.11"
- name: Check arm64
shell: bash -el {0}
run: |
python -c "import platform; print(platform.machine())"
- name: Build backend
shell: bash -el {0}
run: |
release/macos/build_backend_macos.sh
- name: Test backend
shell: bash -el {0}
run: |
dist/${{ inputs.package_name }}/${{ inputs.package_name }} --version
# Build GUI
- name: Setup Node.js
if: ${{ inputs.build_ui }}
uses: actions/setup-node@v4
- name: Build GUI
if: ${{ inputs.build_ui }}
run: |
release/macos/build_gui_macos.sh
# combine backend and GUI
- name: Build package
shell: bash -el {0}
run: |
release/macos/build_pkg_macos.sh
- name: List output files
run: |
ls dist
# Upload the package
- name: Upload a Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.Create_Draft_Release.outputs.upload_url }}
asset_path: dist/${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-darwin-${{ env.ARCH }}.pkg
asset_name: ${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-darwin-${{ env.ARCH }}.pkg
asset_content_type: application/zip
Create_Windows_Installer:
needs: [Create_Draft_Release, Get_New_Version]
env:
ARCH: x64
runs-on: windows-latest
steps:
- name : Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_to_release }}
# Build backend
- name: Install conda
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
auto-update-conda: true
activate-environment: alpha
python-version: "3.11"
- name: Build Backend
shell: powershell
run: |
release/windows/build_backend.ps1
- name: Test Backend
shell: powershell
run: |
dist\${{ inputs.package_name }}\${{ inputs.package_name }}.exe --version
# Build GUI
- name: Setup Node.js
if: ${{ inputs.build_ui }}
uses: actions/setup-node@v4
- name: Build GUI
if: ${{ inputs.build_ui }}
shell: powershell
run: |
release/windows/build_gui.ps1
# combine backend and GUI
# - name: Check if Innosetup is installed
# TODO optional
# shell: powershell
# run: |
# if (-not (Test-Path "C:\Program Files (x86)\Inno Setup 6\ISCC.exe")) {
# Write-Host "Inno Setup is not installed"
# exit 1
# }
# else {
# Write-Host "Inno Setup is installed"
# }
- name: Build Installer
shell: powershell
run: |
release/windows/build_installer.ps1
- name: List output files
run: |
ls dist
- name: Upload a Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.Create_Draft_Release.outputs.upload_url }}
asset_path: dist/${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-win-${{ env.ARCH }}.exe
asset_name: ${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-win-${{ env.ARCH }}.exe
asset_content_type: application/zip