Skip to content

Publish on PyPi and release on GitHub #32

Publish on PyPi and release on GitHub

Publish on PyPi and release on GitHub #32

on:
workflow_dispatch:
name: Publish on PyPi and release on GitHub
jobs:
Version_Bumped:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.master_version_bumped.outputs.version }}
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: Master version bumped
id: master_version_bumped
shell: bash -l {0}
run: |
current_version=$(grep "__version__" alphamap/__init__.py | cut -f3 -d ' ' | sed 's/"//g')
current_version_as_regex=$(echo $current_version | sed 's/\./\\./g')
conda create -n version_check python=3.8 pip=20.1 -y
conda activate version_check
set +e
already_on_pypi=$(pip install alphamap== 2>&1 | grep -c "$current_version_as_regex")
set -e
conda deactivate
if [ $already_on_pypi -ne 0 ]; then
echo "Version is already on PyPi"
exit 1
fi
echo ::set-output name=version::$current_version
Create_Draft_On_GitHub:
runs-on: ubuntu-latest
needs: Version_Bumped
outputs:
upload_url: ${{ steps.draft_release.outputs.upload_url }}
steps:
- name: Draft Release
id: draft_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ needs.Version_Bumped.outputs.version }}
release_name: Release version ${{ needs.Version_Bumped.outputs.version }}
draft: false
prerelease: false
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
Create_PyPi_Release:
runs-on: ubuntu-latest
needs: [Create_MacOs_Release, Create_Windows_Release]
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: Prepare distribution
shell: bash -l {0}
run: |
conda create -n alphamap python=3.8 -y
conda activate alphamap
pip install twine build
rm -rf dist
rm -rf build
python -m build
twine check dist/*
conda deactivate
- name: Publish distribution to Test PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
- name: Test PyPI test release
shell: bash -l {0}
run: |
conda create -n alphamap_pip_test python=3.8 -y
conda activate alphamap_pip_test
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple "alphamap[stable]"
echo "TODO, this will run forever.."
#alphamap
conda deactivate
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
Test_PyPi_Release:
name: Test_PyPi_version_on_${{ matrix.os }}
runs-on: ${{ matrix.os }}
needs: Create_PyPi_Release
strategy:
matrix:
os: [ubuntu-latest, macOS-latest, windows-latest]
steps:
- 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: Test pip installation from PyPi
shell: bash -l {0}
run: |
conda create -n alphamap_pip_test python=3.8 -y
conda activate alphamap_pip_test
pip install "alphamap[stable]"
echo "TODO, this will run forever.."
#alphamap
conda deactivate