2015-06-13 16 views
12

Có cách nào để hạn chế việc triển khai circleci trên các kiểm tra có thẻ git cụ thể không?Circleci: Cách triển khai tùy thuộc vào thẻ git

Hiện nay tôi đang sử dụng này

... 
deployment: 
    dockerhub: 
    branch: master 
    commands: 
     - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS 
     - docker push abcdef 

Thay vì branch: master Tôi muốn viết một cái gì đó giống như tag: /release_.*/

Bối cảnh: Tôi muốn thiết lập thẻ Docker tùy thuộc vào thẻ git. Vì vậy, ví dụ, bất cứ khi nào một cái gì đó là cam kết để làm chủ, một hình ảnh docker mới với thẻ latest sẽ được tạo ra và đẩy. Bất cứ khi nào thẻ git đặc biệt được đặt (ví dụ: release_1.0_2015-06-13) hình ảnh của trình docker mới với thẻ 1.0 sẽ được tạo và đẩy.

Cách khác là chỉ sử dụng các nhánh khác nhau theo các thẻ khác nhau. Nhưng tôi muốn sử dụng thẻ để đánh dấu một bản phát hành cụ thể.

Trả lời

16

It looks like this was added kể từ khi Kim đã trả lời.

Thông thường, việc đẩy thẻ sẽ không chạy bản dựng. Nếu có cấu hình triển khai với thuộc tính tag khớp với tên của thẻ bạn đã tạo, chúng tôi sẽ chạy phần xây dựng và triển khai khớp với.

Trong ví dụ bên dưới, việc đẩy thẻ có tên release-v1.05 sẽ kích hoạt việc triển khai xây dựng &. Việc đẩy thẻ qa-9502 sẽ không kích hoạt bản dựng.

deployment: 
    release: 
    tag: /release-.*/ 
    owner: circleci 
    commands: 
     - ./deploy_master.sh 
+0

Có cách nào để lấy tên thẻ trong bản dựng không? Có một biến môi trường cho CIRCLE_BRANCH nhưng tôi không thấy một biến cho CIRCLE_TAG – sthomps

+3

Có CIRCLE_TAG thay vì CIRCLE_BRANCH nếu xây dựng được kích hoạt bằng cách đẩy một thẻ mới. – stmllr

+1

Điều này dường như không hoạt động trong phần 'triển khai'.Tôi có phần 's3_location' với' key_pattern: builds/{TAG} - {BUILD_NUM} .zip' và 'key_pattern: builds/{CIRCLE_TAG} - {BUILD_NUM} .zip'. Không phải điền vào {tag} – sthomps

4

Đây là Kim từ CircleCI.

Để lưu trữ những gì bạn muốn làm, tôi nghĩ bạn phải có khả năng kích hoạt xây dựng khi một thẻ mới được đẩy vào Github. Tuy nhiên, chỉ một cam kết mới sẽ kích hoạt một bản dựng, do đó, có vẻ như điều này không thể thực hiện được ngay bây giờ. Lấy làm tiếc!

UPDATE: Tính năng này hiện đã được thực hiện: https://circleci.com/docs/configuration/#tags

+0

Đây có phải là hồi quy không? xây dựng dựa trên thẻ đã được hỗ trợ rõ ràng trong quá khứ gần đây và người dùng đã chia sẻ các trải nghiệm của họ về việc sử dụng các trải nghiệm đó. – Tom

+0

Tính năng được thêm sau khi Kim đưa ra câu trả lời này. @ Dean của câu trả lời liên kết đến các nguồn lực chính xác. – keybits

3

Tôi đặt này ở đây cho những người đi theo rằng documentation nhưng không có được điều này để làm việc. CircleCI dường như bỏ qua các thẻ nếu bạn có cấu hình branchonly trong cài đặt chung của mình. Các cam kết được gắn thẻ sẽ xuất hiện dưới dạng "Không chạy" theo cách đó.

Xây dựng chỉ trên chi nhánh cụ thể và triển khai trên một từ khóa cụ thể, sử dụng tùy chọn branchignore cùng với một regex lookahead tiêu cực:

# circle.yml 
general: 
    branches: 
    ignore: 
     - /^(?!master).*$/ 
deployment: 
    beta: 
    tag: /v[0-9]+(\.[0-9]+)*(-.*)*/ 
    owner: mediafreakch 
    commands: 
     - deploy.sh 

này sẽ xây dựng mỗi cam kết master và triển khai nếu đó là một tagged cam kết. Để gắn thẻ một cam kết, tôi sử dụng npm version.

+0

Đối với những gì nó có giá trị, nếu bạn đang ở phiên bản beta bitbucket, nó không giống như các thẻ làm việc trong bất kỳ hoàn cảnh nào. Tôi đã thử cách tiếp cận tương tự ở đây nhưng trong bitbucket, và Circle không thực hiện bất kỳ lệnh triển khai nào. – Jack

+0

@Jack Làm cách nào để bạn đặt tên cho các thẻ của mình? Bạn có làm thẻ chú thích bằng cách sử dụng cờ 'git tag -a' (đó là những gì' npm version' không)? – mediafreakch

+0

Không, sử dụng cờ không được chú thích. Liệu yếu tố đó có xảy ra nếu $ CIRCLE_TAG có mặt hay không? Tôi sẽ thử một thẻ được chú thích và xem liệu điều đó có tạo nên sự khác biệt không, sau đó báo cáo lại tại đây. Cuộc gọi tốt @mediafreakch – Jack

Các vấn đề liên quan