Build Main #356
This file contains hidden or 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 Main | |
| on: | |
| push: | |
| branches: | |
| - main | |
| schedule: | |
| # <minute [0,59]> <hour [0,23]> <day of the month [1,31]> <month of the year [1,12]> <day of the week [0,6]> | |
| # https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07 | |
| # Run every Monday at 18:00:00 UTC (Monday at 10:00:00 PST) | |
| - cron: '0 18 * * 1' | |
| jobs: | |
| lint-and-test: | |
| name: Lint and Test 🔍 | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| python-version: ['3.10', '3.11', '3.12', '3.13'] | |
| architecture: ['x86_64', 'aarch64'] | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install tox tox-gh-actions | |
| - name: Test with tox | |
| run: tox | |
| publish: | |
| name: Build and Publish 📦 | |
| if: "contains(github.event.head_commit.message, 'Bump version')" | |
| needs: [lint-and-test] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write # needed to create the release tag | |
| steps: | |
| - uses: actions/checkout@v1 | |
| - name: Set up Python | |
| uses: actions/setup-python@v1 | |
| with: | |
| python-version: '3.10' | |
| - name: Install Dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install setuptools wheel importlib_metadata==7.2.1 | |
| - name: Build Package | |
| run: | | |
| python setup.py sdist bdist_wheel | |
| - name: Publish to PyPI | |
| uses: pypa/gh-action-pypi-publish@master | |
| with: | |
| user: __token__ | |
| password: ${{ secrets.PYPI_API_TOKEN }} | |
| repository_url: https://upload.pypi.org/legacy/ | |
| # bump2version tags the commit it creates, but a bump that arrives through a | |
| # PR is squashed or rebased, so that tag would point at a commit which never | |
| # reaches main -- v3.0.0 dangles that way and v3.1.0 was never tagged at all. | |
| # Tag here instead, on the commit that actually published. | |
| - name: Read the published version | |
| id: version | |
| run: | | |
| version=$(grep -Po '(?<=^__version__ = ")[^"]+' inorbit_edge/__init__.py) | |
| echo "value=$version" >> "$GITHUB_OUTPUT" | |
| - name: Tag the release | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| VERSION: ${{ steps.version.outputs.value }} | |
| run: | | |
| if gh release view "v$VERSION" --repo "$GITHUB_REPOSITORY" >/dev/null 2>&1; then | |
| echo "v$VERSION is already released; nothing to tag." | |
| exit 0 | |
| fi | |
| gh release create "v$VERSION" \ | |
| --repo "$GITHUB_REPOSITORY" \ | |
| --target "$GITHUB_SHA" \ | |
| --title "v$VERSION" \ | |
| --generate-notes |