티스토리 뷰

알려주는 이야기/기타

CircleCI 에러

임리프 2020. 9. 1. 12:12
반응형

CircleCI를 사용하면서 발생했던 오류 해결 방법을 적어놓은 게시글입니다.

 

 

 

Gradlew: Permission denied 오류 발생 시 

( 깃허브 gitignore 재 설정 때문에 git rm -r --cached . 사용 시에 발생하거나 권한 설정 안 하면 발생 )

 

git update-index --chmod=+x gradlew

또는

  - run:
      name: chmod permissions
      command: chmod +x ./gradlew
dependencies:
    override:
        -chmod +x gradlew

 

 

org.gradle.wrapper.GradleWrapperMain 오류 발생 시

 

git add -f gradle/wrapper/gradle-wrapper.jar

 

입력 후

 

gradle wrapper
gradlew assembleRelease

 

 

keystore.properties (No such file or director)

buildConfigField와 로컬 파일을 통해 API Key 정보를 숨길 때 API Key 정보가 담긴 properties를. gitignore 처리할 때 파일을 찾을 수 없다고 빌드를 실패합니다.

 

 

해결을 이렇게 하였습니다. ( ※생각해서 해결한 방법이라서 옳은 방법이 아닐 수도 있습니다. )

 

keystore.properties 파일 대신 API Key들을 제공해줄 keystore_private.properties를 만들어줍니다.

 

그리고 아래와 같이 API Key나 Token 값을 숨겨줍니다.

SCHOOL_API_KEY = "private"

SCHOOL_INFO_URL = "http://private/"

BASE_URL = "http://private/"

 

그리고 build.gradle에서 아래와 같이 바꿔줍니다.

defaultConfig {
        
        ...

        if (rootProject.file("keystore.properties").exists()) {

            def keystorePropertiesFile = rootProject.file("keystore.properties")
            def keystoreProperties = new Properties()
            keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

            buildConfigField "String", "SCHOOL_API_KEY", keystoreProperties["SCHOOL_API_KEY"]
            buildConfigField "String", "SCHOOL_INFO_URL", keystoreProperties["SCHOOL_INFO_URL"]
            buildConfigField "String", "BASE_URL", keystoreProperties["BASE_URL"]
        } else {

            def keystorePropertiesFile = rootProject.file("keystore_private.properties")
            def keystoreProperties = new Properties()
            keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

            buildConfigField "String", "SCHOOL_API_KEY", keystoreProperties["SCHOOL_API_KEY"]
            buildConfigField "String", "SCHOOL_INFO_URL", keystoreProperties["SCHOOL_INFO_URL"]
            buildConfigField "String", "BASE_URL", keystoreProperties["BASE_URL"]
        }
    }

 

CircleCI가 파일을 못 찾았을 때 오류를 뱉었으므로 존재하지 않으면 다른 properties의 값을 전달해주도록 하였습니다.

반응형
댓글