If you're using the Docker executor, your image contents may change if you use an image tag, such as `circleci/ruby:2.4-node` or `node:latest`. If you believe one of these images changed between two of your jobs, you can confirm this by comparing the image Secure Hashing Algorithm id (SHA) in the two jobs. This is printed in the "spin up environment" section.
CircleCI and other image maintainers may change which SHA a tag like `2.4-node` or `latest` refers to. Usually, this is done to fix bugs or introduce newer versions of essential software, like git and package managers for a language.
You can pin your job to run with a specific image SHA, which will guarantee the image won't change unless you intend it to. That would look something like this in your config.yml:
docker: - image:circleci/ruby@sha256:4be65b406f7402b5c4fd5df7173d2fd7ea3fdaa74d9c43b6ebd896197a45c448