Skip to content

improvements

improvements #10

on:
workflow_call:
inputs:
package_name:
description: 'Name of package, e.g. "alphadia", "peptdeep", ..'
required: true
type: string
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). Note that the version needs to be bumped already.'
type: string
required: true
# optional switches
build_nodejs_ui:
description: 'Whether or not a nodejs UI needs to be built'
default: false
type: boolean
test_backend:
description: 'Whether or not the backend should be tested'
default: false
type: boolean
python_version:
description: "Python version to be used"
default: "3.9" # TODO change to 3.11
type: string
name: Create Draft Release
jobs:
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 }}
- name: Check release tag
id: check_release_tag
shell: bash -le {0}
run: |
CURRENT_VERSION=$(grep "__version__" ${{ inputs.package_name }}/__init__.py | cut -f3 -d ' ' | sed 's/"//g')
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 }}
fi
echo "new_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
# exit 1 #TODO add again
- 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 # this can be overwritten during the course of the job
EAGER_IMPORT: true
ARTIFACT_NAME: na # will be set downstream
GH_TOKEN: ${{ github.token }}
strategy:
matrix:
runner:
- macos-latest-xlarge # this is ARM
- macos-13 # this is not ARM
runs-on: ${{matrix.runner}}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_to_release }}
- name: Check if OS supported
if: ${{ always() && hashFiles('release/macos/*') == '' }}
run: |
gh run cancel ${{ github.run_id }}
gh run watch ${{ github.run_id }}
- name: Install conda
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
auto-update-conda: true
activate-environment: alphax_release
python-version: "${{ inputs.python_version }}"
- name: Conda info
shell: bash -el {0}
run: |
conda info
- name: Install pyinstaller 6.10.0
shell: bash -el {0}
run: |
pip install pyinstaller==6.10.0
pip freeze
- name: Build backend
shell: bash -el {0}
run: |
release/macos/build_backend_macos.sh
pip freeze
ls *
ls dist/*
- name: Test backend
if: ${{ inputs.test_backend }}
shell: bash -el {0}
run: |
EXECUTABLE=dist/${{ inputs.package_name }}/${{ inputs.package_name }}
echo testing ${EXECUTABLE} ..
eval ${EXECUTABLE} --version
# Build GUI
- name: Setup Node.js
if: ${{ inputs.build_nodejs_ui }}
uses: actions/setup-node@v4
- name: Build Node.js GUI
if: ${{ inputs.build_nodejs_ui }}
run: |
release/macos/build_gui_macos.sh
ls *
# combine backend and GUI
- name: Build installer
shell: bash -el {0}
run: |
release/macos/build_pkg_macos.sh
ls *
ls dist/*
ARTIFACT_NAME=${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-darwin-${{ env.ARCH }}.pkg
- name: Test installer
id: test_installer
shell: bash -l {0}
run: |
sudo installer -pkg dist/${{env.ARTIFACT_NAME}} -target /
exit 0
- name: Upload installer
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/${{env.ARTIFACT_NAME}}
asset_name: ${{env.ARTIFACT_NAME}}
asset_content_type: application/zip
# Fallback upload to be able to manually debug the artifact
- name: Upload installer as job asset
if: ${{ failure() && steps.test_installer.conclusion == 'failure' }}
uses: actions/upload-artifact@v4
with:
name: ${{env.ARTIFACT_NAME}}
path: dist/${{env.ARTIFACT_NAME}}
if-no-files-found: error
Create_Linux_Installer:
needs: [ Create_Draft_Release, Get_New_Version ]
env:
ARCH: x64 # this can be overwritten during the course of the job
GH_TOKEN: ${{ github.token }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_to_release }}
- name: Check if OS supported
if: ${{ always() && hashFiles('release/linux/*') == '' }}
run: |
gh run cancel ${{ github.run_id }}
gh run watch ${{ github.run_id }}
- name: Install conda
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
auto-update-conda: true
activate-environment: alphax_release
python-version: "${{ inputs.python_version }}"
- name: Conda info
shell: bash -el {0}
run: |
conda info
- name: Install pyinstaller 6.10.0
shell: bash -el {0}
run: |
pip install pyinstaller==6.10.0
pip freeze
- name: Build backend
shell: bash -l {0}
run: |
release/linux/build_backend_linux.sh
pip freeze
ls *
ls dist/*
- name: Test backend
if: ${{ inputs.test_backend }}
shell: bash -el {0}
run: |
EXECUTABLE=dist/${{ inputs.package_name }}/${{ inputs.package_name }}
echo testing ${EXECUTABLE} ..
eval ${EXECUTABLE} --version
# TODO: building node.js GUI not supported yet for linux
- name: Build Installer
shell: bash -l {0}
run: |
release/linux/build_installer_linux.sh
ls *
ls dist/*
- name: Test installer
shell: bash -l {0}
run: |
sudo dpkg -i dist/${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-linux-${{ env.ARCH }}.deb
- name: Upload installer
id: upload-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 }}-linux-${{ env.ARCH }}.deb
asset_name: ${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-linux-${{ env.ARCH }}.deb
asset_content_type: application/zip
Create_Not_Supported_Installer: # TODO remove again
needs: [Create_Draft_Release, Get_New_Version]
env:
ARCH: x64 # this can be overwritten during the course of the job
GH_TOKEN: ${{ github.token }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_to_release }}
- name: Check if OS supported
if: ${{ always() && hashFiles('release/sdfdssf/*') == '' }}
run: |
gh run cancel ${{ github.run_id }}
gh run watch ${{ github.run_id }}
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_to_release }}
Create_Windows_Installer:
needs: [Create_Draft_Release, Get_New_Version]
env:

Check failure on line 297 in .github/workflows/create_release.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/create_release.yml

Invalid workflow file

You have an error in your yaml syntax on line 297
ARCH: x64 # this can be overwritten during the course of the job
GH_TOKEN: ${{ github.token }}
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit_to_release }}
- name: Check if OS supported
if: ${{ always() && hashFiles('release/windows/*') == '' }}
run: |
gh run cancel ${{ github.run_id }}
gh run watch ${{ github.run_id }}
- name: Install conda
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
auto-update-conda: true
activate-environment: alphax_release
python-version: "${{ inputs.python_version }}"
- name: Conda info
shell: bash -el {0}
run: |
conda info
- name: Install pyinstaller 6.10.0
shell: bash -el {0}
run: |
pip install pyinstaller==6.10.0
pip freeze
- name: Build backend
shell: powershell
run: |
release/windows/build_backend.ps1
pip freeze
ls *
ls dist/*
- name: Test Backend
if: ${{ inputs.test_backend }}
shell: powershell
run: |
dist\${{ inputs.package_name }}\${{ inputs.package_name }}.exe --version
# Build GUI
- name: Setup Node.js
if: ${{ inputs.build_nodejs_ui }}
uses: actions/setup-node@v4
- name: Build Node.js GUI
if: ${{ inputs.build_nodejs_ui }}
shell: powershell
run: |
release/windows/build_gui.ps1
# combine backend and GUI
- name: Check if Innosetup is installed
if: ${{ inputs.build_nodejs_ui }}
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
}
- name: Build Installer
shell: powershell
run: |
release/windows/build_installer.ps1
ls *
ls dist/*
- name: Test installer
shell: bash -l {0}
run: |
release/windows/dist/${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-win-${{ env.ARCH }}.exe //verysilent //SUPPRESSMSGBOXES //log=log.txt //noicons //tasks= //portable=1
cat log.txt
- name: Upload installer
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.Create_Draft_Release.outputs.upload_url }}
asset_path: release/windows/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