Compare commits

...

35 Commits

Author SHA1 Message Date
Casey e094c5469d Merge pull request #769 from heroku/pip-pipenv-pin
Pin pip version used by pipenv
2018-10-11 14:50:52 -05:00
Casey Faist a7a5971372 changelog update 2018-10-10 09:23:54 -05:00
Casey Faist 45b78ab587 pin pip version used by pipenv 2018-10-09 14:46:49 -05:00
Casey 63e84aceb1 Merge pull request #760 from heroku/add-airflow-110-support
Add Apache Airflow 1.10 Support
2018-10-08 16:01:45 -05:00
Casey Faist eee8dd9a9e need to pass env var as export in test 2018-10-05 13:48:22 -05:00
Casey Faist 00e12b8ec2 add test/run case 2018-10-05 13:35:42 -05:00
Casey Faist b56b063dd5 add SLUGIFY_USES_TEXT_UNIDECODE support 2018-10-05 11:49:01 -05:00
Casey d3180d3245 Merge pull request #759 from heroku/update-travis
Update travis setup for Hatchet
2018-10-04 19:28:04 -05:00
Casey Faist 4778b1cb9d add sudo to travis install 2018-10-04 17:33:40 -05:00
Casey Faist 50a3d2d13e add shebang and update file permissions 2018-10-04 17:33:28 -05:00
Casey Faist 8c36a3a263 move heroku install to before_install 2018-10-04 17:33:16 -05:00
Casey Faist 882f54128b rememer to remove toolbelt 2018-10-04 17:33:08 -05:00
Casey Faist 576def4cde fix travis dependency blocker 2018-10-04 17:32:58 -05:00
Casey Faist 1be32ff09a add more unblocking setup 2018-10-04 17:32:35 -05:00
Casey 9c2bbd109f Merge pull request #741 from heroku/fix-python-check
Fix Python 3.6 message when using Python 3.7
2018-09-05 16:54:26 -04:00
Casey Faist e5d9ed259b changelog update 2018-09-05 16:24:02 -04:00
Casey Faist 285ca2b73d reword warning, add doc link 2018-09-05 16:21:42 -04:00
Casey Faist 5e4667686a add case for older python 3 install attempts 2018-09-05 16:21:42 -04:00
Casey Faist f9621add42 Update indentation levels and messaging
Fix indentation levels

