Skip to content

Fix merging issues

Fix merging issues #10

name: Build executable for Windows
on:
push:
branches: [ "main" , "TaggerViewerDeploy"]
pull_request:
branches: [ "main" , "TaggerViewerDeploy"]
jobs:
build-vue-js-component:
runs-on: ubuntu-latest
steps:
# Step to set up Node.js environment
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '21'
# Step to clone the Vue.js repository
- name: Checkout Vue.js repository
uses: actions/checkout@v4
with:
repository: 't0mdavid-m/openms-streamlit-vue-component'
ref: 'TaggerViewer'
path: 'openms-streamlit-vue-component'
- name: Install and build Vue.js component
run: |
cd openms-streamlit-vue-component
npm install
npm run build
- name: Upload dist as artifact
uses: actions/upload-artifact@v4
with:
name: vue-js-dist
path: openms-streamlit-vue-component/dist
build-openms:
runs-on: windows-latest
env:
OPENMS_VERSION: 3.0.0
steps:
- name: Checkout
uses: actions/checkout@v3
with:
repository: t0mdavid-m/OpenMS
ref: TaggerViewerDeployment
path: 'OpenMS'
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: '5.15.2' # 5.12.7 is broken https://bugreports.qt.io/browse/QTBUG-81715, > 5.15.2 is not available on official archives (https://github.com/miurahr/aqtinstall/issues/636)
host: 'windows' # default: win64_msvc2017_64
target: 'desktop'
install-deps: 'true'
cache: 'false'
aqtversion: '==3.1.*'
# https://github.com/marketplace/actions/visual-studio-shell
- name: Set up Visual Studio shell
uses: egor-tensin/vs-shell@v2
with:
arch: x64
- name: Setup build tools
shell: bash
run: |
choco install ccache ninja cmake
## GH CLI "SHOULD BE" installed. Sometimes I had to manually install nonetheless. Super weird.
# https://github.com/actions/runner-images/blob/main/images/win/scripts/Installers/Install-GitHub-CLI.ps1
echo "C:/Program Files (x86)/GitHub CLI" >> $GITHUB_PATH
- name: Extract branch/PR infos
shell: bash
run: |
cd OpenMS
RUN_NAME_LOCAL=$(echo ${GITHUB_REF#refs/heads/} | tr / -)
echo "RUN_NAME=${RUN_NAME_LOCAL}" >> $GITHUB_ENV
echo "BASE_REF=$(gh pr view --json baseRefName -q .baseRefName || echo ${RUN_NAME_LOCAL})" >> $GITHUB_ENV
id: extract_branch
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Cache contrib
id: cache-contrib-win
uses: actions/cache@v3
with:
path: ${{ github.workspace }}/OpenMS/contrib
key: ${{ runner.os }}-contrib3
- name: Load contrib build
if: steps.cache-contrib-win.outputs.cache-hit != 'true'
run: |
cd OpenMS/contrib
curl -o contribbld.tar.gz https://abibuilder.cs.uni-tuebingen.de/archive/openms/contrib/windows/x64/msvc-14.2/contrib_build.tar.gz
tar -xzf contribbld.tar.gz
rm contribbld.tar.gz
- name: Setup ccache cache
uses: actions/cache@v3
with:
path: .ccache
key: ${{ runner.os }}-ccache-${{ env.RUN_NAME }}-${{ github.run_number }}
# Restoring: From current branch, otherwise from base branch, otherwise from any branch.
restore-keys: |
${{ runner.os }}-ccache-${{ env.RUN_NAME }}
${{ runner.os }}-ccache-${{ env.BASE_REF }}
${{ runner.os }}-ccache-
- name: Add THIRDPARTY
shell: bash
run: |
# initialize THIRDPARTY
cd OpenMS
git submodule update --init THIRDPARTY
cd ..
# add third-party binaries to PATH
# use flat THIRDPARTY structure
mkdir -p _thirdparty
cp -R OpenMS/THIRDPARTY/Windows/64bit/* _thirdparty/
cp -R OpenMS/THIRDPARTY/All/* _thirdparty/
# add third-party binaries to PATH
for thirdpartytool in ${{ github.workspace }}/_thirdparty/*
do
echo $thirdpartytool >> $GITHUB_PATH
done
- name: Build Windows
shell: bash
run: |
mkdir $GITHUB_WORKSPACE/OpenMS/bld/
ctest --output-on-failure -V -S $GITHUB_WORKSPACE/OpenMS/tools/ci/cibuild.cmake
env:
#OS_PREFIX_PATH: "${{ env.Qt5_DIR }}/lib/cmake;${{ env.Qt5_DIR }}"
OPENMS_CONTRIB_LIBS: "${{ github.workspace }}/OpenMS/contrib"
CI_PROVIDER: "GitHub-Actions"
CMAKE_GENERATOR: "Ninja"
SOURCE_DIRECTORY: "${{ github.workspace }}/OpenMS"
BUILD_NAME: "${{ env.RUN_NAME }}-Win64-class-topp-${{ github.run_number }}"
ENABLE_STYLE_TESTING: "OFF"
ENABLE_TOPP_TESTING: "ON"
ENABLE_CLASS_TESTING: "ON"
WITH_GUI: "ON"
ADDRESS_SANITIZER: "Off"
BUILD_TYPE: "Release"
OPENMP: "Off"
USE_STATIC_BOOST: "On"
# BUILD_FLAGS: "-p:CL_MPCount=2" # For VS Generator and MSBuild
BUILD_FLAGS: "-j2" # Ninja will otherwise use all cores (doesn't go well in GHA)
CMAKE_CCACHE_EXE: "ccache"
CCACHE_BASEDIR: ${{ github.workspace }}
CCACHE_DIR: ${{ github.workspace }}/.ccache
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 12
CCACHE_MAXSIZE: 400M
Eigen3_DIR: "${{ steps.tools-prefix.outputs.eigen_choco }}"
- name: Test Windows
shell: bash
run: $LAUNCHER ctest --output-on-failure -V -S $GITHUB_WORKSPACE/OpenMS/tools/ci/citest.cmake
env:
LAUNCHER: ""
SOURCE_DIRECTORY: "${{ github.workspace }}/OpenMS"
CI_PROVIDER: "GitHub-Actions"
BUILD_NAME: "${{ env.RUN_NAME }}-Win64-class-topp-${{ github.run_number }}"
- name: Upload TOPP tools as artifact
uses: actions/upload-artifact@v3
with:
name: OpenMS-bin
path: OpenMS/bld/bin
- name: Upload share as artifact
uses: actions/upload-artifact@v3
with:
name: OpenMS-share
path: OpenMS/share
build-executable:
runs-on: windows-latest
needs: [build-openms, build-vue-js-component]
env:
PYTHON_VERSION: 3.11.0
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download vue js as artifact
uses: actions/download-artifact@v4
with:
name: vue-js-dist
path: js-dist
- name: Download TOPP tools as artifact
uses: actions/download-artifact@v3
with:
name: OpenMS-bin
path: openms-bin
- name: Download share as artifact
uses: actions/download-artifact@v3
with:
name: OpenMS-share
path: share
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Setup virtual environment
shell: cmd
run: |
python -m venv myenv
call myenv\Scripts\activate.bat
pip install -r requirements.txt
pip install pyinstaller
- name: Write function to cli.py
shell: bash
run: |
echo "{ls {D:/a/FlashViewer/FlashViewer/myenv/Lib/site-packages/streamlit/web/}}"
head -n -2 D:/a/FlashViewer/FlashViewer/myenv/Lib/site-packages/streamlit/web/cli.py > temp_cli.py
cat << EOF >> temp_cli.py
def _main_run_clExplicit(file, command_line, args=[], flag_options=[]):
main._is_running_with_streamlit = True
bootstrap.run(file, command_line, args, flag_options)
if __name__ == "__main__":
main()
EOF
mv temp_cli.py D:/a/FlashViewer/FlashViewer/myenv/Lib/site-packages/streamlit/web/cli.py
- name: Compile app with pyinstaller
shell: cmd
run: |
call myenv\Scripts\activate.bat
pyinstaller --onefile --additional-hooks-dir ./hooks run_app.py --clean
- name: Copy everything to dist directory
run: |
cp -r .streamlit dist/.streamlit
cp -r pages dist/pages
cp -r src dist/src
cp -r assets dist/assets
cp -r example-data dist/example-data
cp -r openms-bin/*.dll dist/
cp -r openms-bin/FLASHDeconv.exe dist/
cp -r openms-bin/FLASHTagger.exe dist/
cp -r openms-bin/DecoyDatabase.exe dist/
cp -r share dist/share
cp -r js-dist dist/js-component/dist
cp example_database.fasta dist/
cp example_spectrum_1.mzML dist/
cp example_spectrum_2.mzML dist/
cp app.py dist/
- name: Patch WorkflowManager.py for windows
run: |
cp dist/src/workflow/WorkflowManagerWindows.py dist/src/workflow/WorkflowManager.py
- name: Modify .spec file
shell: bash
run: |
cp run_app_temp.spec run_app.spec
- name: Make executable
shell: cmd
run: |
call myenv\Scripts\activate.bat
pyinstaller run_app.spec --clean
- name: Delete OpenMS bin artifact
uses: geekyeggo/delete-artifact@v2
with:
name: OpenMS-bin
- name: Delete OpenMS share artifact
uses: geekyeggo/delete-artifact@v2
with:
name: OpenMS-share
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: OpenMS-App
path: dist