大厅任务输入文件夹为空

时间:2017-09-01 21:40:20

标签: concourse

我正在尝试构建基于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

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

最后找到.yml

---
platform: linux

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

inputs:
- name: output

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

bash.sh脚本末尾的ls输出显示输出文件夹包含预期的文件,但查找任务只显示空文件夹:

concourse ui

我在查找任务中用作输入的output文件夹是空的,我做错了什么?

可以在ci子文件夹中找到包含大厅文件的here完整示例。

2 个答案:

答案 0 :(得分:4)

你需要记住一些事情:

  1. 您的任务有一个初始工作目录,我们可以调用它。'。' (除非您指定' dir')。在这个初始目录中,您将找到所有输入和输出的目录。

    ./hello-concourse-repo
    ./output
    
  2. 宣布输出时,无需创建文件夹'输出'从您的脚本中,它将自动创建。

  3. 如果导航到脚本中的其他文件夹,则需要返回初始工作目录或使用相对路径查找其他文件夹。
  4. 您将在下面找到更新的脚本,其中包含一些注释以解决问题:

    #!/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_FOLDER变量,因此您可以使用它来导航。

答案 1 :(得分:1)

您仍在hello-concourse-repo内,需要将output向上移动一级。