Fetch tags in checkout of ci/cd. Update checkout action to v5 #144
Workflow file for this run
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: CI | |
| on: | |
| merge_group: | |
| push: | |
| pull_request: | |
| defaults: | |
| run: | |
| shell: bash | |
| env: | |
| # python version for dev workspace | |
| DEV_WORKSPACE_PYTHON_VERSION: '3.13' | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| max-parallel: 1 | |
| matrix: | |
| os: [ubuntu-24.04, macos-13, windows-2022] | |
| include: | |
| - os: ubuntu-24.04 | |
| name: Linux | |
| - os: macos-13 | |
| name: macOS | |
| - os: windows-2022 | |
| name: Windows | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| # setuptools-scm uses tags to get the current version, fetch them to get | |
| # correct version | |
| fetch-tags: 'true' | |
| - name: Set up Python ${{ env.DEV_WORKSPACE_PYTHON_VERSION }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ env.DEV_WORKSPACE_PYTHON_VERSION }} | |
| - name: Install dependencies | |
| run: | | |
| python -m venv .venvs/dev_workspace | |
| source .venvs/dev_workspace/bin/activate | |
| python -m pip install --upgrade pip==25.1.1 | |
| python -m pip install --group="dev_workspace" file://$PWD/finecode_dev_common_preset file://$PWD file://$PWD/finecode_extension_runner | |
| python -m finecode prepare-envs | |
| shell: bash | |
| # TODO: install all other supported python versions. Version can be extracted from finecode | |
| # - name: Lint | |
| # run: | | |
| # poetry run python -m finecode run lint | |
| # shell: bash | |
| - name: Build all packages | |
| if: runner.os == 'Linux' | |
| run: | | |
| source .venvs/dev_workspace/bin/activate | |
| python -m finecode run build | |
| shell: bash | |
| - name: Collect all distribution packages | |
| if: runner.os == 'Linux' | |
| run: | | |
| # TODO: finecode action to copy only updated packages in dist | |
| mkdir -p dist | |
| cp finecode_extension_api/dist/* dist/ | |
| cp extensions/fine_python_ast/dist/* dist/ | |
| cp extensions/fine_python_black/dist/* dist/ | |
| cp extensions/fine_python_flake8/dist/* dist/ | |
| cp extensions/fine_python_isort/dist/* dist/ | |
| cp extensions/fine_python_module_exports/dist/* dist/ | |
| cp extensions/fine_python_mypy/dist/* dist/ | |
| cp presets/fine_python_format/dist/* dist/ | |
| cp presets/fine_python_lint/dist/* dist/ | |
| cp presets/fine_python_recommended/dist/* dist/ | |
| shell: bash | |
| - name: Store the distribution packages | |
| uses: actions/upload-artifact@v4 | |
| if: runner.os == 'Linux' | |
| with: | |
| name: python-package-distributions | |
| path: dist/ | |
| # - name: Run unit tests | |
| # if: ${{ !cancelled() }} | |
| # run: | | |
| # poetry run python -m pytest tests/ | |
| # shell: bash | |
| publish-to-pypi: | |
| name: >- | |
| Publish Python 🐍 distribution 📦 to PyPI | |
| if: startsWith(github.ref, 'refs/tags/') | |
| needs: | |
| - build | |
| runs-on: ubuntu-24.04 | |
| environment: | |
| name: pypi | |
| url: https://pypi.org/p/finecode | |
| permissions: | |
| id-token: write # IMPORTANT: mandatory for trusted publishing | |
| steps: | |
| - name: Download all the dists | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: python-package-distributions | |
| path: dist/ | |
| - name: Publish distribution 📦 to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| # temporary skip existing packages, because not always all packages at once | |
| # are updated. | |
| # TODO: implement publishing only of changed in finecode | |
| skip-existing: true | |
| publish-to-testpypi: | |
| name: Publish Python 🐍 distribution 📦 to TestPyPI | |
| needs: | |
| - build | |
| runs-on: ubuntu-24.04 | |
| environment: | |
| name: testpypi | |
| url: https://test.pypi.org/p/finecode | |
| permissions: | |
| id-token: write # IMPORTANT: mandatory for trusted publishing | |
| steps: | |
| - name: Download all the dists | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: python-package-distributions | |
| path: dist/ | |
| - name: Publish distribution 📦 to TestPyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| repository-url: https://test.pypi.org/legacy/ | |
| verbose: true | |
| # temporary skip existing packages, because not always all packages at once | |
| # are updated. | |
| # TODO: implement publishing only of changed in finecode | |
| skip-existing: true |