Let the CLA and build wheels test run only on the mlcommons repo #7
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
name: Build loadgen wheels and release them into PYPI | |
on: | |
release: | |
types: [published] | |
push: | |
branches: | |
- master | |
- loadgen-release | |
paths: | |
- loadgen/** | |
jobs: | |
update_version: | |
name: Update version only on ubuntu but used by windows and macos | |
if: github.repository_owner == 'mlcommons' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Step 3: Check if VERSION.txt file has changed in this push | |
- name: Check if VERSION.txt file has changed | |
id: version_changed | |
run: | | |
if git diff --name-only HEAD~1 | grep -q "VERSION.txt"; then | |
echo "VERSION.txt file has been modified" | |
echo "::set-output name=version_changed::true" | |
new_version=$(cat VERSION.txt) | |
else | |
echo "VERSION file has NOT been modified" | |
echo "::set-output name=version_changed::false" | |
fi | |
echo "::set-output name=new_version::$new_version" | |
# Step 4: Increment version if VERSION was not changed | |
- name: Increment version if necessary | |
id: do_version_increment | |
if: steps.version_changed.outputs.version_changed == 'false' | |
run: | | |
cd loadgen | |
# Check if VERSION file exists, else initialize it | |
if [ ! -f VERSION.txt ]; then | |
echo "0.0.0" > VERSION.txt | |
fi | |
version=$(cat VERSION.txt) | |
IFS='.' read -r major minor patch <<< "$version" | |
patch=$((patch + 1)) | |
new_version="$major.$minor.$patch" | |
echo $new_version > VERSION.txt | |
echo "New version: $new_version" | |
echo "::set-output name=new_version::$new_version" | |
# Step 5: Commit the updated version to the repository | |
- name: Commit updated version | |
if: steps.version_changed.outputs.version_changed == 'false' | |
run: | | |
cd loadgen | |
git config --global user.name "${{ github.actor }}" | |
git config --global user.email "${{ github.actor }}@users.noreply.github.com" | |
git add VERSION.txt | |
git commit -m "Increment version to ${{ steps.do_version_increment.outputs.new_version }}" | |
git push | |
build_wheels: | |
name: Build wheels on ${{ matrix.os }} | |
needs: update_version | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v3 | |
- name: Install requirements | |
run: python -m pip install cibuildwheel twine | |
- name: Build wheels | |
run: python -m cibuildwheel loadgen/ --output-dir wheels | |
# Save wheels as artifacts | |
- name: Upload built wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels-${{ matrix.os }} | |
path: wheels | |
publish_wheels: | |
needs: build_wheels # Wait for the build_wheels job to complete | |
runs-on: ubuntu-latest # Only run this job on Linux | |
environment: release | |
permissions: | |
# IMPORTANT: this permission is mandatory for trusted publishing | |
id-token: write | |
steps: | |
- uses: actions/checkout@v3 | |
# Download the built wheels from ubuntu | |
- name: Download Ubuntu wheels | |
uses: actions/download-artifact@v3 | |
with: | |
name: wheels-ubuntu-latest | |
path: wheels | |
# Download the built wheels from macOS | |
- name: Download macOS wheels | |
uses: actions/download-artifact@v3 | |
with: | |
name: wheels-macos-latest | |
path: wheels | |
# Download the built wheels from Windows | |
- name: Download Windows wheels | |
uses: actions/download-artifact@v3 | |
with: | |
name: wheels-windows-latest | |
path: wheels | |
- name: Publish | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
verify-metadata: true | |
skip-existing: true | |
packages-dir: wheels | |
repository-url: https://upload.pypi.org/legacy/ | |
verbose: true |