From f4378112bb8ac3039ff64072646bf27c4e8ead2d Mon Sep 17 00:00:00 2001 From: sobolevn Date: Fri, 17 Jun 2022 17:02:26 +0300 Subject: [PATCH] Release django-stubs and django-stubs-ext --- .../workflows/release-django-stubs-ext.yml | 77 +++++++++++++++++++ .../{release.yml => release-django-stubs.yml} | 17 ++-- .pre-commit-config.yaml | 6 +- django_stubs_ext/setup.py | 3 +- setup.py | 5 +- 5 files changed, 96 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/release-django-stubs-ext.yml rename .github/workflows/{release.yml => release-django-stubs.yml} (85%) diff --git a/.github/workflows/release-django-stubs-ext.yml b/.github/workflows/release-django-stubs-ext.yml new file mode 100644 index 000000000..465a90e04 --- /dev/null +++ b/.github/workflows/release-django-stubs-ext.yml @@ -0,0 +1,77 @@ +# Please, keep it in sync with `release-django-stubs-ext.yml` +name: Release django-stubs-ext + +on: + push: + tags: + - 'django-stubs-ext@*' + +jobs: + build: + environment: + name: django-stubs-ext-pypi + url: https://pypi.org/project/django-stubs-ext + + if: github.repository == 'typeddjango/django-stubs' + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.9' + + - name: Install dependencies + run: | + python -m pip install -U pip + python -m pip install -U setuptools twine wheel + - name: Build package + run: | + cd ./django-stubs-ext + python setup.py --version + python setup.py sdist bdist_wheel + + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.DJANGO_STUBS_PYPI_API_TOKEN }} + packages_dir: './django-stubs-ext/dist' + print_hash: true + + - name: Create release + uses: actions/github-script@v6 + with: + script: | + const tagName = context.ref.replace(/^refs\/tags\//, ''); + const release = await github.rest.repos.createRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + tag_name: tagName, + name: `Release of ${tagName} failed`, + generate_release_notes: true, + }); + + if (release.status < 200 || release.status >= 300) { + core.setFailed(`Could not create release for tag '${tagName}'`); + return; + } + + # https://github.community/t/run-github-actions-job-only-if-previous-job-has-failed/174786/2 + create-issue-on-failure: + name: Create an issue if release failed + runs-on: ubuntu-latest + needs: [build] + if: ${{ github.repository == 'typeddjango/django-stubs' && always() && needs.build.result == 'failure' }} + permissions: + issues: write + steps: + - uses: actions/github-script@v6 + with: + script: | + await github.rest.issues.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: `Release failure on ${new Date().toDateString()}`, + body: `Details: https://github.com/${context.repo.owner}/${context.repo.repo}/actions/workflows/release.yml`, + }) diff --git a/.github/workflows/release.yml b/.github/workflows/release-django-stubs.yml similarity index 85% rename from .github/workflows/release.yml rename to .github/workflows/release-django-stubs.yml index 8f440226e..988c7f2c0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release-django-stubs.yml @@ -1,18 +1,22 @@ -name: Release +# Please, keep it in sync with `release-django-stubs-ext.yml` +name: Release django-stubs on: push: tags: - - '*' + - 'django-stubs@*' jobs: build: + environment: + name: django-stubs-pypi + url: https://pypi.org/project/django-stubs + if: github.repository == 'typeddjango/django-stubs' runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 with: python-version: '3.9' @@ -21,7 +25,6 @@ jobs: run: | python -m pip install -U pip python -m pip install -U setuptools twine wheel - - name: Build package run: | python setup.py --version @@ -31,8 +34,8 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ - password: ${{ secrets.PYPI_API_TOKEN }} - + password: ${{ secrets.DJANGO_STUBS_PYPI_API_TOKEN }} + packages_dir: './dist' print_hash: true - name: Create release @@ -44,7 +47,7 @@ jobs: owner: context.repo.owner, repo: context.repo.repo, tag_name: tagName, - name: `Release ${tagName.replace(/^v/, '')}`, + name: `Release of ${tagName} failed`, generate_release_notes: true, }); diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index af185a3ea..b1e5ec571 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ default_language_version: python: python3.9 repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.0.1 + rev: v4.3.0 hooks: - id: check-yaml - id: trailing-whitespace @@ -13,12 +13,12 @@ repos: - id: check-merge-conflict - id: end-of-file-fixer - repo: https://github.com/asottile/pyupgrade - rev: v2.29.1 + rev: v2.34.0 hooks: - id: pyupgrade args: ["--py36-plus"] - repo: https://github.com/pre-commit/mirrors-isort - rev: v5.9.3 + rev: v5.10.1 hooks: - id: isort name: isort (python) diff --git a/django_stubs_ext/setup.py b/django_stubs_ext/setup.py index 0298d7bf1..7751e88f7 100644 --- a/django_stubs_ext/setup.py +++ b/django_stubs_ext/setup.py @@ -12,7 +12,7 @@ setup( name="django-stubs-ext", - version="0.4.0", + version="0.5.0", description="Monkey-patching and extensions for django-stubs", long_description=readme, long_description_content_type="text/markdown", @@ -39,6 +39,7 @@ "Framework :: Django :: 3.0", "Framework :: Django :: 3.1", "Framework :: Django :: 3.2", + "Framework :: Django :: 4.0", ], project_urls={ "Release notes": "https://github.com/typeddjango/django-stubs/releases", diff --git a/setup.py b/setup.py index cc8c4a61f..5e7082f25 100644 --- a/setup.py +++ b/setup.py @@ -36,7 +36,7 @@ def find_stub_files(name: str) -> List[str]: setup( name="django-stubs", - version="1.11.1", + version="1.12.0", description="Mypy stubs for Django", long_description=readme, long_description_content_type="text/markdown", @@ -44,6 +44,8 @@ def find_stub_files(name: str) -> List[str]: url="https://github.com/typeddjango/django-stubs", author="Maksim Kurnikov", author_email="maxim.kurnikov@gmail.com", + maintainer="Nikita Sobolev", + maintainer_email="mail@sobolevn.me", py_modules=[], python_requires=">=3.7", install_requires=dependencies, @@ -65,6 +67,7 @@ def find_stub_files(name: str) -> List[str]: "Framework :: Django :: 3.0", "Framework :: Django :: 3.1", "Framework :: Django :: 3.2", + "Framework :: Django :: 4.0", ], project_urls={ "Release notes": "https://github.com/typeddjango/django-stubs/releases",