Code Monkey home page Code Monkey logo

circleci-images's Introduction

Deprecation Notice: the legacy Convenience Images (the images in this repo) are now deprecated. They have been replaced by the next-gen Convenience Images. We will no longer be accepting PRs for features or improvements to these images. Instead, please migrate over to the new images. You can view and ask questions about the deprecation on CircleCI Discuss. You can browse next-gen Convenience Images and what's available via the CircleCI Developer Hub. You can find the repos for next-gen images here.


CircleCI Images CircleCI Build Status GitHub license CircleCI Community

Stay informed about CircleCI image changes/announcements

As part of regular maintenance, changes are occasionally made to various images, from updating images' contents, to changing how image variants are tagged. With the exception of bugfixes or security patches, these changes will always be announced in advance. Changes are posted in the Announcements section of CircleCI Discuss; relevant posts will always have a convenience-images tag:

By creating a Discuss account, you can subscribe to these posts, in order to receive notifications via email:

https://discuss.circleci.com

Overview

A set of convenience images that work better in context of CI. This repo contains the official set of images that CircleCI maintains. It contains language as well as services images:

  • Language images (e.g. ruby, python, node) are images targeted for common programming languages with the common tools pre-installed. They primarily extend the official images and install additional tools (e.g. browsers) that we find very useful in context of CI.
  • Service images (e.g. mongo, postgres) are images that have the services pre-configured with development/CI mode. They also primarily extend the corresponding official images but with sensible development/CI defaults (e.g. disable production checks, default to nojournal to speed up tests)

Official images

We extend Docker Official Repositories in order to start with the same consistent set of images.

This allows us to make things more standardized. From our scripts for checking for updates, the type of OS on the base image, and so forth. We can recommend using apt-get install rather than documenting various constraints depending on which stack you're using.

The official images on Docker Hub are curated by Docker as their way to provide convenience images which address both development and production needs. Since Docker sponsors a dedicated team responsible for reviewing each of the official images, we can take advantage of the community maintaining them independently without trying to track all of the sources and building automations for each one. For now we can take a shortcut, without building this infrastructure.

Finally, our convenience images are augmenting these official images, by adding some missing packages, that we install ourselves for common dependencies shared for the CI environment.

All of the official images on Docker Hub have an "_" for the username, for example: https://hub.docker.com/_/ruby

You can view all of the officially supported images here: https://hub.docker.com/explore/

CircleCI supported images are here: https://hub.docker.com/r/circleci/

To view the Dockerfiles for CircleCI images, visit the CircleCI-Public/circleci-dockerfiles repository.

How to add a bundle with images

A bundle is a top-level subfolder in this repository (e.g. postgres).

For the image Dockerfiles, we use a WIP templating mechanism. Each bundle should contain a generate-images script for generating the Dockerfiles. You can use postgres/generate-images and node/generate-images for inspiration. The pattern is executable script of the following sample:

#!/bin/bash

# the base image we should be tracking. It must be a Dockerhub official repo
BASE_REPO=node

# Specify the variants we need to publish.  Language stacks should have a
# `browsers` variant to have an image with firefox/chrome pre-installed
VARIANTS=(browsers)

# By default, we don't build the alpine images, since they are typically not dev friendly
# and makes our experience inconsistent.
# However, it's reasonable for services to include the alpine image (e.g. psql)
#
# uncomment for services

#INCLUDE_ALPINE=true

# if the image needs some basic customizations, you can embed the Dockerfile
# customizations by setting $IMAGE_CUSTOMIZATIONS. Like the following
#

IMAGE_CUSTOMIZATIONS='
RUN apt-get update && apt-get install -y node
'

# boilerplate
source ../shared/images/generate.sh

By default, the script uses ./shared/images/Dockerfile-basic.template template which is most appropriate for language based images. Language image variants (e.g. -browsers images that have language images with browsers installed) use the ./shared/images/Dockerfile-${variant}.template.

Service image should have their own template. The template can be kept in <bundle-name>/resources/Dockerfile-basic.template—like ./mongo/resources/Dockerfile-basic.template.

To build all images—push a commit with [build-images] text appearing in the commit message.

Also, add the bundle name to in Makefile BUNDLES field.

Development

