Nó không rõ ràng đối với tôi từ the documentation nếu nó thậm chí có thể chuyển đầu ra của công việc cho công việc khác (không phải từ nhiệm vụ đến công việc, mà từ công việc đến công việc).Phòng chờ: cách chuyển sản lượng của công việc sang một công việc khác
Tôi không biết nếu khái niệm tôi đang làm đúng, có lẽ nó nên được mô hình khác trong Concourse, nhưng những gì tôi đang cố gắng đạt được là có đường ống cho dự án Java được chia thành nhiều công việc chi tiết, được thực hiện song song và được kích hoạt độc lập nếu tôi cần chạy lại một số công việc.
Làm thế nào tôi nhìn thấy các đường ống dẫn:
- công việc đầu tiên:
- kéo mã từ github repo
- xây dựng các dự án với maven
- triển khai các đồ tạo tác vào kho maven (
mvn deploy
) - cập nhật
SNAPSHOT
phiên bản của tiểu hệ thống dự án Maven - bản đồ tạo tác (file jar) vào thư mục đầu ra (
output
củatask
) công việc thứ hai
- :
- cuốc lên
jar
's từoutput
- xây dựng container Docker cho tất cả chúng (song song)
- cuốc lên
- Đường ống đi vào số
Tôi không thể chuyển số output
từ công việc 1 sang công việc 2. Ngoài ra, tôi tò mò nếu bất kỳ thay đổi nào tôi giới thiệu với tài nguyên git repo gốc sẽ có mặt trong công việc tiếp theo (từ công việc 1 đến công việc 2).
Vì vậy, câu hỏi là:
- một cách thích hợp để vượt qua xây dựng nhà nước từ công việc để công việc là gì (Tôi biết, công việc có thể được sắp xếp trên các nút khác nhau, và chắc chắn trong các thùng chứa khác nhau)?
- Có cần lưu trữ trạng thái trong tài nguyên (ví dụ, S3/git) không?
- Trạng thái phòng chờ theo thiết kế (trong ngữ cảnh này)?
- Nơi tốt nhất để biết thêm thông tin? Tôi đã thử hướng dẫn sử dụng, nó không phải là chi tiết.
Những gì tôi đã tìm thấy cho đến nay:
output
s không truyền từ công việc để công việc- Bất kỳ thay đổi đối với tài nguyên (
put
đến repo github) được lấy trong các công việc tiếp theo , nhưng những thay đổi trong bản sao làm việc không
dụ Minimal (nó không thành công nếu dòng nhận xét là không chú thích với lỗi: missing inputs: gist-upd, gist-out
):
---
resources:
- name: gist
type: git
source:
uri: "[email protected]:snippets/foo/bar.git"
branch: master
private_key: {{private_git_key}}
jobs:
- name: update
plan:
- get: gist
trigger: true
- task: update-gist
config:
platform: linux
image_resource:
type: docker-image
source: {repository: concourse/bosh-cli}
inputs:
- name: gist
outputs:
- name: gist-upd
- name: gist-out
run:
path: sh
args:
- -exc
- |
git config --global user.email "[email protected]"
git config --global user.name "Concourse"
git clone gist gist-upd
cd gist-upd
echo `date` > test
git commit -am "upd"
cd ../gist
echo "foo" > test
cd ../gist-out
echo "out" > test
- put: gist
params: {repository: gist-upd}
- name: fetch-updated
plan:
- get: gist
passed: [update]
trigger: true
- task: check-gist
config:
platform: linux
image_resource:
type: docker-image
source: {repository: alpine}
inputs:
- name: gist
#- name: gist-upd
#- name: gist-out
run:
path: sh
args:
- -exc
- |
ls -l gist
cat gist/test
#ls -l gist-upd
#cat gist-upd/test
#ls -l gist-out
#cat gist-out/test
Tuyệt vời, cảm ơn! –
Không sao, tôi vừa sửa câu trả lời để thêm một số thông tin. –
Tôi muốn lưu ý rằng trong khi trạng thái công việc phải làm việc yêu cầu tài nguyên được khai báo, thì không bắt buộc phải rõ ràng trong phòng chờ để sử dụng tài nguyên bên ngoài để chuyển dữ liệu giữa các bước của cùng một công việc. Các get/puts của một nhiệm vụ hoặc tài nguyên được tự động sao chép như các thư mục trên chúng. Một nhiệm vụ có thể khai báo một giá trị mới: tài nguyên cục bộ cho công việc và không được khai báo như một tài nguyên trong đường ống, và một nhiệm vụ khác trong cùng một công việc có thể có được: để khớp nó. –