docker-android icon indicating copy to clipboard operation
docker-android copied to clipboard

Unable to integrate with Jenkins

Open nadishan opened this issue 4 years ago • 4 comments

I run this image using Jenkins. But gradlew is failed with this error message.

The SDK directory is not writable (/opt/android)

Jenkinsefile

pipeline {
  agent {
    docker {
      image 'reactnativecommunity/react-native-android'
    }

  }
  stages {
    stage('Test') {
      steps {
        sh 'npm install'
      }
    }

    stage('Build') {
      steps {
        sh 'cd android && chmod +x gradlew && ./gradlew assembleRelease'
      }
    }

    stage('PROD') {
      parallel {
        stage('PROD') {
          steps {
            echo 'prod'
          }
        }

        stage('DEV') {
          steps {
            echo 'dev'
          }
        }

      }
    }

  }
  environment {
    npm_config_cache = 'npm-cache'
  }
}

nadishan avatar Jan 10 '21 23:01 nadishan

Not sure jenkins version you are using. Works well on our jenkins server.

gengjiawen avatar Jan 28 '21 08:01 gengjiawen

I'm having issues with our jenkins installation as well. We're on Jenkins 2.289 and when using the docker agent, we're running inside it as the jenkins user on the node. This runs into a bunch of permissions and home directory issues inside the container during yarn / npm installs.

To get around this, we've tried running the container as root by passing -u 0:0. This works fine, but the outputs on our workspace are all owned by the root user (uid 0) and not readable by any of the subsequent steps (e.g., archiving artifacts).

If you @gengjiawen have any insights, I'd love to hear them. Thanks!

robcee avatar Aug 31 '21 13:08 robcee

the issue on my side was using another buildToolsVersion from the one referenced in this repo. For android 30, the build tools available is 30.0.3 which is different from the one react native used (30.0.2). This cause gradle to download it, which is something not possible.

HugoGresse avatar Nov 26 '21 15:11 HugoGresse