This section is a work in progress

This project's build system is managed with Make. It generates Dockerfiles and builds images based off of upstream Docker Library base images, variant images that upstream may have, variant images that CircleCI provides, as well as tools common for testing projects in various programming languages.

Generate Dockerfiles

Use make <base-image>/generate_images to generate of all of the Dockerfiles for a specific base image. For example, to generate all of the Dockerfils for the circleci/golang image, you would run make golang/generate_images.

Use make images to generate Dockerfiles for every base image we have. This process is fairly fast with decent Internet connection.

Once generated, Dockerfiles for each image will be in the images folder for that base image (e.g. ./python/images/).

Build images

Build a single Dockerfile

You can build a single image, with a throway name and the docker build command.

docker build -t <throw-away-img-name> <directory-containing-dockerfile>

Here's how you would build the "regular" Go v1.11 CircleCI image:

docker build -t test/golang:latest golang/images/1.11.0/

The image name and tag (test/golang:latest) can be whatever name you want, it's just for local dev and can be deleted.

Build all Dockerfiles for a base image

Use make <base-image>/publish_images to docker build all of the Dockerfiles for that base image. There's a couple things to note here:

  1. Each base image has a lot of images. Building them will end up taking several GBs of disk space, and can take quite a while to run. Make sure you want to do this before you do it.
  2. The build script will also try to run docker push. If you don't work for CircleCI, this will fail and that's okay. It's safe to ignore.

Build all Dockerfiles for every base image

Don't do it. If you have an Ultrabook laptop, it won't be happy. If you really want to do it, look at the Makefile.

Testing

There is automated testing for every variant of every image!

Tests run with dgoss.

Tests are platform-specific (e.g., PHP and Android have their own distinct sets of tests)—see the goss.yaml file in each image directory.

The testing logic is currently in shared/images/build.sh, as it is nestled between the existing automated docker build and docker push functionality. In short, for a particular variant of an image, we make a copy of its Dockerfile, append some Dockerfile syntax to add a custom entrypoint that allows us to execute tests against the running container, build a special, temporary version of the image (added time is insignificant, as most of the Dockerfile steps are cached), and run the tests.

A particular variant is pushed to Docker Hub only if tests pass; if not, the same process restarts for the next variant, etc.

Tests run twice: once for stdout, and again, with JUnit formatting, for store_test_results (after some post-processing due to how goss outputs JUnit XML...). With test runtimes at essentially zero seconds, running everything twice has a negligible effect on job runtime.

By default, a given branch will push images to the ccitest Docker Hub org, with the branch name appended to all image tags. Once a given branch is merged to staging, staging will then push images to the ccistaging Docker Hub org. Finally, we can rebuild those images on the circleci Docker Hub org by merging changes from staging into the master branch. See below for note on forked pull requests.

Remaining work

  • Tests are very bare-bones right now and could use image-specific additions—please add things to each image's goss.yml file and the existing logic will take care of the rest!
  • The testing code is spread across the repository and is a bit confusing; some refactoring would help

Limitations

Licensing & Usage

The circleci-images repository is licensed under The MIT License. See LICENSE for the full license text.

The Docker images generated from this repository are designed to work with the CircleCI docker executor. While you may use the images anywhere Docker is available, your experience may vary.

circleci-images's People

Contributors

ajhodges avatar anaisbetts avatar appplemac avatar bgentry avatar dnephin avatar eddiewebb avatar endocrimes avatar eric-hu avatar felicianotech avatar freespirit avatar iynere avatar jasonsouza avatar joshfriend avatar keybits avatar kimh avatar levlaz avatar marcomorain avatar nickgsc avatar notnoopci avatar pidelport avatar reillywatson avatar russellballestrini avatar ryanhipkiss avatar ryanwohara avatar springmt avatar technomancy avatar thatfiredev avatar thgreasi avatar yangkookkim avatar zzak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

circleci-images's Issues

Do we need xvfb in basic images?

So xvfb is installed in our Basic images but most of the tools you'd need to make it useful are in the browsers variant. Should we move it to that variant? Is there a reason it should stay in the basic image?

Blocked by #153.

Stop Overriding Existing Image Tags

