代码之家  ›  专栏  ›  技术社区  ›  James

大厅任务输入文件夹为空

  •  1
  • James  · 技术社区  · 8 年前

    我正在尝试构建一个基于gradle的java应用程序。我的管道如下所示:

    ---
    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
    

    构建。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/
    

    和建造。上海:

    #!/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
    

    ---
    platform: linux
    
    image_resource:
      type: docker-image
      source: {repository: busybox}
    
    inputs:
    - name: output
    
    run:
      path: ls
      args: ['-alR']
    

    bash结束时ls的输出。sh脚本向我显示输出文件夹包含预期的文件,但“查找”任务仅显示空文件夹:

    concourse ui

    我做错了什么 output

    可以找到完整的示例 here 使用ci子文件夹中的concourse文件。

    2 回复  |  直到 8 年前
        1
  •  6
  •   James    8 年前

    你需要记住一些事情:

    1. dir '). 在这个初始目录中,您将找到一个包含所有输入和输出的目录。

      ./hello-concourse-repo
      ./output
      
    2. 声明输出时,无需从脚本中创建文件夹“output”,它将自动创建。

    下面是更新后的脚本,其中包含一些修复问题的注释:

    #!/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
    

    因为您正在定义ROOT_文件夹变量,所以可以使用它进行导航。

        2
  •  1
  •   SHyx0rmZ    8 年前

    你还在里面 hello-concourse-repo output 上升一级。