Skip to content

Commit

Permalink
Automate release (python-poetry#1595)
Browse files Browse the repository at this point in the history
  • Loading branch information
sdispater authored and shenek committed Dec 31, 2019
1 parent 8fd6183 commit 119dc8c
Show file tree
Hide file tree
Showing 3 changed files with 241 additions and 1 deletion.
237 changes: 237 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
name: Release

on:
push:
tags:
- '*.*.*'

jobs:

Linux:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
- name: Building release
run: |
make linux_release
- name: Upload release file
uses: actions/upload-artifact@v1
with:
name: poetry-${{ github.ref }}-linux.tar.gz
path: releases/poetry-${{ github.ref }}-linux.tar.gz
- name: Upload checksum file
uses: actions/upload-artifact@v1
with:
name: poetry-${{ github.ref }}-linux.sha256sum
path: releases/poetry-${{ github.ref }}-linux.sha256sum

MacOS:
runs-on: macos-latest

steps:
- uses: actions/checkout@v1
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: "3.8"
- name: Install Poetry
run: |
python get-poetry.py --preview -y
source $HOME/.poetry/env
- name: Install dependencies
run: |
source $HOME/.poetry/env
poetry install --no-dev
- name: Preparing Python executables
run: |
curl -L https://github.com/sdispater/python-binaries/releases/download/2.7.17/python-2.7.17.macos.tar.xz -o python-2.7.17.tar.xz
curl -L https://github.com/sdispater/python-binaries/releases/download/3.4.10/python-3.4.10.macos.tar.xz -o python-3.4.10.tar.xz
curl -L https://github.com/sdispater/python-binaries/releases/download/3.5.9/python-3.5.9.macos.tar.xz -o python-3.5.9.tar.xz
curl -L https://github.com/sdispater/python-binaries/releases/download/3.6.8/python-3.6.8.macos.tar.xz -o python-3.6.8.tar.xz
curl -L https://github.com/sdispater/python-binaries/releases/download/3.7.5/python-3.7.5.macos.tar.xz -o python-3.7.5.tar.xz
curl -L https://github.com/sdispater/python-binaries/releases/download/3.8.0/python-3.8.0.macos.tar.xz -o python-3.8.0.tar.xz
tar -zxf python-2.7.17.tar.xz
tar -zxf python-3.4.10.tar.xz
tar -zxf python-3.5.9.tar.xz
tar -zxf python-3.6.8.tar.xz
tar -zxf python-3.7.5.tar.xz
tar -zxf python-3.8.0.tar.xz
- name: Build specific release
run: |
poetry run python sonnet make release --ansi -P "2.7:python-2.7.17/bin/python" -P "3.4:python-3.4.10/bin/python" -P "3.5:python-3.5.9/bin/python" -P "3.6:python-3.6.8/bin/python" -P "3.7:python-3.7.5/bin/python" -P "3.8:python-3.8.0/bin/python"
- name: Upload release file
uses: actions/upload-artifact@v1
with:
name: poetry-${{ github.ref }}-darwin.tar.gz
path: releases/poetry-${{ github.ref }}-darwin.tar.gz
- name: Upload checksum file
uses: actions/upload-artifact@v1
with:
name: poetry-${{ github.ref }}-darwin.sha256sum
path: releases/poetry-${{ github.ref }}-darwin.sha256sum

Windows:
runs-on: windows-latest

steps:
- uses: actions/checkout@v1
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: "3.8"
- name: Install Poetry
run: |
python get-poetry.py --preview -y
$env:Path += ";$env:Userprofile\.poetry\bin"
- name: Install dependencies
run: |
$env:Path += ";$env:Userprofile\.poetry\bin"
poetry install --no-dev
- name: Preparing Python executables
run: |
Invoke-WebRequest https://github.com/sdispater/python-binaries/releases/download/2.7.17/python-2.7.17.windows.tar.xz -O python-2.7.17.tar.xz
Invoke-WebRequest https://github.com/sdispater/python-binaries/releases/download/3.4.4/python-3.4.4.windows.tar.xz -O python-3.4.4.tar.xz
Invoke-WebRequest https://github.com/sdispater/python-binaries/releases/download/3.5.4/python-3.5.4.windows.tar.xz -O python-3.5.4.tar.xz
Invoke-WebRequest https://github.com/sdispater/python-binaries/releases/download/3.6.8/python-3.6.8.windows.tar.xz -O python-3.6.8.tar.xz
Invoke-WebRequest https://github.com/sdispater/python-binaries/releases/download/3.7.5/python-3.7.5.windows.tar.xz -O python-3.7.5.tar.xz
Invoke-WebRequest https://github.com/sdispater/python-binaries/releases/download/3.8.0/python-3.8.0.windows.tar.xz -O python-3.8.0.tar.xz
7z x python-2.7.17.tar.xz
7z x python-3.4.4.tar.xz
7z x python-3.5.4.tar.xz
7z x python-3.6.8.tar.xz
7z x python-3.7.5.tar.xz
7z x python-3.8.0.tar.xz
7z x python-2.7.17.tar
7z x python-3.4.4.tar
7z x python-3.5.4.tar
7z x python-3.6.8.tar
7z x python-3.7.5.tar
7z x python-3.8.0.tar
- name: Build specific release
run: |
poetry run python sonnet make release --ansi -P "2.7:python-2.7.17\python.exe" -P "3.4:python-3.4.4\python.exe" -P "3.5:python-3.5.4\python.exe" -P "3.6:python-3.6.8\python.exe" -P "3.7:python-3.7.5\python.exe" -P "3.8:python-3.8.0\python.exe"
- name: Upload release file
uses: actions/upload-artifact@v1
with:
name: poetry-${{ github.ref }}-win32.tar.gz
path: releases/poetry-${{ github.ref }}-win32.tar.gz
- name: Upload checksum file
uses: actions/upload-artifact@v1
with:
name: poetry-${{ github.ref }}-win32.sha256sum
path: releases/poetry-${{ github.ref }}-win32.sha256sum

Create Release:
needs: [Linux, MacOS, Windows]
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@master
- name: Download Linux release file
uses: actions/download-artifact@master
with:
name: poetry-${{ github.ref }}-linux.tar.gz
- name: Download Linux checksum file
uses: actions/download-artifact@master
with:
name: poetry-${{ github.ref }}-linux.sha256sum
- name: Download MacOS release file
uses: actions/download-artifact@master
with:
name: poetry-${{ github.ref }}-darwin.tar.gz
- name: Download MacOS checksum file
uses: actions/download-artifact@master
with:
name: poetry-${{ github.ref }}-darwin.sha256sum
- name: Download Windows release file
uses: actions/download-artifact@master
with:
name: poetry-${{ github.ref }}-win32.tar.gz
- name: Download Windows checksum file
uses: actions/download-artifact@master
with:
name: poetry-${{ github.ref }}-win32.sha256sum
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: false
prerelease: false
- name: Upload Linux release file asset
id: upload-release-asset
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: poetry-${{ github.ref }}-linux.tar.gz
asset_content_type: application/gzip
- name: Upload Linux checksum file asset
id: upload-release-asset
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: poetry-${{ github.ref }}-linux.sha256sum
asset_content_type: text/pain
- name: Upload MacOS release file asset
id: upload-release-asset
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: poetry-${{ github.ref }}-darwin.tar.gz
asset_content_type: application/gzip
- name: Upload MacOS checksum file asset
id: upload-release-asset
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: poetry-${{ github.ref }}-darwin.sha256sum
asset_content_type: text/pain
- name: Upload Windows release file asset
id: upload-release-asset
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: poetry-${{ github.ref }}-win32.tar.gz
asset_content_type: application/gzip
- name: Upload Windows checksum file asset
id: upload-release-asset
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_name: poetry-${{ github.ref }}-win32.sha256sum
asset_content_type: text/pain
- name: Install Poetry
run: |
python get-poetry.py --preview -y
$env:Path += ";$env:Userprofile\.poetry\bin"
- name: Install dependencies
run: |
source $HOME/.poetry/env
poetry install --no-dev
- name: Build project for distribution
run: |
source $HOME/.poetry/env
poetry run poetry build
- name: Publish to PyPI
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
run: |
source $HOME/.poetry/env
poetry run poetry publish
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ wheel:

linux_release:
docker pull quay.io/pypa/manylinux2010_x86_64
docker run --rm -t -i -v `pwd`:/io quay.io/pypa/manylinux2010_x86_64 /io/make-linux-release.sh
docker run --rm -i -v `pwd`:/io quay.io/pypa/manylinux2010_x86_64 /io/make-linux-release.sh

# run tests against all supported python versions
tox:
Expand Down
3 changes: 3 additions & 0 deletions sonnet
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,9 @@ class MakeReleaseCommand(Command):
subprocess.check_output(
[python, "-V"], stderr=subprocess.STDOUT, shell=WINDOWS
)
if version == "3.4" and WINDOWS:
continue

subprocess.check_output([python, "-m", "pip", "install", "pip", "-U"])
except subprocess.CalledProcessError:
raise RuntimeError("Python {} is not available".format(version))
Expand Down

0 comments on commit 119dc8c

Please sign in to comment.