diff --git a/.github/workflows/github_draft_release.yml b/.github/workflows/github_draft_release.yml new file mode 100644 index 0000000..14a1838 --- /dev/null +++ b/.github/workflows/github_draft_release.yml @@ -0,0 +1,114 @@ +name: Create GitHub Draft Releases + +on: + workflow_dispatch: + +jobs: + Current_Version: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.master_Current_Version.outputs.version }} + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Get current version + id: master_Current_Version + run: | + current_version=$(grep "__version__" alphamap/__init__.py | cut -f3 -d ' ' | sed 's/"//g') + echo "version=$current_version" >> $GITHUB_OUTPUT + + Create_Draft_On_GitHub: + runs-on: ubuntu-latest + needs: Current_Version + outputs: + upload_url: ${{ steps.draft_release.outputs.upload_url }} + steps: + - name: Create Draft Release + id: draft_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: v${{ needs.Current_Version.outputs.version }} + release_name: Release version ${{ needs.Current_Version.outputs.version }} + draft: true + prerelease: false + - name: Move release to hidden folder + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + release_id=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ + "https://api.github.com/repos/${{ github.repository }}/releases/tags/v${{ needs.Current_Version.outputs.version }}" \ + | jq -r .id) + curl -X PATCH -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github.v3+json" \ + "https://api.github.com/repos/${{ github.repository }}/releases/$release_id" \ + -d '{"draft": true, "name": ".hidden/v${{ needs.Current_Version.outputs.version }}"}' + Create_MacOS_Release: + runs-on: macos-latest + needs: Create_Draft_On_GitHub + steps: + - name: Checkout code + uses: actions/checkout@v2 + - uses: conda-incubator/setup-miniconda@v2 + with: + auto-update-conda: true + python-version: ${{ matrix.python-version }} + miniconda-version: "latest" + - name: Conda info + shell: bash -l {0} + run: conda info + - name: Creating installer for MacOS + shell: bash -l {0} + run: | + cd misc/one_click_macos + . ./create_installer_macos.sh + - name: Test installer for MacOS + shell: bash -l {0} + run: | + sudo installer -pkg misc/one_click_macos/dist/alphamap_gui_installer_macos.pkg -target / + - name: Upload MacOS Installer + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.Create_Draft_On_GitHub.outputs.upload_url }} + asset_path: misc/one_click_macos/dist/alphamap_gui_installer_macos.pkg + asset_name: alphamap_gui_installer_macos.pkg + asset_content_type: application/octet-stream + Create_Windows_Release: + runs-on: windows-latest + needs: Create_Draft_On_GitHub + steps: + - name: Checkout code + uses: actions/checkout@v2 + - uses: conda-incubator/setup-miniconda@v2 + with: + auto-update-conda: true + python-version: ${{ matrix.python-version }} + - name: Conda info + shell: bash -l {0} + run: conda info + - name: Creating installer for Windows + shell: bash -l {0} + run: | + cd misc/one_click_windows + . ./create_installer_windows.sh + - name: Test installer for Windows + shell: bash -l {0} + run: | + cd misc/one_click_windows/dist/ + echo "TODO, this test seems to freeze the runner..." + # ./alphamap_gui_installer_windows.exe //verysilent //log=log.txt //noicons //tasks= //portable=1 + # cat log.txt + - name: Upload Windows Installer + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.Create_Draft_On_GitHub.outputs.upload_url }} + asset_path: misc/one_click_windows/dist/alphamap_installer_windows.exe + asset_name: alphamap_installer_windows.exe + asset_content_type: application/octet-stream \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index f7cbcdc..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: CI -on: - push: - branches: [ master ] - pull_request: - branches: [ master, develop ] - workflow_dispatch: -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - uses: actions/setup-python@v1 - with: - python-version: '3.8' - architecture: 'x64' - - name: Install the library - run: | - pip install nbdev==1.2.5 jupyter - pip install -e . - - name: Read all notebooks - run: | - nbdev_read_nbs - - name: Check if all notebooks are cleaned - run: | - echo "Check we are starting with clean git checkout" - if [ -n "$(git status -uno -s)" ]; then echo "git status is not clean"; false; fi - echo "Trying to strip out notebooks" - nbdev_clean_nbs - echo "Check that strip out was unnecessary" - git status -s # display the status to see which nbs need cleaning up - if [ -n "$(git status -uno -s)" ]; then echo -e "!!! Detected unstripped out notebooks\n!!!Remember to run nbdev_install_git_hooks"; false; fi - - name: Check if there is no diff library/notebooks - run: | - if [ -n "$(nbdev_diff_nbs)" ]; then echo -e "!!! Detected difference between the notebooks and the library"; false; fi - - name: Run notebook tests - run: | - nbdev_test_nbs - - name: Run system test - run: | - mv testdata nbs/testdata - nbdev_test_nbs --fname Workflow.ipynb diff --git a/README.md b/README.md index 69b1778..2aff888 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,11 @@ The GUI of AlphaMap is a completely stand-alone tool that requires no knowledge AlphaMap can be installed in an existing Python 3.8 environment with a single `bash` command. *This `bash` command can also be run directly from within a Jupyter notebook by prepending it with a `!`*. +```bash +pip install alphamap[stable] +``` +The [stable] tag ensures you get the latest stable release with fixed dependencies. However, it can be omitted if you prefer more flexible dependency versions: + ```bash pip install alphamap ``` @@ -44,7 +49,7 @@ pip install alphamap When a new version of AlphaMap becomes available, the old version can easily be upgraded by running e.g. the command again with an additional `--upgrade` flag: ```bash -pip install alphamap --upgrade +pip install --upgrade alphamap[stable] ``` NOTE: When installing with `pip`, UniProt information is not included. Upon first usage of a specific Organism, its information will be automatically downloaded from UniProt. @@ -71,11 +76,13 @@ For any Python package, it is highly recommended to use a [conda virtual environ ```bash conda create -n alphamap python=3.8 -y conda activate alphamap -pip install -e . +pip install -e ".[stable]" ``` * By using the editable flag `-e`, all modifications to the AlphaMap [source code folder](alphamap) are directly reflected when running AlphaMap. Note that the AlphaMap folder cannot be moved and/or renamed if an editable version is installed. +* The [stable] tag ensures you get the latest stable release with fixed dependencies. However, it can be omitted if you prefer more flexible dependency versions. + * When using Jupyter notebooks and multiple conda environments direcly from the terminal, it is recommended to `conda install nb_conda_kernels` in the conda base environment. Hereafter, running a `jupyter notebook` from the conda base environment should have a `python [conda env: alphamap]` kernel available, in addition to all other conda kernels in which the command `conda install ipykernel` was run. diff --git a/Workflow.ipynb b/Workflow.ipynb index 71a8ca2..03c8c7a 100644 --- a/Workflow.ipynb +++ b/Workflow.ipynb @@ -7974,9 +7974,9 @@ } }, "text/html": [ - "