我正在使用 Argo 为我的硕士论文工作构建基因组管道。本质上,我创建了一个WorkflowTemplate
定义了所有容器模板的模板,然后我的想法是从该模板构建两个单独的工作流:一个用于测试目的,一个用于生产,它将使用不同的参数和数据 wrt 测试工作流。
这是WorkflowTemplate
:
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: genomic-workflow-template
namespace: tesi-fabrici
spec:
templates:
- name: data-handling
container:
name: data-handling-container
image: eferos93/data-handling
volumeMounts:
- name: external-volume
mountPath: /data
- name: bcl2fastq
container:
name: bcl2fastq-container
image: eferos93/bcl2fastq
volumeMounts:
- name: external-volume
mountPath: /data
- name: fastqc
container:
name: fasqc-container
image: eferos93/fastqc
volumeMounts:
- name: external-volume
mountPath: /data
- name: multiqc
container:
name: multiqc-container
image: eferos93/multiqc
volumeMounts:
- name: external-volume
mountPath: /data
在构建测试工作流时,我在将参数传递给容器时遇到问题,即,即使指定了它们,容器也没有得到任何参数,因此导致 pod 内部出现错误,因为它将使用不匹配的默认参数我的情况。
这是工作流测试定义:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: test-workflow-
namespace: tesi-fabrici
spec:
volumes:
- name: external-volume
nfs:
server: 10.128.2.231
path: /tesi_fabrici
entrypoint: genomic-workflow
arguments:
parameters:
- name: test-flags
value: --ignore-missing-bcls --ignore-missing-filter --ignore-missing-positions --use-bases-mask y4n*,n*
- name: base-input-dir
value: data/
- name: base-output-dir
value: output/
- name: input-dir
value: copy_170612_A00181_0011_AH2JK7DMXX/
- name: input-path
value: data/copy_170612_A00181_0011_AH2JK7DMXX
- name: sample-sheet-path
value: data/copy_170612_A00181_0011_AH2JK7DMXX/SampleSheet.csv
- name: fastq-dir
value: data/output/copy_170612_A00181_0011_AH2JK7DMXX/fastq
- name: fastqc-dir
value: data/output/copy_170612_A00181_0011_AH2JK7DMXX/fastqc
- name: multiqc-dir
value: data/output/copy_170612_A00181_0011_AH2JK7DMXX/multiqc_results
- name: logs-dir
value: logs/
- name: benchmark-dir
value: benchmark/
templates:
- name: genomic-workflow
steps:
- - name: bcl2fastq-step
templateRef:
name: genomic-workflow-template
template: bcl2fastq
inputs:
parameters:
- name: test-flags
- name: sample-sheet-path
- name: input-dir
- name: fastq-dir
args: [ "{{inputs.parameters.test-flags]}}", "--sample-sheet", "{{inputs.parameters.sample-sheet-path]}}", "-R", "{{inputs.parameters.input-dir}}", "-o", "{{inputs.parameters.fastq-dir}}"]
这里使用bcl2fastq
上面定义的模板的步骤不带任何参数。我也尝试直接引用全局参数({{workflow.parameters.test-flags}},....),仍然是同样的问题。bcl2fastq-step
这是从 Argo Server UI 获得的清单:
name: genomic-workflow
inputs: {}
outputs: {}
metadata: {}
steps:
- - name: bcl2fastq-step
arguments: {}
templateRef:
name: genomic-workflow-template
template: bcl2fastq
如您所见,没有参数,也没有输入。
现在,我还没有尝试在内部声明参数,WorkflowTemplate
但这是我想要避免的,因为我的想法是从WorkflowTemplate
上面定义的单个工作流程构建两个工作流程。
有谁知道问题出在哪里?
这是 bcl2fastq 的Dockerfile的链接。
我正在使用最新版本的 Argo:
argo: v3.2.6+db7d90a.dirty
BuildDate: 2021-12-18T04:36:35Z
GitCommit: db7d90a1f609685cfda73644155854b06fa5d28b
GitTreeState: dirty
GitTag: v3.2.6
GoVersion: go1.17.5
Compiler: gc
Platform: linux/amd64