gitlabCIを使用してソースコードにタグを付ける方法


13

gitlabを環境に新しく導入し、gitlab CIを使用してCI CDパイプラインを作成しようとしました。以下のように、.gitlab-ci.ymlを使用してパイプラインを作成し、アーティファクトをアーカイブすることで、いくつかのMavenゴールを実行することで、より良い進歩を得ました。機能しないスクリプトの後にタグを付けようとしました。今、私はどのようにgitタグを私のソースコードに自動化できるかを理解しようとしています。masterブランチが正常にビルドされた後、ソースコードのタグを作成したいと思います。セマンティックバージョンを使用して、ソースコードにタグを付けています。最後に、マスターがビルドに成功したときはいつでも、マスターブランチにタグを作成したいと思います。

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

ログ:

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

仕事は成功した


ログを追加してください
030

添付されているのは、logs @ 030です
pandey

回答:


7

Dockerイメージを変更しようとし、gitタグのいくつかの手順を追加しました。以下は私のために働いた答えです、

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
オリジンをGitlabアクセストークンに設定する場合はoauth2:${GITLAB_ACCESS_TOKEN}、基本認証として使用します。
オーバーブリード

1
また、私は、を削除する必要がないことに注意したいと思います。それは、1行を削るoriginだけgit remote add api-origin https://...です。後でその新しいオリジンをで使用しgit push api-origin 1.0.15ます。
オーバーブリード

1
そして、2行追加して、うまくプッシュできるようにする必要がgit config user.email "${GITLAB_USER_EMAIL}"ありgit config user.name "${GITLAB_USER_NAME}"ました。
2018年

1
ジョブ/パイプラインの実行をスキップ-o ci.skipしてgit pushコマンドに追加することもできます
Nicolas Pepinster

1

git push origin 1.0.15 動作し、新しいタグが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
私はランナーがIIRCレポにプッシュバックすることができなくなり、ランナーはレポのクローンを作成するための唯一の読み取りキーを取得すると思う
Tensibai

可能かもしれませんが、これはログには表示されません。@pandey完全なログを投稿できますか?
030

@ 030 gitコマンドは、スクリプトの後で定義したときに機能しません... job1およびjob 2として作成する必要がありますか?
pandey

gitがdocker imageにインストールされていて、認証が成功した場合、それは動作するはずです。
030

@ 030これは通常は機能しません。ランナーは通常、リポジトリへの読み取り専用アクセスしか持っていません。:のようなログのルックスでエラー$ git push origin --tags \nremote: You are not allowed to upload code.
ケン・ウィリアムズ

0

同じ状況で、アーティファクトのビルドを公開した後、コミットにバージョン番号タグを付けたいと思っています。

私が検討しているソリューションの1つは、タグを任意のリポジトリにプッシュできるが、他には何もできないサービス(GitLabの内部または外部)を作成することです。サービス自体は、リポジトリへの書き込みを許可する資格情報を持っているため、各プロジェクトビルドにリポジトリへの書き込みアクセスを許可する必要はありません。

GitLabは、新しいコンテンツを含むコミットをプッシュする機能も付与せずに、既存のコミットにタグをプッシュできるアクセス許可レベルを提供していないようです。一般的な書き込みアクセスは、このユースケースで必要または必要とする以上のアクセス許可であるため、それがあった場合は、おそらく、そのリポジトリのみにコミットするアクセス許可を持つユーザーまたはトークンを各リポジトリに作成して、スコープを制限する必要があります。次に、それらすべてのユーザーまたはトークンを長期にわたって管理する必要があります。これは、扱いにくくなる可能性があるようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.