2015-10-30 50 views
44

Tôi đã thử nghiệm không thành công gì cả, tôi đang chạy một Gitlab được lưu trữ trên Linux, và cố gắng để có được đầu của tôi xung quanh chức năng CI.Làm thế nào để sử dụng Gitlab CI để xây dựng một dự án Java Maven?

Theo tài liệu Gitlab, bạn chỉ cần tạo tệp .gitlab-ci.yml, việc triển khai Gitlab của Travis-CI. Bây giờ từ vẻ ngoài của nó, bạn có thể thực hiện rất nhiều với .gitlab-ci.yml, nhưng rất nhiều tài liệu tham khảo Ruby và các ngôn ngữ khác. Không có gì được nói về cách xây dựng các dự án Java Maven.

Tôi làm cách nào để có thể xây dựng một ứng dụng đơn giản trong Java? Tôi có thể sử dụng các Á hậu chia sẻ, hoặc tôi nên sử dụng một Á hậu cụ thể, trong trường hợp đó những gì hoặc thực hiện Á hậu tôi nên chọn: ssh, docker, hoặc vỏ? Sau đó, những gì tôi nên đặt trong các tập tin .gitlab-ci.yml ít nhất là để xây dựng dự án với Maven?

Trả lời

4

Các tài liệu mô tả cú pháp YAML sử dụng để kiểm soát xây dựng:

Vì vậy, tại sao bạn không thử bắt đầu với những điều sau đây ?:

job1: 
    script: "mvn package" 

Có lẽ điều này sẽ chỉ hoạt động nếu Maven đã được cài đặt, vì vậy bạn cần có một runner hỗ trợ điều này.

Tôi chưa sử dụng GitLab nhưng documentation đề xuất bạn có thể tùy chỉnh thêm để sử dụng số official Maven Docker image để thực hiện các bản dựng. Trông rất thú vị, nhưng tôi đồng ý tài liệu là thiếu một ví dụ Java.

43

Register a Docker runner và sử dụng một trong những official Maven Docker images, ví dụ, maven:3-jdk7 trong tập tin .gitlab-ci.yml của bạn:

image: maven:3-jdk-7 

build: 
    script: "mvn install -B" 

Lưu ý -Bflag, được khuyến khích sử dụng không tương tác.

Theo như tôi hiểu, không quan trọng liệu nhân vật được chia sẻ hay cụ thể.

+0

Vì vậy, khi được hỏi có chạy shell, ssh hoặc docker khi đăng ký nhân vật tôi nên chọn docker phải không? – MRK187

+0

Thx, hoạt động như một sự quyến rũ! Chỉ cần một câu hỏi: khi chúng tôi chỉ định hình ảnh trong tệp '.gitlab-ci.yml', hình ảnh được chỉ định trong quá trình tạo' gitlab-runner' bị bỏ qua? ví dụ. Tôi tạo ra một Á hậu với hình ảnh * ubuntu: mới nhất * và chạy công việc với * maven: 3-jdk-7 * trong tập tin yml – PierreF

+1

@jeanMarcAssin Tài liệu này hơi thưa thớt về khía cạnh này, nhưng phần này: http: // doc. gitlab.com/ce/ci/docker/using_docker_images.html#overwrite-image-and-services và hai mục sau cho thấy hình ảnh bạn chỉ định trong tệp '.gitlab-ci.yml' sẽ * ghi đè lên * hình ảnh của nhân vật được cấu hình với. – rolve

2

tôi sử dụng lệnh này, nhưng nói chung các tài liệu về java/maven xây dựng có vẻ khá hiếm

maven-package: 
    script: "mvn install -B" 
3

Tôi muốn thêm chút thông tin ở đây chàng trai. Trước tiên, hãy xóa một số nhầm lẫn về người dùng chung và cụ thể.

Shared Runner: Như âm thanh tên của nó, vận động viên được chia sẻ là trường hợp dòng chảy quá trình xây dựng có thể được sử dụng để thực hiện công việc của tất cả các dự án duy nhất trong trường hợp gitlab cài đặt của bạn có phép chạy chung tùy chọn kích hoạt. Để làm điều đó tất nhiên bạn sẽ cần quyền quản trị. Theo tài liệu gitlab hiện tại, chỉ sử dụng với quyền quản trị mới có thể xác định được nhân vật được chia sẻ.

runner cụ thể Loại Á hậu này chỉ thực hiện công việc của một dự án.

