Cách gắn thẻ mã nguồn bằng gitlabCI


13

Chúng tôi có gitlab mới cho môi trường của chúng tôi và cố gắng tạo ra một số đường ống CD CI bằng gitlab CI. Tôi đã có một số tiến bộ tốt hơn với việc chạy một số mục tiêu maven, tạo đường ống và lưu trữ các tạo tác bằng cách sử dụng .gitlab-ci.yml của tôi như dưới đây. Tôi đã cố gắng đưa ra các thẻ sau khi kịch bản không hoạt động. Bây giờ, tôi đang cố gắng tìm hiểu làm thế nào tôi có thể tự động hóa các thẻ git vào mã nguồn của mình. Tôi muốn tạo thẻ cho sourcecode sau khi nhánh chính được xây dựng thành công. chúng tôi đang sử dụng các phiên bản Semantic để gắn thẻ mã nguồn của chúng tôi. Cuối cùng, vì vậy, bất cứ khi nào chủ nhân xây dựng thành công, tôi muốn tạo một thẻ vào nhánh chính của mình.

image: maven:3.5-jdk-8-alpine

stages:
 - build
 - deploy
 - tag

maven_build:
  stage: build

  script:
   - mvn clean package
artifacts:
 paths:
 - target/*.jar

after_script:
   - ls -a
   - cd target && ls -a
   - git --version
   - git tag -a 1.0.15 -m "Version created by gitlab-ci Build"
   - git push origin 1.0.15
only:
  - master

nhật ký:

Running after script...
$ ls -a
.
..
.git
.gitignore
.gitlab-ci.yml
 LICENSE
README.md
pom.xml
src
target
$ cd target && ls -a
.
..
apidocs
classes
generated-sources
generated-test-sources
javadoc-bundle-options
maven-archiver
maven-simple-0.2-SNAPSHOT-javadoc.jar
maven-simple-0.2-SNAPSHOT-sources.jar
maven-simple-0.2-SNAPSHOT.jar
maven-status
surefire-reports
test-classes
Uploading artifacts...
target/maven-simple-0.2-SNAPSHOT-javadoc.jar: found 1 matching files 
Uploading artifacts to coordinator... ok            id=60598296 
responseStatus=201 Created token=Gu-eH1es

Công việc đã thành công


Vui lòng thêm nhật ký
030

đính kèm là nhật ký @ 030
pandey

Câu trả lời:


7

Tôi đã cố gắng thay đổi hình ảnh docker và thêm vài bước cho thẻ git. Dưới đây là câu trả lời làm việc cho tôi,

image: maven

stages:
- build
- deploy
- tag

maven_build:
stage: build

  script:
   - mvn clean package
   artifacts:
  paths:
   - target/*.jar

  after_script:
   - ls -a
   - cd target && ls -a
   - git --version
   - git remote remove origin
   - git remote set-url origin https://"username:passwd"@gitlab.com/accountname/projectname
   - git tag -a 1.0.15 -m "Version created by gitlab-ci Build"
   - git push origin 1.0.15
  only:
    - master

2
Nếu bạn muốn đặt nguồn gốc thành mã thông báo truy cập Gitlab, hãy sử dụng oauth2:${GITLAB_ACCESS_TOKEN}làm auth cơ bản.
Overbryd

1
Ngoài ra tôi muốn lưu ý rằng bạn không cần phải xóa origin, bạn chỉ có thể loại bỏ git remote add api-origin https://...một dòng. Sau này sử dụng nguồn gốc mới trong git push api-origin 1.0.15.
Overbryd

1
Và tôi cần phải thêm hai dòng, git config user.email "${GITLAB_USER_EMAIL}"git config user.name "${GITLAB_USER_NAME}"để làm cho nó đẩy mạnh.
Overbryd

1
bạn cũng có thể bỏ qua một công việc / thực hiện đường ống thêm -o ci.skipvào lệnh git đẩy của bạn
Nicolas Pepinster

1

git push origin 1.0.15 nên hoạt động và một thẻ mới nên được thêm vào các thẻ trong gitlab

https://docs.gitlab.com/ee/university/training/topics/tags.html

git checkout master

# Lightweight tag
git tag my_lightweight_tag

# Annotated tag
git tag -a v1.0 -m ‘Version 1.0’
git tag

git push origin --tags

2
Tôi nghĩ rằng người chạy chỉ nhận được một phím đọc để sao chép repo, người chạy sẽ không thể đẩy lùi repo IIRC
Tensibai

Có thể có thể, nhưng điều này không được hiển thị trong nhật ký. @pandey Bạn có thể đăng nhật ký đầy đủ không?
030

@ 030 lệnh git không hoạt động khi tôi xác định nó sau tập lệnh ... tôi có cần tạo như job1 và job 2 không?
pandey

Nếu git được cài đặt trong hình ảnh docker và xác thực thành công thì nó sẽ hoạt động.
030

@ 030 Điều này thường không hoạt động, người chạy thực sự thường chỉ có quyền truy cập chỉ đọc vào kho lưu trữ. Lỗi trong nhật ký trông giống như:$ git push origin --tags \nremote: You are not allowed to upload code.
Ken Williams

0

Tôi thấy mình trong tình huống tương tự, khi sau khi xuất bản bản dựng của một vật phẩm, tôi muốn gắn thẻ cam kết bằng thẻ số phiên bản.

Một giải pháp tôi đang xem xét là tạo ra một dịch vụ (bên trong hoặc bên ngoài GitLab) có khả năng đẩy thẻ vào bất kỳ kho lưu trữ nào, nhưng không thể làm gì khác . Bản thân dịch vụ sẽ có thông tin đăng nhập cho phép nó ghi vào kho, để mỗi bản dựng dự án không cần phải được cấp quyền truy cập ghi vào repo.

Tôi thích giải pháp này vì GitLab dường như không cung cấp mức cấp phép có thể đẩy thẻ lên các cam kết hiện có mà không cấp khả năng đẩy các cam kết có chứa nội dung mới. Quyền truy cập ghi chung là nhiều quyền hơn chúng ta cần hoặc muốn cho trường hợp sử dụng này, vì vậy nếu chúng ta có nó, có lẽ chúng ta cần giới hạn phạm vi bằng cách tạo người dùng hoặc mã thông báo cho mỗi kho lưu trữ có quyền để cam kết với kho lưu trữ đó. Sau đó, chúng tôi cần quản lý tất cả những người dùng hoặc mã thông báo đó theo thời gian, có vẻ như điều đó có thể trở nên khó sử dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.