When this repo build, previously published Docker image tags are overridden. We only really want to do this in the following situations:

  • latest tag
  • alias tags (The Go 1.9 tag when the go 1.9.3 tag is created for example)
  • security or other errors done within an image from our own doing
  • the digest for a Docker image/tag changes upstream

Postgres image enhancement - create n databases for each n containers

Right now, the Postgres image assumes a single database (in fact this is an upstream assumption: https://github.com/docker-library/postgres/blob/aaf209829e072bec11bca1f6f0b52e756dfc096e/9.6/docker-entrypoint.sh#L108). Commonly, for isolation, we like to use a database-per-container, a la https://github.com/grosser/parallel_tests#setup-environment-from-scratch-create-db-and-loads-schema-useful-for-ci . It could be a neat enhancement if the Circle version of the image included similar functionality.

Old version of Git in CircleCI 2

Hey I've found that the pre-built images for CircleCI 2 are using an old version of Git (specifically 2.1.4). Could that please be updated? I'd make a PR, but having looked around the code here I'm not 100% sure where to make that change.

This was discovered in semantic-release/semantic-release#559 and the build that shows the issue is https://circleci.com/gh/HT2-Labs/semantic-release/11 (shows that it's using circleci/node:8 and the "Semantic Release Debugging" step shows that it's using git v2.1.4).

Android emulator out of date

Trying to launch an Android emulator but received the following error:

Your emulator is out of date, please update by launching Android Studio:
 - Start Android Studio
 - Select menu "Tools > Android > SDK Manager"
 - Click "SDK Tools" tab
 - Check "Android Emulator" checkbox
 - Click "OK"

Then it will get timeout after 10 minutes.

Here's my config.yml:

version: 2
jobs:
  build:
    working_directory: ~/calabash-test
    docker:
      - image: circleci/android:api-25-alpha
    environment:
      JVM_OPTS: -Xmx3200m
    steps:
      - checkout
      - run: echo $ANDROID_HOME
      - run: 
          name: Remove local.properties from the project
          command: rm local.properties

      - run:
          name: Setup emulator
          command: sdkmanager --update && sdkmanager "system-images;android-25;google_apis;armeabi-v7a" && echo "no" | avdmanager create avd -n device1 -k "system-images;android-25;google_apis;armeabi-v7a"
      - run:
          name: Starting Android Emulator:
          command: emulator -avd device1 -no-audio -no-window

Any idea?

javafx in openjdk image

Hi,

I recently tried to migrate a 1.0 javafx app which built automaticaly on the old 1.0 infrastructure. This became a bit harder than I expected because javafx isn't available in the openjdk image. Could it be added please? This is available in the openjfx package on debian.

Android Images - No need for multiple SDK images

Hey ⚫️ci guys 🙋‍♂️,

currently I'm experience a little bit with Bitbucket Pipelines (sry for the advertising 🙃) and docker as well.

I found out that the sdkmanager can install the missing but required SDK tools packages automatically.

When you run a build from the command line, Gradle can automatically download missing SDK packages that a project depends on, as long as the corresponding SDK license agreements have already been accepted using the SDK Manager.

See here in the official docu.

Which means that you don't need to provide so many docker images for different Android API levels.
The only thing you have to do is to set the correct SDK path to the local.properties file in the Android project you are running.
This can be archived with this little line of code.

All in all:
I think that code can be removed and you only need one docker image for android 🙃

Include `pipenv` in the python images?

See https://docs.pipenv.org/

pipenv seems to be gaining traction as a standard way to create and manage virtualenvs for python projects.

It would be great to bake this into the circleci build containers, and possibly include some documentation samples of which directories to cache to get the best results.

I'm figuring out the cache dirs myself at the moment, will post an update on here when I identify the right paths.

Go 1.9.2 and Go 1.8.5

Released on October 25th

https://groups.google.com/forum/#!topic/golang-announce/s_hLxKF9ApA

When I specify golang:1.8.5 in my circle.yml, I see this message:

Build-agent version 0.0.4275-16f7565 (2017-09-26T14:09:58+0000)
Downloading previous test results
Starting container circleci/golang:1.8.5
  image cache not found on this host, downloading circleci/golang:1.8.5
Error response from daemon: manifest for circleci/golang:1.8.5 not found

(CircleCI Enterprise)

The older version of Go is working fine for now.

Re-enable Xdebug on PHP 7.2

I was testing with PHP 7.2 and noticed that coverage didn't run because xdebug wasn't installed.

I noticed this line in the build images script:

# xdebug is not compatible with 7.2 yet

That was added in this PR: #114 (specifically this commit: d9d7c5a).

Xdebug does work on PHP 7.2, looks like it just came out of Beta on the 29th of January (https://xdebug.org/download.php).

Possible to get it re-enabled in php 7.2 images?

Thanks!

Elixir: Add node variants

We use node to collect and build our frontend deps in most of our elixir projects. Would you consider supporting this for elixir like you do with the ruby-node variants? (this is copy of #58;)

fastlane in android

i'm thinking it'd be good to add fastlane to our android images—thoughts ?

Gradle not available in Android Images

I have a poc Cordova project I'm trying to get running with the v2 script, but Gradle doesn't seem to be available as a global on the command line. It looks like the OpenJava image should be installing it.

I'm new to Circle's v2 and Cordova, there seems to be an issue, but maybe I'm just missing something.

I've tried with both the node and non-node Android images (same result).

Is there something special I have to do to call Gradle?

Any thoughts?

Error:

#!/bin/bash -eo pipefail
gradle -v
/bin/bash: gradle: command not found
Exited with code 127

Script:

version: 2
jobs:
  #build-and-test:
  build:
    # macos:
    #   xcode: "9.0"
    working_directory: ~/code
    docker:
      - image: circleci/android:api-25-node8-alpha
    environment:
      JVM_OPTS: -Xmx3200m
    steps:
      - checkout
      - run:
          name: Install Node Dependencies
          command: gradle -v

NodeJS 8.9 images

Any chance to have the node 8.9 images available?

The 8.10 and 8.11 versions have a seg fault issue as you can check here nodejs/node#19274, it was already solved but the release of 8.11.2 will take some days or weeks to land.

Node 9.0 issue

circleci/ruby:2.4.2-node-browsers seems to have picked up node 9.0.

But this new version is not compatible yet for many major projects: sass/node-sass#2129

Any way we can either downgrade or specify our own version?

PHP5 images no longer have xdebug support

A recent PR (#150) broke xdebug support for the php56 images. Rather than just not installing xdebug which then breaks code coverage for unit testing, may I suggest the version of xdebug simply be locked to v2.5.5 using pecl install xdebug-2.5.5.

I guess the alternative is that every php56 user either creates a custom image or runs the pecl install step on every build. I suspect most people will just do the latter which is extra load on the build system and wasteful.

[Android] CRC32C and Installing crcmod

TL;DR: gsutil requires the compiled version of crcmod to work. Now, the not compiled version is installed.


gsutil depends on crcmod and seems to require that the latter being in its "compiled version".

You can see the detail here: https://cloud.google.com/storage/docs/gsutil/addlhelp/CRC32CandInstallingcrcmod

At the moment, crcmod is indeed being installed but when checked, the installed version wasn't the compiled version. This creates error on some gsutil commands.

RUN sudo easy_install -U pip && \
sudo pip install -U crcmod

Once logged onto a CircleCI build with ssh, I could rightly installed the compiled version of crcmod using the commands Google includes in the above documentation. Namely, installing crcmod before installing it: sudo pip uninstall crcmod

geckodriver not available in node browser images.

On circleci/node:8-browsers we see:

      Error: The geckodriver executable could not be found on the current PATH. Please download the latest version from https://github.com/mozilla/geckodriver/releases/ and ensure it can be found on your PATH.
          at findGeckoDriver (/home/circleci/code/node_modules/selenium-webdriver/firefox/index.js:354:11)
          at new ServiceBuilder (/home/circleci/code/node_modules/selenium-webdriver/firefox/index.js:446:22)
          at Function.createSession (/home/circleci/code/node_modules/selenium-webdriver/firefox/index.js:516:21)
          at createDriver (/home/circleci/code/node_modules/selenium-webdriver/index.js:170:33)
          at Builder.build (/home/circleci/code/node_modules/selenium-webdriver/index.js:645:16)
          at fn (/home/circleci/code/lib/run-test.js:203:52)
          at <anonymous>
          at process._tickCallback (internal/process/next_tick.js:188:7)

I think it makes total sense to include this in any images that have the browser tag.

Short term workaround is to install it as a part of the build with:

sudo wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
sudo tar xf geckodriver-v0.19.1-linux64.tar.gz -C /usr/local/bin

Android NDK images

Current images for Android support only Android SDK. So you cannot build project with NDK.

I don't think that NDK should be a part of SDK image, just because NDK is very big and has own versions.

I suggest adding additional set of images for NDK builds:
android:api-${API_LEVEL}-ndk-${NDK_VERSION}

Of course, NDK has many version and we don't want to get combinatorial explosion for images, but probably the support of the latest version of NDK is good enough.

I would happy to contribute.

awscli and other deployment tools request

I saw in the doc that you're awaiting signaling from users before adding deploy tools like awscli to the container. It would be great for these deploy tools to come packaged with the build containers as it would prevent us from building our own containers just to add these tools, seeing as most, if not everything else is provided for us in those language containers.

Error during startup of postgres:9.6-postgis image

I was advised by email of the availability of postgres images tailor-made for CircleCI, so I switched from mdillon/postgis to circleci/postgres:9.6-postgis. This error happened:

/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/postgis.sh

Exited with code 3CREATE DATABASE
UPDATE 1
Loading PostGIS extensions into template_postgis
ERROR:  could not open extension control file "/usr/share/postgresql/9.6/extension/postgis.control": No such file or directory
STATEMENT:  CREATE EXTENSION IF NOT EXISTS postgis;
ERROR:  could not open extension control file "/usr/share/postgresql/9.6/extension/postgis.control": No such file or directory
LOG:  received SIGHUP, reloading configuration files
LOG:  parameter "listen_addresses" cannot be changed without restarting the server
LOG:  configuration file "/var/lib/postgresql/data/postgresql.conf" contains errors; unaffected changes were applied

Python: Add node variants

We use node to collect and build our frontend deps in most of our python projects. Would you consider supporting this for python like you do with the ruby-node variants?

automated testing ?

can we work on some kind of automated testing process for this repo ?

some ideas:

  • add a CCI job to just run make for all branches, even if only some branches actually trigger pushes to Docker Hub
  • or use a third Docker Hub account (in addition to circleci, notnoopci) to host test images, make all those images private so customers don't use them by mistake

other thoughts ?

Bundler version pinning

Current ruby-2-4-node-browsers image picks up latest bundler 1.16.0.
But since it has an issue with --path : rubygems/bundler#6144
caching is currently of not much use and using path, basically fails all bundler commands as it is not able to load and gems.

Can we pin it down to lower release 1.15.4? Or allow a way to configure it.

Alpine-based images

It would be nice to have alpine versions of the images. One use case would be when building C/C++ libraries since alpine uses musl instead of glibc. It would also of course be more lightweight.

timeouts when trying to start a selenium driver

we've been experiencing timeouts when trying to use the driver. this has been the error for ember tests: testem/testem#1021 (comment)

we've seen it for selenium tests, but we just added a timeout and retry for loading the driver and our tests pass.

this comment testem/testem#1021 (comment) says that it may be a Xvfb issue.

any insight on what may cause this? we've seen this in circle 1 for quite a while and we also see it in circle 2. we are using circleci/node:7-browsers

PostGIS: Permission denied for entrypoint script

Looks like 68f632e may have broken permissions on the entrypoint script:

$ docker run circleci/postgres:9.6-alpine-postgis
Unable to find image 'circleci/postgres:9.6-alpine-postgis' locally
9.6-alpine-postgis: Pulling from circleci/postgres
128191993b8a: Pull complete
904f0449cfc1: Pull complete
ed1af663c144: Pull complete
e51085086e4e: Pull complete
8064a0d2f685: Pull complete
b6d17009f2aa: Pull complete
0435ce4d7b94: Pull complete
84c1a5e0fa9f: Pull complete
481b2e72aa80: Pull complete
4fb5799473a7: Pull complete
2a5a532dfe94: Pull complete
483dca4db05e: Pull complete
3c8e58edfe27: Pull complete
Digest: sha256:65c0821e056c0e61f56d226ebfe1d52e8fe84857a3b92f8a2ebf24c6ff119f5a
Status: Downloaded newer image for circleci/postgres:9.6-alpine-postgis
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... sh: locale: not found
No usable system locales were found.
Use the option "--debug" to see details.
ok
syncing data to disk ...
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
ok

Success. You can now start the database server using:

    pg_ctl -D /var/lib/postgresql/data -l logfile start

****************************************************
WARNING: No password has been set for the database.
         This will allow anyone with access to the
         Postgres port to access your database. In
         Docker's default configuration, this is
         effectively any other container on the same
         system.

         Use "-e POSTGRES_PASSWORD=password" to set
         it in "docker run".
****************************************************
waiting for server to start....LOG:  could not bind IPv6 socket: Address not available
HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
LOG:  database system was shut down at 2017-12-05 05:41:28 UTC
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
FATAL:  role "root" does not exist
 done
server started
CREATE DATABASE

CREATE ROLE


/usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/postgis.sh
/usr/local/bin/docker-entrypoint.sh: line 128: /docker-entrypoint-initdb.d/postgis.sh: Permission denied

bundle-images-manifest.json is no longer being generated and/or uploaded

The following S3 file https://s3.amazonaws.com/circle-downloads/playground/bundle-images-manifest.json is used by CircleCI Docs to list available Docker images and tags. That JSON file is originally generated from this repo and I guess uploaded to S3?

Based on the last available Go Docker tag in that file, the copy on S3 hasn't been updated since as far back as April 7th.

We need to get that file updating again.

Related: circleci/circleci-docs#1974

npm install step fails

From my .circleci/config.yml file:

  build-and-test-android:
    working_directory: /Users/distiller/project
    docker:
      - image: circleci/android:api-25-alpha
    steps:
      - checkout

When the build runs, the npm install step fails:

image

From npm-debug.log:

5444 verbose afterAdd /Users/distiller/.npm/@babel/types/7.0.0-beta.42/package/package.json not in flight; writing
5445 verbose correctMkdir /Users/distiller/.npm correctMkdir not in flight; initializing
5446 verbose afterAdd /Users/distiller/.npm/@babel/types/7.0.0-beta.42/package/package.json written
5447 silly rollbackFailedOptional Starting
5448 silly rollbackFailedOptional Finishing
5449 silly runTopLevelLifecycles Finishing
5450 silly install printInstalled
5451 verbose stack Error: Unsupported URL Type: npm:babylon@^7.0.0-beta
5451 verbose stack     at parseUrl (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:186:13)
5451 verbose stack     at npa (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:79:12)
5451 verbose stack     at module.exports (/usr/local/lib/node_modules/npm/node_modules/realize-package-specifier/index.js:12:15)
5451 verbose stack     at childDependencySpecifier (/usr/local/lib/node_modules/npm/lib/install/deps.js:89:3)
5451 verbose stack     at addDependency (/usr/local/lib/node_modules/npm/lib/install/deps.js:425:3)
5451 verbose stack     at /usr/local/lib/node_modules/npm/lib/install/deps.js:384:5
5451 verbose stack     at /usr/local/lib/node_modules/npm/node_modules/slide/lib/async-map.js:52:35
5451 verbose stack     at Array.forEach (native)
5451 verbose stack     at /usr/local/lib/node_modules/npm/node_modules/slide/lib/async-map.js:52:11
5451 verbose stack     at Array.forEach (native)
5452 verbose cwd /Users/distiller/ManheimExpress
5453 error Darwin 15.6.0
5454 error argv "/usr/local/Cellar/node/6.9.1/bin/node" "/usr/local/bin/npm" "install"
5455 error node v6.9.1
5456 error npm  v3.10.8
5457 error Unsupported URL Type: npm:babylon@^7.0.0-beta
5458 error If you need help, you may report this error at:
5458 error     <https://github.com/npm/npm/issues>
5459 verbose exit [ 1, true ]

Since I'm not running npm install I assume this is part of the CircleCI provided image. Any idea why it's failing?

circleci/mongo:3.2-ram broken

Not sure if it's a result of 4ad0f17 or not, but as of this morning our build that uses circleci/mongo:3.2-ram is broken with the following log output:

note: noprealloc may hurt performance in many applications
2018-01-23T16:33:44.614+0000 I CONTROL  [initandlisten] MongoDB starting : pid=7 port=27017 dbpath=/dev/shm/mongo 64-bit host=05c7d5f81296
2018-01-23T16:33:44.615+0000 I CONTROL  [initandlisten] db version v3.2.18
2018-01-23T16:33:44.615+0000 I CONTROL  [initandlisten] git version: 4c1bae566c0c00f996a2feb16febf84936ecaf6f
2018-01-23T16:33:44.615+0000 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1t  3 May 2016
2018-01-23T16:33:44.615+0000 I CONTROL  [initandlisten] allocator: tcmalloc
2018-01-23T16:33:44.615+0000 I CONTROL  [initandlisten] modules: none
2018-01-23T16:33:44.615+0000 I CONTROL  [initandlisten] build environment:
2018-01-23T16:33:44.615+0000 I CONTROL  [initandlisten]     distmod: debian81
2018-01-23T16:33:44.615+0000 I CONTROL  [initandlisten]     distarch: x86_64
2018-01-23T16:33:44.615+0000 I CONTROL  [initandlisten]     target_arch: x86_64
2018-01-23T16:33:44.615+0000 I CONTROL  [initandlisten] options: { storage: { dbPath: "/dev/shm/mongo", journal: { enabled: false }, mmapv1: { preallocDataFiles: false, smallFiles: true } } }
2018-01-23T16:33:44.646+0000 I STORAGE  [initandlisten] exception in initAndListen: 29 Data directory /dev/shm/mongo not found., terminating
2018-01-23T16:33:44.646+0000 I CONTROL  [initandlisten] dbexit:  rc: 100

Exited with code 100

Ruby has mismatched versions of bundler gem

I've observed some odd behaviour with the Docker images created for Ruby. They have version 1.15.4 of the bundler gem installed, but it thinks that its latest version is 1.16.0.

(edit: I originally discovered this in the Docker images for v2.2.8, but have subsequently found it affects

Some examples:

Image: circleci/ruby:2.4.2:

$ docker run --rm -it circleci/ruby:2.4.2 bundler version
Bundler version 1.15.4
$ docker run --rm -it circleci/ruby:2.4.2 bundle version
/usr/local/bin/bundle:23:in `load': cannot load such file -- /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/exe/bundle (LoadError)
	from /usr/local/bin/bundle:23:in `<main>'

Image: circleci/ruby:2.2

$ docker run --rm -it circleci/ruby:2.2 bundle version
/usr/local/bin/bundle:23:in `load': cannot load such file -- /usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.16.0/exe/bundle (LoadError)
        from /usr/local/bin/bundle:23:in `<main>'
$ docker run --rm -it circleci/ruby:2.2 /usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.15.4/exe/bundle version
fatal: Not a git repository (or any of the parent directories): .git
Bundler version 1.16.0 (2017-12-01 commit )

Image: circleci/ruby:2.2-node-browsers

$ docker run --rm -it circleci/ruby:2.2-node-browsers bundle version
_XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
/usr/local/bin/bundle:23:in `load': cannot load such file -- /usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.16.0/exe/bundle (LoadError)
        from /usr/local/bin/bundle:23:in `<main>'
$ docker run --rm -it circleci/ruby:2.2-node-browsers /usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.15.4/exe/bundle version
_XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
fatal: Not a git repository (or any of the parent directories): .git
Bundler version 1.16.0 (2017-12-01 commit )

link Docker Hub readmes to circleci-dockerfiles repository

due to Docker Hub limitations, our full lineup of tags for a particular image gets truncated..... linking to our circleci-dockerfiles repository from all of our Docker Hub readmes / descriptions will clear up some of this confusion

Handle installing custom versions of Yarn more easily

For Node images, if the user would like to install their own version of Yarn, the pre-installed version takes precedence in PATH.

Two options off the top of my head:

  • install Yarn in a way that it simply gets overridden by the default install instructions from their website
  • install Yarn in a way that it's location in PATH is lower priority

This Issue is picking up where Yarn's left off: yarnpkg/yarn#4407

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.