Commit Graph

72 Commits

Author SHA1 Message Date
rht 83424381cd circleci: Use alias for run backend tests. 2018-12-05 11:48:41 -08:00
rht c476f0eca0 circleci: Use alias for install dependencies. 2018-12-05 11:48:41 -08:00
rht 2fe128d8e9 circleci: Use alias for create cache directories. 2018-12-05 11:48:41 -08:00
Vishnu Ks a46af418d4 circleci: Add support for Ubuntu Bionic. 2018-06-01 18:02:50 -07:00
Greg Price e891078d94 circleci: Bump the Xenial and Trusty base images to fresh builds.
This will save us a bit of time running apt upgrades at the start of
each build; looks like that's been about 15-20s for recent builds.
2018-06-01 16:52:18 -07:00
Tim Abbott eee221123f CircleCI: Add apt-get update. 2018-05-10 14:27:35 -07:00
Puneeth Chaganti 26dfa3266b ci: Make cache keys depend on checksums of dependency manifests
Caches in Circle are immutable -- even if a path in a cache changes in builds
after the cache was created, the cache is not updated if it already exists. This
was making the zulip-venv-cache and zulip-npm-cache directories useless on
Circle.

This commit changes the cache keys to depend on the checksums of the dependency
manifests (requirements/{dev,thumbor}.txt, package.json and yarn.lock). This
would ensure that the caches are updated when the environments change. It may
result in the occasional build being "uncached" -- when a dependency manifest
changes -- but builds without such changes will be much faster, and such builds
are a majority.
2018-04-16 16:49:41 -07:00
Priyank d4b88e86cc yarn: Revert back to v0.27.5.
Revert yarn version back due to some issue with new version that causes
permission issues in ~/.config/yarn directory.

Related discussion: https://chat.zulip.org/#narrow/stream/21-provision-help/topic/EACCES.3A.20permission.20denied.2C.20scandir.20'.2Fhome.2Fvagrant.2F.2Econfig.2Fya
2018-04-12 10:18:59 -07:00
Priyank ee078c372f install-node: Upgrade node, yarn, and nvm.
node -> v8.9.4
yarn -> 1.5.1
nvm -> 0.33.8

Also updates a test in timerender.js which depends on time
provided by node which is now changed in newer release.

Some changes have been made in circeci script, we just create ~/.config
directory and chown it to circleci user so installing new version of yarn
does not cause any ci failure on circleci during provision.
2018-04-09 13:56:48 -07:00
Greg Price badbd744f6 travis: Cut webhook config pointing at zulipbot.
We haven't actually been using this zulipbot feature for a long time
(haven't applied the `travis updates` label which it looks for.)
Rather than port the config to CircleCI, just cut it for now; we can
always add something like it back if we start using it.
2018-01-31 11:07:38 -08:00
Greg Price ba7d06eb12 circleci: Bump the Trusty image to one from the new Dockerfile.
The new Dockerfile is barely different from the old and shouldn't
matter, but in the unlikely case it does, best to find out promptly.
2018-01-31 10:53:13 -08:00
Greg Price 1d8ce4bdad circleci: Upload to codecov on xenial too.
Only takes about 11 seconds; and there may be some codepaths that are
exercised on one release and not the other.
2018-01-31 10:53:13 -08:00
Vishnu Ks f8227dc0c3 circleci: Set working_directory to zulip.
Doesn't do much except that when you ssh
into circleci you get a directory called
zulip instead of repo.
2018-01-31 10:53:13 -08:00
Vishnu Ks d6ffd4d220 circleci: Run xenial py3.5 backend tests alongside trusty. 2018-01-31 10:53:13 -08:00
Vishnu Ks 57d2d3ada5 circleci: Upload coverage reports to codecov.io.
The Travis config does this by a `pip install codecov` in setup and
running the resulting `codecov` command at the end.  That risks
confusion because it makes the library look like something we might
be using *during* the tests to collect coverage information.
Instead, install and run codecov together at the end.

(The docs also suggest using their bash-based uploader instead;
but following those directions seems to result in coverage.xml
not getting included (maybe not even built), and no coverage data
getting uploaded for Python source files, only JavaScript.  Not
sure why that is, but using the pip package is fine.)

Also, because this step is inherently about talking to a
third-party service whose reliability we can't control, and because
it's purely a reporting step that happens after our actual test
suite has succeeded, don't fail if it fails; just print a message.
(I'd prefer a somewhat louder message, like turning that step
yellow or something in the Circle web UI, but Circle doesn't offer
an option like that.  If the coverage reports start consistently
failing for some reason, then if we're actually reading them we'll
notice anyway.)

[greg: Edited step name and error message; wrote this commit message.]
2018-01-29 18:31:53 -08:00
Vishnu Ks ad7c8237b9 circleci: Run frontend tests in circleci. 2018-01-08 19:38:23 -08:00
Greg Price a0ea206379 circleci: cut two TODO comments better tracked elsewhere
These are part of the checklist in #7748.
2018-01-08 19:38:23 -08:00
Vishnu Ks f743eeb1eb circleci: Set up locale en_US.UTF-8.
See comment for motivation and what's known.

[greg: Added comment, summarizing Vishnu's results from testing.]
2017-12-20 19:18:29 -08:00
Greg Price 9ce080ebb1 circleci: Remove Circle-created gitconfig file.
[Investigation by hackerkid.]
2017-12-18 21:42:00 -08:00
Greg Price ea589e8283 circle: Bump base image version.
This new base image just comes from me doing a fresh `docker build`
and uploading the result.  That gives it fresher versions of our
APT dependencies than the image I built a couple of months ago,
speeding up provision by giving it less to install.
2017-12-01 17:16:51 -08:00
Greg Price 58db3c13cb circle: Bump cache version.
This will store a fresh version of the cached trees to the
new ...-base2 keys, and then the *next* build will use those
instead of the ...-base1 keys.
2017-12-01 16:11:25 -08:00
Greg Price b9990941d6 circle: Draft a config for running our builds in CircleCI.
From just my experience attempting this change, I've been impressed
with the very fast turnaround in CircleCI for a change -- from `git
push` to the build starting is usually just a couple of seconds.

It also looks like we get much clearer control over the caching
system, and the setup of the environment via a Docker image of our
choice, which can help avoid most of the several minutes Travis takes
to set up our environment before it actually starts running the tests
themselves.

Plus it supports fine-grained parallelism, e.g. by test file:
https://circleci.com/docs/2.0/parallelism-faster-jobs/

So we can probably get much faster builds by making this switch.
Because the environment is much more transparent and even under
our control, I'm also hopeful for more reliable builds.
2017-12-01 15:19:57 -08:00