gradle-node-plugin icon indicating copy to clipboard operation
gradle-node-plugin copied to clipboard

Yarn build on BitBucket

Open AleksandarAleksandrov opened this issue 7 years ago • 3 comments

I have a build pipeline setup on BitBucket.

Locally (Windows 10) the build passes with no problems. But on the bitbucket pipeline I get this exeption:

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
:frontend:buildFe FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':frontend:buildFe'.
> Process 'command '/opt/atlassian/pipelines/agent/build/frontend/extDeps/yarn/yarn-v1.1.0/bin/yarn'' finished with non-zero exit value 1
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':frontend:buildFe'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
6 actionable tasks: 6 executed
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.process.internal.ExecException: Process 'command '/opt/atlassian/pipelines/agent/build/frontend/extDeps/yarn/yarn-v1.1.0/bin/yarn'' finished with non-zero exit value 1
	at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:382)
	at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:31)
	at org.gradle.api.internal.file.DefaultFileOperations.exec(DefaultFileOperations.java:188)
	at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1076)
	at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1071)
	at org.gradle.api.Project$exec$3.call(Unknown Source)
	at com.moowork.gradle.node.exec.ExecRunner.run(ExecRunner.groovy:37)
	at com.moowork.gradle.node.yarn.YarnExecRunner.doExecute(YarnExecRunner.groovy:42)
	at com.moowork.gradle.node.exec.ExecRunner.execute(ExecRunner.groovy:63)
	at com.moowork.gradle.node.exec.ExecRunner$execute.call(Unknown Source)
	at com.moowork.gradle.node.yarn.YarnTask.exec(YarnTask.groovy:89)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:142)
	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:135)
	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:122)
	at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:762)
	at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:729)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
	... 28 more

bitbucket-pipeline.yml

image: java:8

pipelines:
  default:
    - step:
        caches:
          - gradle
        script: # Modify the commands below to build your repository.
          # You must commit the Gradle wrapper to your repository
          # https://docs.gradle.org/current/userguide/gradle_wrapper.html
          - bash ./gradlew build --debug

The build.gradle file is:

plugins {
  id "com.moowork.node" version "1.2.0"
}

node {
  // Version of node to use.
  version = '6.11.4'

  // Version of npm to use.
  npmVersion = '3.10.10'

  // Version of Yarn to use.
  yarnVersion = '1.1.0'

  // Base URL for fetching node distributions (change if you have a mirror).
  distBaseUrl = 'https://nodejs.org/dist'

  // If true, it will download node using above parameters.
  // If false, it will try to use globally installed node.
  download = true

  // Set the work directory for unpacking node
  workDir = file("${project.projectDir}/extDeps/nodejs")

  // Set the work directory for NPM
  npmWorkDir = file("${project.projectDir}/extDeps/npm")

  // Set the work directory for Yarn
  yarnWorkDir = file("${project.projectDir}/extDeps/yarn")

  // Set the work directory where node_modules should be located
  nodeModulesDir = file("${project.projectDir}")
}

task installDeps(type: YarnTask) {
  args = ['install']
}

task coverageTest(dependsOn: ['installDeps'],type: YarnTask) {
  args = ['test']
}

task buildFe(dependsOn: ['installDeps', 'coverageTest'],type: YarnTask) {
	args = ['build']
}

task cleanWebApp(dependsOn: ['installDeps', 'coverageTest', 'buildFe'], type: Delete){
	delete '../backend/webapp'
	doLast {
		println 'Finished deleteing backend/webapp'
	}
}

task build(dependsOn: ['installDeps', 'coverageTest', 'buildFe', 'cleanWebApp'], type: Copy) {
    from('build')
    into('../backend/webapp')
	doLast {
		println 'Copying prodocution ready frontend to backend/webapp'
	}
}

Any ideas where the problem might be ?

AleksandarAleksandrov avatar Nov 14 '17 14:11 AleksandarAleksandrov

The error seems to be coming from these two files: ExecRunner.groovy and YarnExecRunner.groovy

AleksandarAleksandrov avatar Nov 14 '17 14:11 AleksandarAleksandrov

@AleksandarAleksandrov did you ever sort this out? If so, would love to know what approach you took!

ReservedDeveloper avatar Jan 29 '18 14:01 ReservedDeveloper

I got this error this morning but in actuality our npm auth token had expired. Not sure if npm or the plugin needs better error messages

joshvarcheesy avatar May 07 '20 20:05 joshvarcheesy