diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000000..6382ce7fdfc --- /dev/null +++ b/.github/workflows/release.yml @@ -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/upload-release-asset@v1.0.1 + 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/upload-release-asset@v1.0.1 + 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/upload-release-asset@v1.0.1 + 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/upload-release-asset@v1.0.1 + 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/upload-release-asset@v1.0.1 + 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/upload-release-asset@v1.0.1 + 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 diff --git a/Makefile b/Makefile index 38e4208bd32..f9ce386aebf 100644 --- a/Makefile +++ b/Makefile @@ -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: diff --git a/sonnet b/sonnet index ca08e29557f..dc4b541275d 100755 --- a/sonnet +++ b/sonnet @@ -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))