ci: make yarn globally available and independent of $BASH_ENV (#28889)
				
					
				
			Previously, our yarn (which overwrote the pre-installed yarn on the docker image) was only available through `$BASH_ENV` (as an exported function). This caused it to be undefined for commands executed in other shells (e.g. via Node.js' `child_process.spawn()` unless explicitly configuring it to run with `bash`). This commit fixes this by making our yarn version available globally via a symlink (`/usr/local/bin/yarn`). (This was accidentally broken in #28839.) PR Close #28889
This commit is contained in:
		
							parent
							
								
									d8704a3069
								
							
						
					
					
						commit
						3f2b51b837
					
				| @ -31,11 +31,13 @@ var_3: &cache_key v2-angular-node-10.12-{{ checksum "yarn.lock" }}-{{ checksum " | |||||||
| # Initializes the CI environment by setting up common environment variables. | # Initializes the CI environment by setting up common environment variables. | ||||||
| var_4: &init_environment | var_4: &init_environment | ||||||
|   run: |   run: | ||||||
|     name: Initializing environment (setting up variables, removing Yarn) |     name: Initializing environment (setting up variables, overwriting Yarn) | ||||||
|     # Remove the yarn installed in the docker container; we want our own version |     # Overwrite the yarn installed in the docker container with our own version. | ||||||
|     command: | |     command: | | ||||||
|       sudo rm /usr/local/bin/yarn |       ./.circleci/env.sh | ||||||
|       source ./.circleci/env.sh |       ourYarn=$(realpath ./third_party/github.com/yarnpkg/yarn/releases/download/v1.13.0/bin/yarn.js) | ||||||
|  |       sudo chmod a+x $ourYarn | ||||||
|  |       sudo ln -fs $ourYarn /usr/local/bin/yarn | ||||||
|       echo "Yarn version: $(yarn --version)" |       echo "Yarn version: $(yarn --version)" | ||||||
| 
 | 
 | ||||||
| var_5: &setup_bazel_remote_execution | var_5: &setup_bazel_remote_execution | ||||||
| @ -107,8 +109,6 @@ jobs: | |||||||
|       - run: 'yarn bazel:lint || |       - run: 'yarn bazel:lint || | ||||||
|               (echo -e "\n.bzl files have lint errors. Please run ''yarn bazel:lint-fix''"; exit 1)' |               (echo -e "\n.bzl files have lint errors. Please run ''yarn bazel:lint-fix''"; exit 1)' | ||||||
| 
 | 
 | ||||||
|       # Use `yarn gulp ...` (instead of `node_modules/.bin/gulp ...`) to ensure that yarn |  | ||||||
|       # (which is an exported bash function) will be available to processes spawned by gulp. |  | ||||||
|       - run: yarn gulp lint |       - run: yarn gulp lint | ||||||
| 
 | 
 | ||||||
|   test: |   test: | ||||||
|  | |||||||
| @ -62,12 +62,5 @@ setPublicVar SAUCE_TUNNEL_IDENTIFIER "angular-${CIRCLE_BUILD_NUM}-${CIRCLE_NODE_ | |||||||
| setPublicVar SAUCE_READY_FILE_TIMEOUT 120 | setPublicVar SAUCE_READY_FILE_TIMEOUT 120 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #################################################################################################### |  | ||||||
| # Define our own yarn command for CircleCI. |  | ||||||
| #################################################################################################### |  | ||||||
| echo "function yarn () { /usr/bin/env node $projectDir/third_party/github.com/yarnpkg/yarn/releases/download/v1.13.0/bin/yarn.js \"\$@\"; }" >> $BASH_ENV; |  | ||||||
| echo "export -f yarn;" >> $BASH_ENV; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Source `$BASH_ENV` to make the variables available immediately. | # Source `$BASH_ENV` to make the variables available immediately. | ||||||
| source $BASH_ENV; | source $BASH_ENV; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user