Skip to content
on:
workflow_call:
inputs:
package_name:
description: 'Name of package, e.g. "alphadia"'
required: true
type: string
build_nodejs_ui:
description: 'Whether or not an UI needs to be built'
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
test_backend:
description: 'Whether or not the backend should be tested'
default: false
type: boolean
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/tag-exists-action@v1.6.0
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: alphax_release
python-version: "3.11" # TODO
- name: Print architecture
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
ls *
- 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 GUI
if: ${{ inputs.build_nodejs_ui }}
run: |
release/macos/build_gui_macos.sh
ls *
# combine backend and GUI
- name: Build package
shell: bash -el {0}
run: |
release/macos/build_pkg_macos.sh
ls *
- name: Test installer
shell: bash -l {0}
run: |
sudo installer -pkg dist/${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-darwin-${{ env.ARCH }}.pkg -target /
- 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 }}
# ALPHADIA
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
ls *
- 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 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
}
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

Check failure on line 226 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 226
- 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
- name: Build Backend
shell: bash -l {0} # TODO 'CPU' parameter
run: |
release/linux/build_backend_linux.sh CPU
- name: Build Installer
shell: bash -l {0}
run: |
release/linux/build_installer_linux.sh
- name: Test installer for Linux
continue-on-error: true # TODO remove
shell: bash -l {0}
run: |
sudo dpkg -i dist/${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-darwin-${{ env.ARCH }}.deb
- name: Upload Linux 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 }}-darwin-${{ env.ARCH }}.deb
asset_name: ${{ inputs.package_name }}-${{ needs.Get_New_Version.outputs.new_version }}-darwin-${{ env.ARCH }}.deb
asset_content_type: application/zip
# upload_url: ${{ needs.Create_Draft_On_GitHub.outputs.upload_url }}
# asset_path: release/one_click_linux_gui/dist/peptdeep_gui_installer_linux.deb
# asset_name: peptdeep_gui_installer_linux.deb
# asset_content_type: application/octet-stream
#