Publish Python package to pypi when a commit is tagged

* Publish to pypi from main workflow
* Remove pinning
* Include version info for proto tool in RiaVersionInfo.py
This commit is contained in:
Magne Sjaastad 2023-06-29 14:07:04 +02:00 committed by GitHub
parent 8a41d5a085
commit 8f83d25c9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 58 additions and 8 deletions

View File

@ -18,7 +18,7 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
ResInsight-x64-buildcache: build:
runs-on: ${{ matrix.config.os }} runs-on: ${{ matrix.config.os }}
strategy: strategy:
fail-fast: false fail-fast: false
@ -34,6 +34,7 @@ jobs:
build-python-module: true, build-python-module: true,
execute-unit-tests: true, execute-unit-tests: true,
unity-build: true, unity-build: true,
publish-to-pypi: false,
} }
- { - {
name: "Ubuntu Latest gcc", name: "Ubuntu Latest gcc",
@ -45,6 +46,7 @@ jobs:
build-python-module: true, build-python-module: true,
execute-unit-tests: true, execute-unit-tests: true,
unity-build: false, unity-build: false,
publish-to-pypi: true,
} }
- { - {
name: "Ubuntu Latest clang", name: "Ubuntu Latest clang",
@ -56,6 +58,7 @@ jobs:
build-python-module: true, build-python-module: true,
execute-unit-tests: true, execute-unit-tests: true,
unity-build: false, unity-build: false,
publish-to-pypi: false,
} }
steps: steps:
- name: Checkout - name: Checkout
@ -79,10 +82,9 @@ jobs:
run: echo "${{ steps.python-path.outputs.PYTHON_EXECUTABLE }}" run: echo "${{ steps.python-path.outputs.PYTHON_EXECUTABLE }}"
- name: Install dependencies - name: Install dependencies
# Make sure protobuf version is compatible with grpc - https://github.com/OPM/ResInsight/issues/9304
run: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install -r requirements.txt pip install -r GrpcInterface/Python/requirements.txt
- name: Use CMake - name: Use CMake
uses: lukka/get-cmake@latest uses: lukka/get-cmake@latest
@ -232,12 +234,52 @@ jobs:
env: env:
RESINSIGHT_EXECUTABLE: ${{ runner.workspace }}/ResInsight/cmakebuild/ApplicationExeCode/ResInsight RESINSIGHT_EXECUTABLE: ${{ runner.workspace }}/ResInsight/cmakebuild/ApplicationExeCode/ResInsight
run: | run: |
cd GrpcInterface/Python/rips cd GrpcInterface/Python
python setup.py sdist
cd rips
${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m pytest --console ${{ steps.python-path.outputs.PYTHON_EXECUTABLE }} -m pytest --console
- name: Upload artifact - name: Upload python distribution folder
if: matrix.config.publish-to-pypi
uses: actions/upload-artifact@v3
with:
name: python-distribution
path: GrpcInterface/Python/dist
- name: Upload Windows install artifact
if: ${{contains( matrix.config.os, 'windows') }} if: ${{contains( matrix.config.os, 'windows') }}
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: ResInsight-${{ matrix.config.name }} name: ResInsight-${{ matrix.config.name }}
path: ${{ runner.workspace }}/ResInsight/cmakebuild/install path: ${{ runner.workspace }}/ResInsight/cmakebuild/install
pypi-publish:
name: Upload release to PyPI
needs: build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/rips
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
# If this is a tagged release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
steps:
- name: Download python distribution folder
uses: actions/download-artifact@v3
with:
name: python-distribution
path: dist
- name: Display structure of downloaded files
run: ls -R
- name: Publish Python package to pypi
# https://docs.pypi.org/trusted-publishers/adding-a-publisher/
uses: pypa/gh-action-pypi-publish@release/v1
# uncomment the two lines below to publish to test PyPi
# with:
# repository-url: https://test.pypi.org/legacy/

View File

@ -19,3 +19,5 @@
RESINSIGHT_MAJOR_VERSION = "@RESINSIGHT_MAJOR_VERSION@" RESINSIGHT_MAJOR_VERSION = "@RESINSIGHT_MAJOR_VERSION@"
RESINSIGHT_MINOR_VERSION = "@RESINSIGHT_MINOR_VERSION@" RESINSIGHT_MINOR_VERSION = "@RESINSIGHT_MINOR_VERSION@"
RESINSIGHT_PATCH_VERSION = "@RESINSIGHT_PATCH_VERSION@" RESINSIGHT_PATCH_VERSION = "@RESINSIGHT_PATCH_VERSION@"
PYTHON_GRPC_PROTOC_VERSION = "@PYTHON_GRPC_PROTOC_VERSION@"

View File

@ -77,7 +77,7 @@ if(Protobuf_FOUND)
# Find gRPC installation Looks for gRPCConfig.cmake file installed by gRPC's # Find gRPC installation Looks for gRPCConfig.cmake file installed by gRPC's
# cmake installation. # cmake installation.
find_package(gRPC CONFIG REQUIRED) find_package(gRPC CONFIG REQUIRED)
message(STATUS "Using gRPC ${gRPC_VERSION}") message(STATUS "Generate C++ code using grpc : ${gRPC_VERSION}")
set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf) set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
set(_PROTOBUF_PROTOC $<TARGET_FILE:protobuf::protoc>) set(_PROTOBUF_PROTOC $<TARGET_FILE:protobuf::protoc>)
@ -144,6 +144,12 @@ add_custom_target(PipInstall)
if(RESINSIGHT_GRPC_PYTHON_EXECUTABLE) if(RESINSIGHT_GRPC_PYTHON_EXECUTABLE)
message(STATUS "Using Python Executable: ${RESINSIGHT_GRPC_PYTHON_EXECUTABLE}") message(STATUS "Using Python Executable: ${RESINSIGHT_GRPC_PYTHON_EXECUTABLE}")
execute_process(COMMAND "${RESINSIGHT_GRPC_PYTHON_EXECUTABLE}" -m grpc_tools.protoc --version
OUTPUT_VARIABLE PYTHON_GRPC_PROTOC_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "Using Python grpc protoc compiler: ${PYTHON_GRPC_PROTOC_VERSION}")
else() else()
message(STATUS "RESINSIGHT_GRPC_PYTHON_EXECUTABLE not specified. Will not install Python client code") message(STATUS "RESINSIGHT_GRPC_PYTHON_EXECUTABLE not specified. Will not install Python client code")
endif() endif()

View File

@ -6,7 +6,7 @@ with open('README.md') as f:
with open('LICENSE') as f: with open('LICENSE') as f:
license = f.read() license = f.read()
RIPS_DIST_VERSION = '1' RIPS_DIST_VERSION = '2'
setup( setup(
name='rips', name='rips',
@ -19,5 +19,5 @@ setup(
license=license, license=license,
packages=['rips'], packages=['rips'],
package_data={'rips': ['*.py', 'generated/*.py', 'PythonExamples/*.py', 'tests/*.py']}, package_data={'rips': ['*.py', 'generated/*.py', 'PythonExamples/*.py', 'tests/*.py']},
install_requires=['grpcio>=1.20.0', 'protobuf', 'wheel'] install_requires=['grpcio', 'protobuf', 'wheel']
) )