Skip to content

Commit

Permalink
Configure for release as wxPythonMeticy: (1) Internal renaming -- exc…
Browse files Browse the repository at this point in the history
…ept for version. (2) Add a github action to publish release artifacts to wxPythonMeticy package in pypi every time a release is updated or edited in github. (3) Configure azure builds and release to PyPI
  • Loading branch information
jmoraleda committed Sep 24, 2024
1 parent 31b687f commit e398bad
Show file tree
Hide file tree
Showing 10 changed files with 362 additions and 46 deletions.
83 changes: 83 additions & 0 deletions .azure/ci-linux-job.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
jobs:
- job: Linux_CI
timeoutInMinutes: 90
displayName: 'Linux CI'
pool:
vmImage: 'ubuntu-22.04'
strategy:
matrix:
Py311:
python.version: '3.11'
Py312:
python.version: '3.12'

variables:
PYTHONUNBUFFERED: '1'
CCACHE_DIR: $(Pipeline.Workspace)/ccache

steps:
- checkout: self
submodules: recursive

- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'

- script: |
sudo apt-get update -y
sudo apt-get install -y build-essential ccache
sudo apt-get remove libunwind-* # Required to install libgstreamer
sudo apt-get install -y libgtk-3-dev libjpeg-dev libtiff-dev \
libsdl2-dev libgstreamer-plugins-base1.0-dev libnotify-dev \
libsm-dev libwebkit2gtk-4.0-dev libxtst-dev libexpat1-dev \
libgl1-mesa-dev libglu1-mesa-dev libcurl4-openssl-dev \
libgstreamer-plugins-bad1.0-dev
echo "##vso[task.prependpath]/usr/lib/ccache"
displayName: 'Install deb package requirements & setup ccache'
- task: Cache@2
inputs:
key: 'ccache | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
path: $(CCACHE_DIR)
restoreKeys: |
ccache | "$(Agent.OS)" | "$(python.version)"
displayName: ccache

- script: |
python -m pip install -U pip setuptools wheel auditwheel
python -m pip install -r requirements.txt
displayName: 'Install Python dependencies'
- script: |
python build.py --jobs=4 build_wx
displayName: 'build wxWidgets'
- script: |
python build.py dox etg --nodoc sip
displayName: 'generate code'
- script: |
python build.py --jobs=4 build_py
displayName: 'build wxPython'
- script: |
python build.py bdist_wheel
displayName: 'build platform specific wheel'
- script: |
auditwheel repair --plat manylinux_2_35_x86_64 --only-plat -w dist dist/wxPythonMeticy-*.whl
displayName: 'build manylinux'
- script: |
python -m pip install dist/wxPythonMeticy-*manylinux*.whl
python -c "import wx; print(f'Successfully tested importing wx version {wx.version()}');"
displayName: 'test install'
- task: TwineAuthenticate@1
inputs:
artifactFeed: wxPythonMeticy/release_artifacts
displayName: 'Twine Authenticate'

- script: |
python -m twine upload -r release_artifacts --config-file $(PYPIRC_PATH) dist/wxPythonMeticy-*manylinux*
displayName: 'Upload to feed'
70 changes: 70 additions & 0 deletions .azure/ci-macos-job.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
jobs:
- job: MacOS_CI
timeoutInMinutes: 120
displayName: 'MacOS CI'
pool:
vmImage: 'macOS-12'
strategy:
matrix:
Py311:
python.version: '3.11'
Py312:
python.version: '3.12'

variables:
PYTHONUNBUFFERED: '1'
CCACHE_DIR: $(Pipeline.Workspace)/ccache

steps:
- checkout: self
submodules: recursive

- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'

- script: |
brew install ccache
echo "##vso[task.prependpath]/usr/local/opt/ccache/libexec"
displayName: 'Install brew package requirements & setup ccache'
- task: Cache@2
inputs:
key: 'ccache | "$(Agent.OS)" | "$(python.version)" | "$(Build.BuildNumber)"'
path: $(CCACHE_DIR)
restoreKeys: |
ccache | "$(Agent.OS)" | "$(python.version)"
displayName: ccache

- script: |
python -m pip install -U setuptools wheel
python -m pip install -r requirements.txt
displayName: 'Install Python dependencies'
- script: |
xcode-select --print-path
python build.py --jobs=4 build_wx
displayName: 'build wxWidgets'
- script: |
python build.py dox etg --nodoc sip
displayName: 'generate code'
- script: |
python build.py --jobs=4 build_py
displayName: 'build wxPython'
- script: |
python build.py bdist_wheel
python -m pip install dist/wxPythonMeticy-*.whl
python -c "import wx; print(f'Successfully tested importing wx version {wx.version()}');"
displayName: 'build wheel and test install'
- task: TwineAuthenticate@1
inputs:
artifactFeed: wxPythonMeticy/release_artifacts
displayName: 'Twine Authenticate'

- script: |
python -m twine upload -r release_artifacts --config-file $(PYPIRC_PATH) dist/*
displayName: 'Upload to feed'
89 changes: 89 additions & 0 deletions .azure/ci-windows-job.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
jobs:
- job: Windows_CI
timeoutInMinutes: 90
displayName: 'Windows CI'
pool:
vmImage: 'windows-2022'
strategy:
matrix:
Py311_x86:
python.version: '3.11'
python.arch: x86
addToPath: true
Py312_x86:
python.version: '3.12'
python.arch: x86
addToPath: true

Py311_x64:
python.version: '3.11'
python.arch: x64
addToPath: true
Py312_x64:
python.version: '3.12'
python.arch: x64
addToPath: true


variables: {'PYTHONUNBUFFERED': '1'}

steps:
- checkout: self
submodules: recursive

- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'
architecture: '$(python.arch)'

- bash: |
which python
python -c "import sys; print(sys.version); print(sys.prefix)"
# check what Pythons are available
ls -al /c/hostedtoolcache/windows/Python
displayName: 'Check Python'
- bash: |
curl -O https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python -m pip install -U setuptools wheel
python -m pip install --prefer-binary -r requirements.txt
displayName: 'Install Python dependencies'
- bash: |
rm C:/Program\ Files/Microsoft\ Visual\ Studio/2022/Enterprise/VC/Auxiliary/Build/Microsoft.VCToolsVersion.v143.default.*
displayName: 'Remove extra MSVC version'
- task: BatchScript@1
displayName: 'Set up vcvarsall'
inputs:
filename: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat'
arguments: $(python.arch)
modifyEnvironment: true

- bash: |
python build.py --jobs=4 build_wx
displayName: 'build wxWidgets'
- bash: |
python build.py dox etg --nodoc sip
displayName: 'generate code'
- bash: |
python build.py --jobs=4 build_py
displayName: 'build wxPython'
- bash: |
python build.py bdist_wheel
python -m pip install dist/wxPythonMeticy-*.whl
python -c "import wx; print(f'Successfully tested importing wx version {wx.version()}');"
displayName: 'build wheel and test install'
- task: TwineAuthenticate@1
inputs:
artifactFeed: wxPythonMeticy/release_artifacts
displayName: 'Twine Authenticate'

- script: |
python -m twine upload -r release_artifacts --config-file $(PYPIRC_PATH) dist/*
displayName: 'Upload to feed'
Loading

0 comments on commit e398bad

Please sign in to comment.