diff --git a/.github/workflows/python-client.yml b/.github/workflows/python-client.yml index 3b16e18..248c804 100644 --- a/.github/workflows/python-client.yml +++ b/.github/workflows/python-client.yml @@ -24,9 +24,9 @@ jobs: steps: - name: Clone uses: actions/checkout@v3 - - run: pip install flake8 + - run: pip install flake8 flake8-pyproject - name: Flake8 lint Python code - run: (cd client && find src/ -type f -name '*.py' -exec flake8 --max-line-length=120 '{}' '+') + run: (cd client && flake8 src/) mypy: name: Type checking @@ -38,14 +38,43 @@ jobs: - name: Mypy type checking run: (cd client && mypy src/) - packaging: + package_and_deploy: + name: Build and deploy Ethereum Client Python package + runs-on: ubuntu-latest needs: [lint, mypy] - name: Build, test and deploy the Python package - uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_pypi_deployment.yml@v1 - with: - package_directory: "client/" - stable_deployment: true - check_changelog_version: ${{ startsWith(github.ref,'refs/tags/') }} - publish: ${{ github.event_name == 'push' }} - secrets: - pypi_token: secrets.PYPI_PUBLIC_API_TOKEN + steps: + + - name: Clone + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Build Python package + run: | + pip install --upgrade pip build twine + cd client/ + python -m build; + python -m twine check dist/* + pip install .; + echo "TAG_VERSION=$(python -c 'from ledger_app_clients.ethereum import __version__; print(__version__)')" >> "$GITHUB_ENV" + + - name: Check version against CHANGELOG + if: startsWith(github.ref, 'refs/tags/') + run: | + CHANGELOG_VERSION=$(grep -Po '(?<=## \[)(\d+\.)+[^\]]' client/CHANGELOG.md | head -n 1) + if [ "${{ env.TAG_VERSION }}" == "${CHANGELOG_VERSION}" ]; + then + echo 'Package and CHANGELOG versions match!'; + exit 0; + else + echo "Tag '${{ env.TAG_VERSION }}' and CHANGELOG '${CHANGELOG_VERSION}' versions mismatch!"; + exit 1; + fi + + - name: Publish Python package on pypi.org + if: success() && github.event_name == 'push' + run: (cd client && python -m twine upload --verbose dist/*) + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_PUBLIC_API_TOKEN }} + TWINE_NON_INTERACTIVE: 1 diff --git a/client/pyproject.toml b/client/pyproject.toml index 660206b..3a91961 100644 --- a/client/pyproject.toml +++ b/client/pyproject.toml @@ -46,3 +46,6 @@ Home = "https://github.com/LedgerHQ/app-ethereum" [tool.mypy] ignore_missing_imports = true + +[tool.flake8] +max-line-length = 120 \ No newline at end of file