Ngoài ra, đây là một vài điểm quan trọng cần ghi nhớ khi chọn người chạy cho dự án của bạn.

  1. Shared Runners rất hữu ích cho công việc mà có yêu cầu tương tự, giữa nhiều dự án. Thay vì có nhiều người chạy chạy không tải cho nhiều dự án, bạn có thể có một hoặc một số lượng nhỏ người chạy để xử lý nhiều dự án. Điều này giúp dễ dàng duy trì và cập nhật người chạy cho các nhóm dự án chung.
  2. Các vận động viên cụ thể hữu ích cho các công việc có yêu cầu đặc biệt hoặc cho các dự án có nhu cầu cụ thể. Nếu một công việc có yêu cầu nhất định, bạn có thể thiết lập các Á hậu cụ thể với điều này trong tâm trí, trong khi không phải làm điều này cho tất cả các vận động viên. Ví dụ, nếu bạn muốn triển khai một dự án nào đó, bạn có thể thiết lập một Á hậu cụ thể để có thông tin xác thực phù hợp với điều này.

Bây giờ để chọn trình thực thi phù hợp cho dự án, điều quan trọng nhất là chúng tôi có chế độ xem chim trên tất cả các trình thực thi có sẵn cho người chạy gitlab. Gitlab đã làm cho công việc này trở nên dễ dàng đối với chúng tôi bằng cách cung cấp tài liệu tốt đẹp qua số here giải thích các tùy chọn khác nhau mà bạn sẽ nhận được với những người thực thi khác nhau là gì.

Nếu bạn muốn biết thêm về vận động viên và Chấp hành viên khác nhau, tôi sẽ đề nghị bạn bắt đầu với bài viết này, Gitlab Runner

1

tôi đã dành một số tiền hợp lý của thời gian cố gắng thiết lập các dự án Java của chúng tôi trên Gitlab CI. Tôi đã làm việc với một mức độ thành công nào đó. Như đã đề cập bởi rolve, giải pháp thẳng tiến nhất là sử dụng hình ảnh từ repo chính thức: https://hub.docker.com/_/maven

Tuy nhiên, chúng tôi có một proxy công ty để yêu cầu thời gian chờ khi tìm nạp phụ thuộc của dự án. Tôi đã thử nhiều giải pháp và cuối cùng đã xem qua bài đăng này: https://gitlab.com/gitlab-org/gitlab-ce/issues/15167.

Bản thân bài đăng về việc thiết lập maven để lưu vào bộ nhớ cache các phụ thuộc đã tải xuống trong một repo cục bộ có thể truy cập được trong các bản dựng. Ý tưởng là bạn có thể viết tệp cấu hình maven cục bộ bằng cách trong .gitlab-ci.yml để thiết lập thư mục bộ nhớ cache và proxy của bạn.

before_script: 
    -echo '<settings 
      xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
      https://maven.apache.org/xsd/settings-1.0.0.xsd"> 
      <localRepository>/cache/.m2</localRepository> 
      <proxies> 
       <proxy> 
        <active>true</active> 
        <protocol>'$PROXY_PROTOCOL'</protocol> 
        <host>'$PROXY_HOST'</host> 
        <port>'$PROXY_PORT'</port> 
       </proxy> 
      </proxies> 
     </settings>' > $HOME/.m2/settings.xml 

build_debug1: 
    stage: build 
    script: "echo $PROXY_HOST" 

build_debug2: 
    stage: build 
    script: "cat $HOME/.m2/settings.xml" 

build_maven: 
    stage: build 
    script: "mvn $MAVEN_CLI_OPTS package" 
    artifacts: 
    paths: 
     - target/*.jar 

deploy_debug1: 
    stage: package 
    script: "ls target/" 

Lưu ý công việc gỡ lỗi xây dựng chỉ để xem liệu cài đặt proxy có được bơm chính xác hay không. Bạn có thể thiết lập các biến môi trường proxy như bí mật bằng cách sử dụng Gitlab bằng cách vào Project -> Settings -> CI/CD Pipelines -> Secret Variable.

Công việc deploy_debug cuối cùng là xem những gì được tạo trong thư mục đích của bạn.

+0

Có câu trả lời không? cho câu hỏi đã cho. –

+0

Tôi hiện đã cập nhật câu trả lời của mình với giải pháp chung mà tôi dự định sử dụng cho tất cả các dự án của mình. – UltimaWeapon

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