Skip to content

Merge pull request #274 from MannLabs/develop #56

Merge pull request #274 from MannLabs/develop

Merge pull request #274 from MannLabs/develop #56

on:
push:
branches: [ master ]
workflow_dispatch:
name: Publish on PyPi and release on GitHub
env:
REGISTRY: ghcr.io
IMAGE_NAME: MannLabs/alphatims
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__" alphatims/__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 alphatims== 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_Linux_Release:
runs-on: ubuntu-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 Linux
shell: bash -l {0}
run: |
cd misc/one_click_linux
. ./create_installer_linux.sh
- name: Test installer for Linux
shell: bash -l {0}
run: |
sudo dpkg -i misc/one_click_linux/dist/alphatims_gui_installer_linux.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_On_GitHub.outputs.upload_url }}
asset_path: misc/one_click_linux/dist/alphatims_gui_installer_linux.deb
asset_name: alphatims_gui_installer_linux.deb
asset_content_type: application/octet-stream
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 }}
- 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/alphatims_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/alphatims_gui_installer_macos.pkg
asset_name: alphatims_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.bat
. ./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..."
# ./alphatims_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/alphatims_gui_installer_windows.exe
asset_name: alphatims_gui_installer_windows.exe
asset_content_type: application/octet-stream
Create_PyPi_Release:
runs-on: ubuntu-latest
needs: [Create_Linux_Release, 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 env create --force --name alphatims --file misc/conda_development_environment.yaml
# conda activate alphatims
# rm -rf dist
# rm -rf build
# python setup.py sdist bdist_wheel
# twine check dist/*
# conda deactivate
cd misc
. ./prepare_pypi_wheel.sh
- name: Publish distribution to Test PyPI
uses: pypa/gh-action-pypi-publish@master
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 alphatims_pip_test python=3.8 -y
conda activate alphatims_pip_test
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple "alphatims[stable,plotting-stable,legacy-stable]"
alphatims
conda deactivate
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@master
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 alphatims_pip_test python=3.8 -y
conda activate alphatims_pip_test
pip install "alphatims[stable,plotting-stable,legacy-stable]"
alphatims
conda deactivate
Create_Docker_Release:
# Adapted from wfondrie/mokapot's docker actions
runs-on: ubuntu-latest
needs: [Create_Linux_Release]
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Build Wheel
run: |
python -m pip install wheel twine
python setup.py bdist_wheel
twine check dist/*
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to the GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v3
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Push the Docker image to the GHCR
uses: docker/build-push-action@v3
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}