more helpful messages about supported versions
2018-09-05 16:21:42 -04:00
Casey 567cf2c388 Merge pull request #742 from heroku/hatchet/yay
Hatchet/yay
2018-09-05 16:18:25 -04:00
Casey Faist c61e61c153 add missing newline 2018-09-05 15:53:42 -04:00
Casey Faist 3835aca004 use bundle syntax to rspec 2018-09-04 11:26:13 -04:00
Casey Faist 3733383ad6 add Rakefile 2018-09-04 11:26:13 -04:00
Casey Faist b53d211d01 add rake to gemfile 2018-09-04 11:26:13 -04:00
Casey Faist e5830fd50d correct travisyaml indenting 2018-09-04 11:26:13 -04:00
Casey Faist 2efe514b14 setup travis rspecting 2018-09-04 11:26:13 -04:00
schneems d442562352 Add retry gem 2018-09-04 11:26:13 -04:00
schneems ce14e1edf8 Integration tests with Hatchet 2018-09-04 11:26:13 -04:00
Casey 39d2cd6de8 Merge pull request #746 from heroku/changelog-dates
Start adding dates to changelog entries
2018-09-04 11:21:37 -04:00
Jeremy Morrell e42b725211 Start adding dates to changelog entries
It's occasionally useful to see at a glance when releases were pushed to understand what release might have caused a customer's issues. This back-fills dates for the last few months of releases and sets a precedent that can be followed in the future.
2018-09-04 10:02:34 -04:00
Casey d9456b6d90 Merge pull request #745 from heroku/fix-27-tests
update buildpack tests to expect success for all 2.7.15 builds
2018-09-04 09:58:07 -04:00
Casey Faist 61591594a2 typo fix 2018-08-24 18:19:07 -04:00
Casey Faist 13bca29e13 update tests to expect success for all 2.7.15 builds 2018-08-24 18:12:28 -04:00
Casey 95779d6711 Merge pull request #744 from edmorley/add-pr-template
Add a Pull Request template
2018-08-22 15:50:36 -04:00
Ed Morley 166b8be2c5 Add a Pull Request template
To try and help prevent the notification noise from PRs being opened
against upstream by mistake.
2018-08-22 18:29:03 +01:00
17 changed files with 260 additions and 50 deletions
+8
View File
@@ -0,0 +1,8 @@
<!-- Hi and welcome to the Heroku Python buildpack repository!
If you meant to open a PR against a fork instead of upstream, please adjust the base branch:
https://help.github.com/articles/changing-the-base-branch-of-a-pull-request/
Otherwise thank you in advance for your Pull Request - just remember to
include as much information as possible to help the reviewers :-)
-->
+4
View File
@@ -3,3 +3,7 @@ site
.DS_Store
/.envrc
repos/*
#Venv
buildpack/*
+36 -22
View File
@@ -1,25 +1,39 @@
language: bash
language: ruby
dist: trusty
sudo: required
rvm:
- 2.4.4
before_script:
- gem install bundler -v 1.16.2
- bundle exec rake hatchet:setup_travis
before_install:
- sudo bash etc/ci-setup.sh
jobs:
include:
- stage: "Bash linting (shellcheck)"
sudo: false
before_install:
- wget -c https://goo.gl/ZzKHFv -O - | tar -xvJ -C /tmp/
- PATH="/tmp/shellcheck-latest:$PATH"
script: make check
- stage: "Stack Tests"
services: docker
env: STACK=heroku-18
script: ./tests.sh
- stage: "Stack Tests"
services: docker
env: STACK=heroku-16
script: ./tests.sh
- stage: "Stack Tests"
services: docker
env: STACK=cedar-14
script: ./tests.sh
- stage: Bash linting (shellcheck)
sudo: false
before_install:
- wget -c https://goo.gl/ZzKHFv -O - | tar -xvJ -C /tmp/
- PATH="/tmp/shellcheck-latest:$PATH"
script: make check
- stage: Stack Unit Tests
services: docker
env: STACK=heroku-18
script: "./tests.sh"
- stage: Stack Unit Tests
services: docker
env: STACK=heroku-16
script: "./tests.sh"
- stage: Stack Unit Tests
services: docker
env: STACK=cedar-14
script: "./tests.sh"
- stage: Hatchet Integration
script: "bundle exec rspec"
env:
global:
- HATCHET_RETRIES=3
- IS_RUNNING_ON_CI=true
- HATCHET_APP_LIMIT=5
- secure: yjtlPE5FbVxTKnjUy/tZUBgSEf4qADD3QOxtgziuid73S0U/1IEXlMGFULsQzIjtlHKmHeywZqpVVEpthIH4RuT7uoX1Pb7SSM/g0T8fT3VoEFbFK1uYl0oZQbUS4Klxv9tPiumj8if3m6ULEGIz1X0wZcMOC0tMLwVCnwmap0E=
- secure: ZeFTHWwnpIKE9nAqs88ocmiQh7bKce84lilGm5J23nf3N6V4wNyLwqlkvsM008WGBCaOg9AUx7ZunasT0ANsR5gLP3eV2UUg7ILdRgV2Gy13eNRFheC4PHdN92RqQ3aKoqlIv2K999xlhVjod0NzhkQQXB6PddfQINbuU7ks6As=
+19 -5
View File
@@ -1,22 +1,36 @@
# Python Buildpack Changelog
# 138
# 141 (2018-10-10)
Switch to cautious upgrade for Pipenv install to ensure the pinned pip version
is used with Pipenv
# 140 (2018-10-09)
Add support for detecting SLUGIFY_USES_TEXT_UNIDECODE, which is required to
install Apache Airflow version 1.10 or higher.
# 139 (2018-10-08)
Improvements to Python install messaging
# 138 (2018-08-01)
Use stack image SQLite3 instead of vendoring
# 137
# 137 (2018-07-17)
Prevent 3.7.0 from appearing as unsupported in buildpack messaging.
# 136
# 136 (2018-06-28)
Upgrade to 3.6.6 and support 3.7.0 on all runtimes.
# 135
# 135 (2018-05-29)
Upgrade Pipenv to v2018.5.18.
# 134
# 134 (2018-05-02)
Default to 3.6.5, bugfixes.
+6
View File
@@ -0,0 +1,6 @@
source "https://rubygems.org"
gem "rspec"
gem "heroku_hatchet"
gem "rspec-retry"
gem "rake"
+71
View File
@@ -0,0 +1,71 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (5.2.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
concurrent-ruby (1.0.5)
diff-lcs (1.3)
erubis (2.7.0)
excon (0.62.0)
heroics (0.0.24)
erubis (~> 2.0)
excon
moneta
multi_json (>= 1.9.2)
heroku_hatchet (4.0.2)
excon (~> 0)
minitest-retry (~> 0.1.9)
platform-api (~> 2)
repl_runner (~> 0.0.3)
rrrretry (~> 1)
thor (~> 0)
threaded (~> 0)
i18n (1.1.0)
concurrent-ruby (~> 1.0)
minitest (5.11.3)
minitest-retry (0.1.9)
minitest (>= 5.0)
moneta (0.8.1)
multi_json (1.13.1)
platform-api (2.1.0)
heroics (~> 0.0.23)
moneta (~> 0.8.1)
rake (12.3.1)
repl_runner (0.0.3)
activesupport
rrrretry (1.0.0)
rspec (3.8.0)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-core (3.8.0)
rspec-support (~> 3.8.0)
rspec-expectations (3.8.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-mocks (3.8.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-retry (0.6.1)
rspec-core (> 3.3)
rspec-support (3.8.0)
thor (0.20.0)
thread_safe (0.3.6)
threaded (0.0.4)
tzinfo (1.2.5)
thread_safe (~> 0.1)
PLATFORMS
ruby
DEPENDENCIES
heroku_hatchet
rake
rspec
rspec-retry
BUNDLED WITH
1.16.3
+1
View File
@@ -0,0 +1 @@
require 'hatchet/tasks'
+16 -2
View File
@@ -8,10 +8,24 @@ if [ ! "$SKIP_PIP_INSTALL" ]; then
# Install dependencies with Pip.
puts-step "Installing requirements with pip"
# Set PIP_EXTRA_INDEX_URL
if [[ -r $ENV_DIR/PIP_EXTRA_INDEX_URL ]]; then
# Set Pip env vars
# This reads certain environment variables set on the Heroku app config
# and makes them accessible to the pip install process.
#
# PIP_EXTRA_INDEX_URL allows for an alternate pypi URL to be used.
if [[ -r "$ENV_DIR/PIP_EXTRA_INDEX_URL" ]]; then
PIP_EXTRA_INDEX_URL="$(cat "$ENV_DIR/PIP_EXTRA_INDEX_URL")"
export PIP_EXTRA_INDEX_URL
mcount "buildvar.PIP_EXTRA_INDEX_URL"
fi
set +e
# Set SLUGIFY_USES_TEXT_UNIDECODE, required for Airflow versions >=1.10
if [[ -r "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE" ]]; then
SLUGIFY_USES_TEXT_UNIDECODE="$(cat "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE")"
export SLUGIFY_USES_TEXT_UNIDECODE
mcount "buildvar.SLUGIFY_USES_TEXT_UNIDECODE"
fi
set +e
+18 -4
View File
@@ -20,7 +20,6 @@ if [[ -f Pipfile.lock ]]; then
export SKIP_PIPENV_INSTALL=1
export SKIP_PIP_INSTALL=1
fi
fi
fi
fi
@@ -35,16 +34,31 @@ if [ ! "$SKIP_PIPENV_INSTALL" ]; then
# Skip pip install, later.
export SKIP_PIP_INSTALL=1
# Set PIP_EXTRA_INDEX_URL
if [[ -r $ENV_DIR/PIP_EXTRA_INDEX_URL ]]; then
# Set Pip env vars
# This reads certain environment variables set on the Heroku app config
# and makes them accessible to the pip install process.
#
# PIP_EXTRA_INDEX_URL allows for an alternate pypi URL to be used.
if [[ -r "$ENV_DIR/PIP_EXTRA_INDEX_URL" ]]; then
PIP_EXTRA_INDEX_URL="$(cat "$ENV_DIR/PIP_EXTRA_INDEX_URL")"
export PIP_EXTRA_INDEX_URL
mcount "buildvar.PIP_EXTRA_INDEX_URL"
fi
# Set SLUGIFY_USES_TEXT_UNIDECODE, required for Airflow versions >=1.10
if [[ -r "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE" ]]; then
SLUGIFY_USES_TEXT_UNIDECODE="$(cat "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE")"
export SLUGIFY_USES_TEXT_UNIDECODE
mcount "buildvar.SLUGIFY_USES_TEXT_UNIDECODE"
fi
export PIPENV_VERSION="2018.5.18"
# Install pipenv.
/app/.heroku/python/bin/pip install pipenv==$PIPENV_VERSION --upgrade &> /dev/null
# Due to weird old pip behavior and pipenv behavior, pipenv upgrades pip
# to latest if only --upgrade is specified. Specify upgrade strategy to
# avoid this eager behavior.
/app/.heroku/python/bin/pip install pipenv==$PIPENV_VERSION --upgrade --upgrade-strategy only-if-needed &> /dev/null
# Install the dependencies.
if [[ ! -f Pipfile.lock ]]; then
+27 -8
View File
@@ -12,17 +12,34 @@ if [[ $PYTHON_VERSION =~ ^python-2 ]]; then
puts-warn "The latest version of Python 2 is $LATEST_2 (you are using $PYTHON_VERSION, which is unsupported)."
puts-warn "We recommend upgrading by specifying the latest version ($LATEST_2)."
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
else
echo " Using supported version of Python 2 ($PYTHON_VERSION)"
fi
else
if [[ $PYTHON_VERSION =~ ^python-3.7 ]] && [[ "$PYTHON_VERSION" != "$LATEST_37" ]]; then
puts-warn "The latest version of Python 3.7 is $LATEST_37 (you are using $PYTHON_VERSION, which is unsupported)."
puts-warn "We recommend upgrading by specifying the latest version ($LATEST_37)."
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
else
if [[ "$PYTHON_VERSION" != "$LATEST_36" ]]; then
puts-warn "The latest version of Python 3.6 is $LATEST_36 (you are using $PYTHON_VERSION, which is unsupported)."
puts-warn "We recommend upgrading by specifying the latest version ($LATEST_36)."
if [[ $PYTHON_VERSION =~ ^python-3 ]]; then
if [[ $PYTHON_VERSION =~ ^python-3.7 ]]; then
if [[ "$PYTHON_VERSION" != "$LATEST_37" ]]; then
puts-warn "The latest version of Python 3.7 is $LATEST_37 (you are using $PYTHON_VERSION, which is unsupported)."
puts-warn "We recommend upgrading by specifying the latest version ($LATEST_37)."
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
else
echo " Using supported version of Python 3.7 ($PYTHON_VERSION)"
fi
else
if [[ $PYTHON_VERSION =~ ^python-3.6 ]]; then
if [[ "$PYTHON_VERSION" != "$LATEST_36" ]]; then
puts-warn "The latest version of Python 3.6 is $LATEST_36 (you are using $PYTHON_VERSION, which is unsupported)."
puts-warn "We recommend upgrading by specifying the latest version ($LATEST_36)."
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
else
echo " Using supported version of Python 3.6 ($PYTHON_VERSION)"
fi
else
puts-warn "Heroku supports runtime versions $LATEST_37, $LATEST_36 and $LATEST_2."
puts-warn "You are using $PYTHON_VERSION, which is unsupported."
puts-warn "We recommend upgrading by specifying the default supported version ($LATEST_36)."
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
fi
fi
fi
fi
@@ -49,6 +66,7 @@ if [ -f .heroku/python-version ]; then
fi
fi
if [ ! "$SKIP_INSTALL" ]; then
puts-step "Installing $PYTHON_VERSION"
@@ -71,6 +89,7 @@ if [ ! "$SKIP_INSTALL" ]; then
hash -r
fi
# If Pip isn't up to date:
if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_UPDATE* ]]; then
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env bash
sudo apt-get -qq update
sudo apt-get install software-properties-common
curl --fail --retry 3 --retry-delay 1 --connect-timeout 3 --max-time 30 https://cli-assets.heroku.com/install-ubuntu.sh | sh
+5
View File
@@ -0,0 +1,5 @@
{
"python": [
"heroku/python-getting-started"
]
}
+3
View File
@@ -0,0 +1,3 @@
---
- - "./repos/python/python-getting-started"
- f56b90499ec11e1c9576da2f8c7331300e189db3
+10
View File
@@ -0,0 +1,10 @@
require_relative '../spec_helper'
describe "Python!!!!!!!!!!!" do
it "🐍" do
Hatchet::Runner.new('python-getting-started', stack: DEFAULT_STACK).deploy do |app|
expect(app.output).to match(/Installing pip/)
expect(app.run('python -V')).to match(/3.6.6/)
end
end
end
+23
View File
@@ -0,0 +1,23 @@
ENV['HATCHET_BUILDPACK_BASE'] = 'https://github.com/heroku/heroku-buildpack-python.git'
require 'rspec/core'
require 'rspec/retry'
require 'hatchet'
require 'date'
RSpec.configure do |config|
config.full_backtrace = true
config.verbose_retry = true # show retry status in spec process
config.default_retry_count = 2 if ENV['IS_RUNNING_ON_CI'] # retry all tests that fail again
config.expect_with :rspec do |c|
c.syntax = :expect
end
end
if ENV['TRAVIS']
# Don't execute tests against "merge" commits
exit 0 if ENV['TRAVIS_PULL_REQUEST'] != 'false' && ENV['TRAVIS_BRANCH'] == 'master'
end
DEFAULT_STACK = 'heroku-16'
+1
View File
@@ -0,0 +1 @@
apache-airflow==1.10
+7 -9
View File
@@ -1,5 +1,12 @@
#!/usr/bin/env bash
testAirflow() {
export SLUGIFY_USES_TEXT_UNIDECODE="yes"
compile "airflow"
assertCaptured "apache-airflow==1.10"
assertCapturedSuccess
}
testPipenv() {
compile "pipenv"
assertCapturedSuccess
@@ -81,18 +88,9 @@ testPylibmc() {
}
testPython2() {
if [[ "$STACK" == "heroku-16" ]] || [[ "$STACK" == "cedar-14" ]]; then
compile "python2"
assertCaptured "python-2.7.15"
assertCapturedSuccess
fi
}
testNoPython2() {
if [[ "$STACK" == "heroku-18" ]]; then
compile "python2"
assertCapturedError
fi
}
testPython3() {