2017-09-01 9 views
0

私はgradleベースのJavaアプリケーションを構築しようとしています。私のパイプラインは次のようになります。Concourseタスクの入力フォルダが空です

--- 
resources: 
- name: hello-concourse-repo 
    type: git 
    source: 
    uri: https://github.com/ractive/hello-concourse.git 

jobs: 
- name: gradle-build 
    public: true 
    plan: 
    - get: hello-concourse-repo 
    trigger: true 
    - task: build 
    file: hello-concourse-repo/ci/build.yml 
    - task: find 
    file: hello-concourse-repo/ci/find.yml 

build.ymlは、次のようになります。

--- 
platform: linux 

image_resource: 
    type: docker-image 
    source: 
    repository: java 
    tag: openjdk-8 

inputs: 
- name: hello-concourse-repo 
outputs: 
- name: output 

run: 
    path: hello-concourse-repo/ci/build.sh 

caches: 
- path: .gradle/ 

とbuild.sh:

#!/bin/bash 

export ROOT_FOLDER=$(pwd) 
export GRADLE_USER_HOME="${ROOT_FOLDER}/.gradle" 

export TERM=${TERM:-dumb} 
cd hello-concourse-repo 
./gradlew --no-daemon build 

mkdir -p output 
cp build/libs/*.jar output 
cp src/main/docker/* output 
ls -l output 

そして最後にfind.yml

--- 
platform: linux 

image_resource: 
    type: docker-image 
    source: {repository: busybox} 

inputs: 
- name: output 

run: 
    path: ls 
    args: ['-alR'] 

bash.shの最後にあるlsの出力CRIPTは、出力フォルダが期待されるファイルが含まれていることを私に示しているが、検索タスクは空のフォルダを示しています。

concourse ui

私が間違っているのは何をその私が検索で入力として使用していますoutputフォルダタスクは空ですか?

完全な例は、ciサブフォルダ内のconcourseファイルのあるhereです。

答えて

2

  1. あなたのタスクのための最初の作業ディレクトリがありますが、それを呼び出すことができます「」 ( 'dir'を指定しない限り)。この最初のディレクトリには、すべての入力と出力のためのディレクトリがあります。

    すなわち

    ./hello-concourse-repo 
    ./output 
    
  2. あなたは出力を宣言すると、スクリプトからフォルダ「出力」を作成する必要はありません、それが自動的に作成されます。

  3. スクリプト内の別のフォルダに移動する場合は、最初の作業ディレクトリに戻るか、相対パスを使用して他のフォルダを見つける必要があります。あなたがナビゲートするために使用することができROOT_FOLDER変数を定義しているので

    #!/bin/bash 
    
    export ROOT_FOLDER=$(pwd) 
    export GRADLE_USER_HOME="${ROOT_FOLDER}/.gradle" 
    
    export TERM=${TERM:-dumb} 
    cd hello-concourse-repo #You changed directory here, so your 'output' folder is in ../output 
    ./gradlew --no-daemon build 
    
    # Add this line to return to the initial working directory or use ../output or $ROOT_FOLDER/output when compiling. 
    
    #mkdir -p output <- This line is not required, you already defined an output with this name 
    
    cp build/libs/*.jar ../output 
    cp src/main/docker/* ../output 
    ls -l ../output 
    

    :あなたは、問題を修正するためのいくつかのコメントで更新されたスクリプトを見つけ下記

+0

これは意味があります。私は今、hello-concourse-repoがgit repoのチェックアウトディレクトリであることを理解しています。私はいつも、この特定のタスクのために作成されたディレクトリであるという印象を受けました。 – James

0

あなたはまだhello-concourse-repoの中にいて、outputを1レベル上に移動する必要があります。あなたはいくつかのことを覚えておく必要が

関連する問題