-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[feature] Rework git workflow process (#11)
* [fea] Rework git workflow - replace builder & deploy platform - now ubuntu (before macos) - build in venv - add support ubuntu-24.04 (Python 3.12) - fix MacOS test * Review changes --------- Co-authored-by: Alexander.A.Utkin <[email protected]>
- Loading branch information
1 parent
520a31b
commit 399ce6d
Showing
3 changed files
with
231 additions
and
148 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,84 +1,125 @@ | ||
name: Upload Release package | ||
on: | ||
push: | ||
branches: | ||
- master | ||
|
||
jobs: | ||
deploy: | ||
runs-on: macos-latest | ||
build: | ||
name: Build project (ubuntu) | ||
runs-on: ubuntu-22.04 | ||
env: | ||
DEPLOY_BUILD_PYTHON_VERSION: '3.12' | ||
defaults: | ||
run: | ||
shell: bash | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Install Reindexer | ||
- name: Checkout PyReindexer repo | ||
uses: actions/checkout@v4 | ||
- name: Checkout Reindexer repo | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: Restream/reindexer | ||
path: reindexer | ||
- name: Install dependencies | ||
run: | | ||
brew tap restream/reindexer | ||
brew install reindexer | ||
shell: bash | ||
- name: Build PyReindexer | ||
sudo apt-get update -y | ||
cd reindexer | ||
sudo bash dependencies.sh | ||
- name: Build Reindexer | ||
run: | | ||
python3 -m pip install wheel | ||
python3 setup.py sdist bdist_wheel | ||
shell: bash | ||
- name: Deploy PyReindexer To Pypi | ||
env: | ||
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} | ||
cd reindexer | ||
mkdir -p build && cd build | ||
cmake .. | ||
make -j4 | ||
sudo make install | ||
- name: Set up Python ${{ env.DEPLOY_BUILD_PYTHON_VERSION }} | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ env.DEPLOY_BUILD_PYTHON_VERSION }} | ||
- name: Install Python dependencies | ||
run: | | ||
python3 -m pip install twine | ||
python3 -m twine upload --verbose dist/* -u __token__ -p pypi-$PYPI_TOKEN | ||
# wait for deploy finnishing on test pypi server | ||
sleep 240 | ||
shell: bash | ||
python -m pip install --upgrade pip | ||
python -m pip install build | ||
- name: Build PyReindexer | ||
run: python -m build --sdist | ||
- name: Store build artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: build | ||
path: dist/* | ||
|
||
test-macos: | ||
runs-on: macos-latest | ||
needs: deploy | ||
deploy: | ||
name: Upload to PyPI (ubuntu) | ||
runs-on: ubuntu-22.04 | ||
needs: build | ||
environment: | ||
name: pypi | ||
url: https://pypi.org/p/pyreindexer/ | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Install Reindexer | ||
run: | | ||
brew tap restream/reindexer | ||
brew install reindexer | ||
shell: bash | ||
- name: Install PyReindexer | ||
run: python3 -m pip install -vvv pyreindexer | ||
shell: bash | ||
- name: Test | ||
run: | | ||
cd /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pyreindexer | ||
$GITHUB_WORKSPACE/.github/workflows/test.sh | ||
shell: bash | ||
- name: Fetch build artifacts | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: build | ||
path: dist/ | ||
- name: Publish package distributions to PyPI | ||
uses: pypa/gh-action-pypi-publish@release/v1 | ||
with: | ||
verbose: true | ||
# user: __token__ ## used as default | ||
password: pypi-${{ secrets.PYPI_TOKEN }} | ||
repository-url: https://pypi.org/legacy/ | ||
|
||
test-ubuntu: | ||
test: | ||
strategy: | ||
matrix: | ||
os: [ubuntu-20.04,ubuntu-22.04] | ||
os: [ubuntu-22.04,ubuntu-24.04,macos-14] | ||
fail-fast: false | ||
runs-on: ${{matrix.os}} | ||
env: | ||
OS: ${{matrix.os}} | ||
# Python 3.12 issue found on MasOS arm64 (darwin) runners, actions/setup-python@v5 incorrect venv setup | ||
BUILD_PYTHON_VERSION: ${{ startsWith(matrix.os, 'macos') && '3.8' || '3.12' }} | ||
needs: deploy | ||
defaults: | ||
run: | ||
shell: bash | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Install Reindexer-Dev | ||
- name: Checkout PyReindexer | ||
uses: actions/checkout@v4 | ||
- name: Install Reindexer (MacOS) | ||
if: startsWith(matrix.os, 'macos') | ||
run: | | ||
brew tap restream/reindexer | ||
brew install reindexer | ||
- name: Install Reindexer-Dev\Server (Ubuntu) | ||
if: startsWith(matrix.os, 'ubuntu') | ||
run: | | ||
curl https://repo.reindexer.io/RX-KEY.GPG | sudo apt-key add | ||
if [[ $OS == ubuntu-20.04 ]]; then | ||
echo 'deb https://repo.reindexer.io/ubuntu-focal /' | sudo tee -a /etc/apt/sources.list | ||
else | ||
if [[ ${{matrix.os}} == ubuntu-22.04 ]]; then | ||
echo 'deb https://repo.reindexer.io/ubuntu-jammy /' | sudo tee -a /etc/apt/sources.list | ||
elif [[ ${{matrix.os}} == ubuntu-24.04 ]]; then | ||
echo 'deb https://repo.reindexer.io/ubuntu-noble /' | sudo tee -a /etc/apt/sources.list | ||
else | ||
echo "${{matrix.os}} not supported" | ||
exit 1 | ||
fi | ||
sudo apt-get update -y | ||
sudo apt-get install -y libunwind-dev | ||
sudo apt-get install -y reindexer-dev | ||
shell: bash | ||
sudo apt-get install -y reindexer-server | ||
- name: Set up Python ${{ env.BUILD_PYTHON_VERSION }} | ||
uses: actions/setup-python@v5 | ||
env: | ||
PIP_DISABLE_PIP_VERSION_CHECK: 1 | ||
with: | ||
python-version: ${{ env.BUILD_PYTHON_VERSION }} | ||
- name: Install PyReindexer | ||
run: | | ||
python3 -m pip install setuptools | ||
python3 -m pip install -vvv pyreindexer | ||
shell: bash | ||
- name: Install Reindexer-Server | ||
run: sudo apt-get install reindexer-server | ||
shell: bash | ||
python -m pip install --upgrade --disable-pip-version-check pip importlib_metadata setuptools wheel | ||
python -m pip install -vvv pyreindexer | ||
- name: Prepare Test Environment | ||
run: python -m pip install -r requirements.txt | ||
- name: Test | ||
run: | | ||
cd $(python3 -m site --user-site)/pyreindexer | ||
cd $(python -c "import sysconfig; print(sysconfig.get_path('purelib'))")/pyreindexer | ||
$GITHUB_WORKSPACE/.github/workflows/test.sh | ||
shell: bash |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,87 +1,127 @@ | ||
name: Upload Release package to TestPyPI | ||
on: | ||
pull_request: | ||
types: [opened, reopened] | ||
|
||
jobs: | ||
deploy: | ||
runs-on: macos-latest | ||
build: | ||
name: Build project (ubuntu) | ||
runs-on: ubuntu-22.04 | ||
env: | ||
DEPLOY_BUILD_PYTHON_VERSION: '3.12' | ||
defaults: | ||
run: | ||
shell: bash | ||
steps: | ||
- name: Install Reindexer | ||
- name: Checkout PyReindexer repo | ||
uses: actions/checkout@v4 | ||
- name: Checkout Reindexer repo | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: Restream/reindexer | ||
path: reindexer | ||
- name: Install dependencies | ||
run: | | ||
brew tap restream/reindexer | ||
brew install reindexer | ||
shell: bash | ||
- uses: actions/checkout@v3 | ||
- name: Build PyReindexer | ||
run: python3 setup.py sdist bdist_wheel | ||
shell: bash | ||
- name: Deploy PyReindexer To Test-Pypi | ||
env: | ||
TESTPYPI_TOKEN: ${{ secrets.TESTPYPI_TOKEN }} | ||
sudo apt-get update -y | ||
cd reindexer | ||
sudo bash dependencies.sh | ||
- name: Build Reindexer | ||
run: | | ||
python3 -m pip install twine | ||
python3 -m twine upload --verbose --repository testpypi dist/* -u __token__ -p pypi-$TESTPYPI_TOKEN | ||
# wait for deploy finnishing on test pypi server | ||
sleep 240 | ||
shell: bash | ||
cd reindexer | ||
mkdir -p build && cd build | ||
cmake .. | ||
make -j4 | ||
sudo make install | ||
- name: Set up Python ${{ env.DEPLOY_BUILD_PYTHON_VERSION }} | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ env.DEPLOY_BUILD_PYTHON_VERSION }} | ||
- name: Install Python dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
python -m pip install build | ||
- name: Build PyReindexer | ||
run: python -m build --sdist | ||
- name: Store build artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: build | ||
path: dist/* | ||
|
||
test-macos: | ||
runs-on: macos-latest | ||
needs: deploy | ||
deploy: | ||
name: Upload to TestPyPI (ubuntu) | ||
runs-on: ubuntu-22.04 | ||
needs: build | ||
environment: | ||
name: testpypi | ||
url: https://test.pypi.org/p/pyreindexer/ | ||
steps: | ||
- name: Install Reindexer | ||
run: | | ||
brew tap restream/reindexer | ||
brew install reindexer | ||
shell: bash | ||
- uses: actions/checkout@v3 | ||
- name: Install PyReindexer | ||
run: python3 -m pip install -vvv --index-url https://test.pypi.org/simple/ --no-deps pyreindexer | ||
shell: bash | ||
- name: Prepare Test Environment | ||
run: python3 -m pip install pytest==6.2.5 delegator envoy pyhamcrest==2.0.2 | ||
shell: bash | ||
- name: Test | ||
run: | | ||
cd /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pyreindexer | ||
$GITHUB_WORKSPACE/.github/workflows/test.sh | ||
shell: bash | ||
- name: Fetch build artifacts | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: build | ||
path: dist/ | ||
- name: Publish package distributions to TestPyPI | ||
uses: pypa/gh-action-pypi-publish@release/v1 | ||
with: | ||
verbose: true | ||
# user: __token__ ## used as default | ||
password: pypi-${{ secrets.TESTPYPI_TOKEN }} | ||
repository-url: https://test.pypi.org/legacy/ | ||
|
||
test-ubuntu: | ||
test: | ||
strategy: | ||
matrix: | ||
os: [ubuntu-20.04,ubuntu-22.04] | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-22.04,ubuntu-24.04,macos-14] | ||
runs-on: ${{matrix.os}} | ||
env: | ||
OS: ${{matrix.os}} | ||
# Python 3.12 issue found on MasOS arm64 (darwin) runners, actions/setup-python@v5 incorrect venv setup | ||
# Error: The version '3.12' with architecture 'arm64' was not found for macOS 14.4. In real version 3.9+ not found | ||
# https://github.com/actions/setup-python/issues/654 | ||
# https://github.com/actions/setup-python/issues/865 | ||
BUILD_PYTHON_VERSION: ${{ startsWith(matrix.os, 'macos') && '3.8' || '3.12' }} | ||
needs: deploy | ||
defaults: | ||
run: | ||
shell: bash | ||
steps: | ||
- name: Install Reindexer-Dev | ||
- name: Checkout PyReindexer | ||
uses: actions/checkout@v4 | ||
- name: Install Reindexer (MacOS) | ||
if: startsWith(matrix.os, 'macos') | ||
run: | | ||
brew tap restream/reindexer | ||
brew install reindexer | ||
- name: Install Reindexer-Dev\Server (Ubuntu) | ||
if: startsWith(matrix.os, 'ubuntu') | ||
run: | | ||
curl https://repo.reindexer.io/RX-KEY.GPG | sudo apt-key add | ||
if [[ $OS == ubuntu-20.04 ]]; then | ||
echo 'deb https://repo.reindexer.io/ubuntu-focal /' | sudo tee -a /etc/apt/sources.list | ||
else | ||
if [[ ${{matrix.os}} == ubuntu-22.04 ]]; then | ||
echo 'deb https://repo.reindexer.io/ubuntu-jammy /' | sudo tee -a /etc/apt/sources.list | ||
elif [[ ${{matrix.os}} == ubuntu-24.04 ]]; then | ||
echo 'deb https://repo.reindexer.io/ubuntu-noble /' | sudo tee -a /etc/apt/sources.list | ||
else | ||
echo "${{matrix.os}} not supported" | ||
exit 1 | ||
fi | ||
sudo apt-get update -y | ||
sudo apt-get install -y libunwind-dev | ||
sudo apt-get install -y reindexer-dev | ||
shell: bash | ||
- uses: actions/checkout@v3 | ||
sudo apt-get install -y reindexer-server | ||
- name: Set up Python ${{ env.BUILD_PYTHON_VERSION }} | ||
uses: actions/setup-python@v5 | ||
env: | ||
PIP_DISABLE_PIP_VERSION_CHECK: 1 | ||
with: | ||
python-version: ${{ env.BUILD_PYTHON_VERSION }} | ||
- name: Install PyReindexer | ||
run: | | ||
python3 -m pip install setuptools | ||
python3 -m pip install -vvv --index-url https://test.pypi.org/simple/ --no-deps pyreindexer | ||
shell: bash | ||
- name: Install Reindexer-Server | ||
run: sudo apt-get install reindexer-server | ||
shell: bash | ||
python -m pip install --upgrade --disable-pip-version-check pip importlib_metadata setuptools wheel | ||
python -m pip install -vvv --index-url https://test.pypi.org/simple/ --no-deps pyreindexer | ||
- name: Prepare Test Environment | ||
run: python3 -m pip install pytest==6.2.5 delegator envoy pyhamcrest==2.0.2 | ||
shell: bash | ||
run: python -m pip install -r requirements.txt | ||
- name: Test | ||
run: | | ||
cd $(python3 -m site --user-site)/pyreindexer | ||
cd $(python -c "import sysconfig; print(sysconfig.get_path('purelib'))")/pyreindexer | ||
$GITHUB_WORKSPACE/.github/workflows/test.sh | ||
shell: bash |
Oops, something went wrong.