Commit Graph

62 Commits

Author SHA1 Message Date
Ed Morley 452443d420 Remove support for the Cedar-14 stack (#1110)
Since the stack is end of life and builds have been disabled:
https://devcenter.heroku.com/changelog-items/1943

There are only two temporarily exempted customers using Python, who
can switch to the Cedar-14 support branch if they still need to build
their Python apps (most of which haven't been built recently).

Closes @W-8054727@.
2020-11-10 13:58:33 +00:00
Ed Morley fcf696b835 Add support for Heroku-20 (#968)
This adds support for the upcoming Heroku-20 stack.

The Heroku-20 Dockerfile is identical to that for Heroku-18, other
than the base image, and stack-related env var changes.

The initial Python versions made available will be those in:
https://devcenter.heroku.com/articles/python-support#supported-runtimes
https://devcenter.heroku.com/articles/python-support#supported-pypy-runtimes

...minus CPython 2.7, since it's EOL.

Which are:
* `python-3.6.12`
* `python-3.7.9`
* `python-3.8.6`
* `python-3.9.0`
* `pypy2.7-7.3.2`
* `pypy3.6-7.3.2`

Note: Unlike CPython 2.7, the PyPy 2.7 branch is still supported:
https://doc.pypy.org/en/latest/faq.html#how-long-will-pypy-support-python2

In addition, I've generated binaries for each patch release immediately
prior to the latest versions (with the exception of 3.9.0, since there
isn't one), otherwise it's not possible to run the "out of date Python"
warning tests.

The binaries were generated using the process here:
https://github.com/heroku/heroku-buildpack-python/blob/main/builds/README.md

Specifically:

```
make deploy-runtimes STACKS='heroku-20' \
  RUNTIMES='python-3.6.11 python-3.6.12 python-3.7.8 python-3.7.9 python-3.8.5 python-3.8.6 python-3.9.0 pypy2.7-7.3.1 pypy2.7-7.3.2 pypy3.6-7.3.1 pypy3.6-7.3.2' \
  ENV_FILE=...
```

Binaries for the GDAL/GEOS/PROJ feature have not been generated, since
it's deprecated and due for removal shortly:
https://help.heroku.com/D5INLB1A/python-s-build_with_geo_libraries-legacy-feature-is-now-deprecated

Note: Like the Python 3.9.0 release, this uses the new S3 bucket, so
apps will need to be using a recent version of the buildpack in order
to build on Heroku-20:
https://devcenter.heroku.com/articles/python-support#checking-the-python-buildpack-version

Closes @W-7485877@.
2020-10-07 19:44:33 +01:00
Ed Morley 1972e6094e Travis: Switch to Ubuntu 20.04 base image (#1051)
Since it's a smaller, more up to date image, with fewer services
starting at boot, improving start times:
https://blog.travis-ci.com/2020-08-10-focal-build-environment
https://docs.travis-ci.com/user/reference/focal/

Closes @W-7951908@.

[skip changelog]
2020-08-12 22:48:48 +01:00
Ed Morley 95fca53d38 Travis: Correctly skip Hatchet on PRs from forks (#1045)
The Hatchet run requires a valid Heroku login, the credentials for which
are set via Travis secure environment variables, which by design are not
revealed to PRs from forks.

The previous conditional wasn't working as intended - the Hatchet job
was still being triggered for forks from PRs.

The new conditional fixes this, and also means that forks could set
their own credentials via Travis environment variables if they wanted
a way to run the tests in CI on their own repo.

See:
https://docs.travis-ci.com/user/conditions-v1

Fixes #1019.
Closes @W-7918482@.

[skip changelog]
2020-08-12 11:17:38 +01:00
Ed Morley ff4f677435 Travis: Remove Hatchet credentials from .travis.yml (#1047)
Since they are now set via the Travis repository level secrets feature
instead. This both works around the Travis bug seen in #1045, and also
means its easier to set up Travis on forks, since otherwise the
`.travis.yml` secrets would overwrite the global secrets.

As part of this move the test account used has also been changed, and
will be documented here:
https://github.com/heroku/languages-team/blob/main/guides/create_test_users_for_ci.md#known-usernames

Closes @W-7949880@.

[skip changelog]
2020-08-12 10:49:57 +01:00
Ed Morley 99c1027cb2 Tests: Update Hatchet dependencies (#1036)
* `bundler update`
* Ruby 2.6 -> 2.7
* Remove unnecessary bundler version downgrade

Of note this picks up:
https://github.com/grosser/parallel_split_test/pull/20

@W-7930909@

[skip changelog]
2020-08-10 11:29:34 +01:00
Ed Morley 46d3d2b042 Travis: Move hatchet ci:setup to before_script (#1035)
So that any failures during `hatchet ci:setup` cause the build to fail
early, rather than try to proceed with running the Hatchet tests.

@W-7929878@

[skip changelog]
2020-08-07 17:53:33 +01:00
Ed Morley 81874dad47 Replace 'master' branch references with 'main' (#1029)
For #1028.
2020-08-03 17:31:08 +01:00
Ed Morley aa8a0f43bb Travis: Reduce end to end testing time (#1022)
This change (along with #1021, which skips an unnecessary docker build)
reduces the wall clock time from ~22 minutes to ~6 minutes. Even with
the additional overhead from increased parallelism, the combined job
duration (~50 minutes) has not increased due to the other time savings.

Changes:

- for the unit tests, each stack is now tested in its own job and so
  tested in parallel
- the use of Travis stages has been removed, since by design it blocks
  later tasks on earlier stages having completed - reducing parallelism
  unnecessarily for this use case
- all jobs except for the Hatchet job now use Travis' `minimal` image,
  and no longer install redundant Ruby + bundler
- the `sudo: {required,false}` references have been removed, since
  Travis no longer supports its non-sudo container infrastructure so
  ignores that option

Fixes #1018.

[skip changelog]
2020-07-28 16:18:45 +01:00
Ed Morley 93a5b4021d Tests: Support running only a subset of the test suites (#1021)
Previously `make test` ran all unit test suites against all stacks, which
would take up to an hour locally. This could be sped up by using one of
the stack-specific targets (such as `make test-heroku-18`), however
there was still no way to only run one of the test suites.

Now `make test` can be controlled more precisely using optional `STACK`
and `TEST_CMD` arguments, eg:

`make test STACK=heroku-16 TEST_CMD=test/versions`

Travis has now been made to use this feature, which unblocks future
Travis speedups (such as splitting the jobs up further in #1018) and
means on Travis the correct Docker image is now used (see #958).

The `tests.sh` script has been removed since it's unused after #839 and
redundant given the make targets.

Fixes #958.
Fixes #1020.
2020-07-28 15:08:20 +01:00
Joe Kutner c78ffd5ac4 Prevent Hatchet on forked PRs [changelog skip] (#966)
* Update travis conditional for hatchet to check for HEROKU_API_ env vars
[changelog skip]

* remove check to skip hatchet in travis in favor of better travis config
2020-04-27 09:15:38 -05:00
Richard Schneeman a06b536109 Add Hatchet Regression Tests (#969)
I went through all the tests in the Ruby buildpack and cataloged what I think can be generalized between languages to prevent regressions. This PR add tests for these cases:

* Test CI deploys run tests and use the cache [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/f488bd53c7ff0b78e17c2405166cbd4a3af75ee2/spec/hatchet/ci_spec.rb#L36)]
* Test cache for regular deploys is used on repeated deploys (This was already tested on the Python buildpack, I moved it) [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/e34c583c139911d059f5627bb25125707288f053/spec/hatchet/stack_spec.rb#L21-L25)]
    * Test modifying a requirement clears the cache appropriately (This was already tested on the Python buildpack, I moved it)
* Test deploying the getting started guide works [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/424a7245e2da86845a20d58a9482bcf2a00c3a8f/spec/hatchet/getting_started_spec.rb#L5)]
* Test that all paths set by the buildpack are absolute instead of relative [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/249d3c1a4e97068f8fd016f10fa0839709d95658/spec/hatchet/rails5_spec.rb#L68])
* Test upgrading stack invalidates the cache [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/f488bd53c7ff0b78e17c2405166cbd4a3af75ee2/spec/hatchet/stack_spec.rb#L3)]
* Test that builds fail when a bad version is specified [[reference test](https://github.com/heroku/heroku-buildpack-ruby/blob/249d3c1a4e97068f8fd016f10fa0839709d95658/spec/hatchet/ruby_spec.rb#L5)]


In addition to that I've also got a CNB test with `pack-build` with the getting started app, but since python isn't `cnb` capable yet I didn't add one.
2020-04-27 08:26:42 -05:00
Joe Kutner 97f783ce96 Update travis config [changelog skip] (#963)
* Update travis config to only setup hatchet when running hatchet [changelog skip]

Fix a bug in the hatchet tests, and allow previous builds to finish before running the next test

* Add logging when skipping hatchet tests

Only skip hatchet tests on a forked PR

* Build on Travis only for master branch

* Upgrade from trusty to bionic on Travis
2020-04-23 19:55:05 -05:00
Casey Faist 01b0c1b0db no longer reference unused build var on travis 2020-03-26 12:40:53 -04:00
Casey Faist f31e9fa835 Correct failing smart requirement steps 2019-12-06 09:20:28 -05:00
Casey Faist 03c12e8081 update to use staging binaries env var 2019-10-14 12:29:12 -07:00
Casey Faist ce6657d5fe use correct override var BUILDPACK_VENDOR_URL instead of vendor_url 2019-10-08 09:54:17 -07:00
Casey Faist 74bc1d4049 pass vendor url to docker container 2019-09-30 15:22:29 -07:00
Casey Faist 7c82017a0e run each matrix item twice, with VENDOR_URL update 2019-09-30 13:19:38 -07:00
Casey Faist 6a8aa1e2b0 update travis matrix to change vendor url 2019-09-30 11:15:09 -07:00
Casey Faist 006ea77641 address issues found in review 2019-09-11 11:57:31 -07:00
Casey Faist a239fde78c clarify naming for travis docker tags and correct typo 2019-09-10 18:50:50 -07:00
Casey Faist 158a3e28a8 update travis to match dockerfile locations 2019-09-10 18:26:14 -07:00
Casey Faist 9031333ef4 change travis to bionic 2019-09-10 18:20:25 -07:00
Casey Faist a379779d43 add missing --tag option 2019-09-10 17:52:54 -07:00
Casey Faist de1696bb02 split out build and run script steps 2019-09-10 17:33:44 -07:00
Casey Faist 77b012dd6f add tags to docker scripts to pass images to test run cases 2019-09-10 17:22:53 -07:00
Casey Faist 3d65278d61 add multiple script steps to trigger matrix across docker files 2019-09-10 17:13:41 -07:00
Casey Faist 59544ee799 use keyword dockerfile to trigger matrix 2019-09-10 17:05:07 -07:00
Casey Faist 34a631021c update test runs to matrix 2019-09-10 16:36:13 -07:00
Casey Faist 6a4ab8646a add ci nodes to test run 2019-09-10 16:04:11 -07:00
Casey Faist 7d8ea3d266 add stack value back in 2019-09-10 15:32:59 -07:00
Casey Faist 0161b80a2b correct hatchet setup 2019-09-10 15:15:29 -07:00
Casey Faist 7eac72199e parallel test runs per stack 2019-09-10 15:09:43 -07:00
Casey Faist df779aaa9a reorganize tests to stage per stack 2019-09-10 14:56:08 -07:00
Casey Faist bbdbebbc87 shell command only needed when using make, remove 2019-09-10 13:50:09 -07:00
Casey Faist 32cf8a8681 fix dockerfile location typo 2019-09-10 13:44:22 -07:00
Casey Faist 1479ab375e ensure tabs are spaces 2019-09-10 13:33:55 -07:00
Casey Faist b156f237a2 breakout jobs 2019-09-10 12:08:31 -07:00
Casey Faist 751413168b remove cedar 14 travis tests 2019-08-21 15:44:46 -07:00
Casey Faist 797652a75d new runtimes and travis test updates 2019-01-31 14:46:42 -05:00
Casey Faist 12e3a7f3e7 add HATCHET_DEPLOY_STRATEGY env var 2018-11-13 13:48:38 -06:00
Casey Faist e7da63f722 update to newer hatchet integration 2018-11-13 13:05:31 -06:00
Casey Faist 4778b1cb9d add sudo to travis install 2018-10-04 17:33:40 -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 3835aca004 use bundle syntax to rspec 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