GitLabでのホスティング¶
-
すべてを追加してコミットする
$ git add -A && git commit -am "shard complete"
-
shard.yml
で指定されているのと同じname
とdescription
でGitLabプロジェクトを作成します。 -
リモートを追加します。(
<YOUR-GITLAB-USERNAME>
と<YOUR-REPOSITORY-NAME>
を適宜置き換えてください)$ git remote add origin https://gitlab.com/<YOUR-GITLAB-USERNAME>/<YOUR-REPOSITORY-NAME>.git
SSHを使用する場合は
$ git remote add origin git@gitlab.com:<YOUR-GITLAB-USERNAME>/<YOUR-REPOSITORY-NAME>.git
-
プッシュする
$ git push origin master
パイプライン¶
次に、コードをリポジトリにプッシュしたときにテストを実行し、ドキュメントをビルド/デプロイできるGitLabパイプラインを設定しましょう。
単純に、次のファイルをリポジトリのルートに追加して、.gitlab-ci.yml
という名前を付けます。
image: "crystallang/crystal:latest"
before_script:
- shards install
cache:
paths:
- lib/
spec & format:
script:
- crystal spec
- crystal tool format --check
pages:
stage: deploy
script:
- crystal docs -o public src/palindrome-example.cr
artifacts:
paths:
- public
only:
- master
これは2つのジョブを作成します。最初のジョブは「spec & format」というタイトルです(好きな名前を使用できます)。デフォルトでは、パイプラインの「test」ステージに入ります。 image
で指定されたdockerコンテナの真新しいインスタンスで、script
のコマンドの配列を実行するだけです。おそらく、そのコンテナをあなたが使用しているcrystalのバージョン(shard.ymlで指定されているもの)にロックしたいと思うでしょうが、この例では、単にlatest
タグを使用します。
パイプラインのテストステージは、(配列の各要素が正常な終了コードを返した場合)合格するか、(要素の1つがエラーを返した場合)失敗します.
合格した場合、パイプラインはここで定義した2番目のジョブに進みます。これは名前を付ける必要があります "pages"。これは、gitlabページサイトにコンテンツをデプロイするための特別なジョブです!これは、「deploy」ステージで発生するように指定したため、テストに合格した後に実行されます。再びscript
のコマンドを実行しますが(今回はドキュメントをビルドします)、今回はパスpublic
(ドキュメントを隠した場所)をジョブの成果物として保持するように指示します。
このジョブにpages
という名前を付け、ドキュメントをpublic
ディレクトリに配置し、それをartifact
として指定した結果、GitLabはそのディレクトリにあるサイトをデフォルトのURL https://<YOUR-GITLAB-USERNAME>.gitlab.io/<YOUR-REPOSITORY-NAME>
にデプロイします。
ファイル内のbefore_script
とcache
キーは、すべてのジョブで同じスクリプト(shards install
)を実行し、作成されたファイル(cache
)を保持するためのものです。シャードに依存関係がない場合は必要ありません.
上記のファイルをプロジェクトにコミットしてプッシュすると、新しいパイプラインの最初の実行がトリガーされます.
$ git add -A && git commit -am 'Add .gitlab-ci.yml' && git push origin master
バッジ¶
パイプラインの実行中に、プロジェクトにバッジを添付して、ドキュメントと(うまくいけば)パイプラインの正常な状態を示しましょう。(バッジのドキュメントを読むことをお勧めします。)
バッジは画像付きのリンクにすぎません。そのため、パイプラインへのリンクを作成し、GitlabパイプラインバッジAPIからバッジ画像を取得しましょう。
_全般_設定の_バッジ_セクションで、最初にリリースバッジを追加します。リンクは次のとおりです。https://gitlab.com/<YOUR-GITLAB-USERNAME>/<YOUR-REPOSITORY-NAME>/pipelines
_バッジ画像URL_は次のとおりです。https://gitlab.com/<YOUR-GITLAB-USERNAME>/<YOUR-REPOSITORY-NAME>/badges/master/pipeline.svg
.
そして、パイプラインが完了したら、ドキュメントが完成し、shields.io
の汎用バッジでそれらにリンクできます。
- リンク:
https://<YOUR-GITLAB-USERNAME>.gitlab.io/<YOUR-REPOSITORY-NAME>
- 画像:
https://img.shields.io/badge/docs-available-brightgreen.svg
リリース¶
リリースとは、履歴の中で名前が付けられた特別なコミットのことです(タグ付けを参照)。
Gitリポジトリからライブラリをインストールする場合、リポジトリには、
v
というプレフィックスが付いた、セマンティックバージョニングのような形式に従ったバージョタグが必要です。例:v1.2.3、v2.0.0-rc1、またはv2017.04.1
GitLabには、リリース機能もあり、このタグにファイルと説明を関連付けることができます。こうすることで、(たとえば)バイナリを配布できます.
リリースドキュメントからわかるように、UIでリリースノート/ファイルとともに_アノテーション付き_タグを作成するか、
コマンドラインから次のようにタグを作成できます
$ git tag -a v0.1.0 -m "Release v0.1.0"
プッシュする
$ git push origin master --follow-tags
その後、UIを使用してリリースノートを追加/編集し、ファイルを添付します.
ベストプラクティス
- リリースには、
-a
オプションを使用してアノテーション付きタグを作成します。 - セマンティックバージョニングに従います。
リリースバッジ¶
必要に応じて、リリースにshields.io
バッジを追加することもできます。GitLabはこの種のものに完全には対応しておらず、誰かがshields.ioにgitlabのバージョンバッジを追加するまでは、URLにバージョン番号を直接コード化する必要があります.
- リンク:
https://img.shields.io/badge/release-<VERSION>-brightgreen.svg
- 画像:
https://img.shields.io/badge/release-<VERSION>-brightgreen.svg
ここで、<VERSION>
はv0.1.0
のようにv
がプレフィックスされたバージョン番号です。
GitHubへのミラーリング¶
GitHubのプロジェクトは通常、より多くの露出と他のサービスとのより良い統合を備えているため、ライブラリもそこにホストしたい場合は、GitLabからGitHubへの「プッシュミラー」を設定できます。
- プロジェクトと同じ名前のGitHubリポジトリを作成します。
- ここの指示に従ってください:https://docs.gitlab.com/ee/workflow/repository_mirroring.html#setting-up-a-push-mirror-from-gitlab-to-github-core
- GitHubの説明を編集します。次のように使用できます
- 説明:前後に同じ単語。これはミラーです
- リンク:
https://gitlab.com/<YOUR-GITLAB-USERNAME>/<YOUR-REPOSITORY-NAME>/
これはプッシュミラーであるため、変更は一方向にのみ伝播されます。そのため、潜在的な協力者に、プルリクエストと問題はGitLabプロジェクトに送信する必要があることを知らせてください.