コンテンツの提出

GitHub UI またはローカルのフォークを利用して、新しいコンテンツまたはコンテンツの変更を提出する方法を学びます

新しいドキュメントの内容を追加したり、既存のコンテンツの改善をするには、プルリクエスト (PR)を提出してください。

以下の図は新しいドキュメントにコントリビュートする方法を示しています。

flowchart LR
    subgraph first[コントリビュートする方法]
    direction TB
       T[ ] -.-
       B[GitHub でフォークする] --- C[Markdownでドキュメントを作成する<br>Hugo でサイトをビルドする]
       C --- D[フォーク先にソースコードを push する]
       D --- E[プルリクエストを公開する]
       E --- F[CNCF CLA に署名する]
    end

classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px;
classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold
classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000
class A,B,C,D,E,F,G,H grey
class S,T spacewhite
class first,second white

図 1. 新しいコンテンツにコントリビュートする。

GitHub を使用した変更

もし、Git のワークフローをあまり慣れていなければ、プルリクエストを作成して提出するより簡単な方法があります。 図 2 は手順の概要を示しており、詳細はこの後に続きます。

flowchart LR
A([fa:fa-user 新しい<br>コントリビューター]) --- id1[(open-telemetry/opentelemetry.io<br>GitHub)]
subgraph tasks[GitHub を使用した変更]
direction TB
    0[ ] -.-
    1[1\. ページを編集] --> 2[2\. GitHub Markdownエディターを利用して変更を加える]
    2 --> 3[3\. Propose file change を記入]

end
subgraph tasks2[ ]
direction TB
4[4\. Propose file change を選択] --> 5[5\. Create pull request を選択] --> 6[6\. Open a pull request を記入]
6 --> 7[7\. Create pull request を選択]
end

id1 --> tasks --> tasks2

classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px;
classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold
classDef k8s fill:#326ce5,stroke:#fff,stroke-width:1px,color:#fff;
classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000
class A,1,2,3,4,5,6,7 grey
class 0 spacewhite
class tasks,tasks2 white
class id1 k8s

図 2. GitHub を利用した PR の公開手順。

  1. 問題を見つけたページ上で、右側のナビゲーションパネルにある ページの編集 のオプションを選択してください。

  2. プロジェクトのメンバーでない場合、GitHub でリポジトリのフォークの作成を提案されます。Fork this repositoryを選択してください。

  3. GitHub のエディターで、変更を加えます。

  4. Propose file change フォームに記入してください。

  5. Propose file change を選択します。

  6. Create Pull request を選択します。

  7. Open a pull request 画面に表示されます。あなたの説明はレビュアーが理解するのに役立ちます。

  8. Create pull requestを選択してください。

プルリクエストをマージする前に、OpenTelemetry コミュニティメンバーはレビューして承認します。

レビュアーから変更を求められた場合。

  1. File changedタブに移動してください。
  2. プルリクエストによって変更されたファイルのいずれかで、鉛筆(編集)アイコンを選択します。
  3. 求めら得た変更を加えください。 コードの提案があれば、適用してください。
  4. 変更をコミットしてください。

レビューが完了したら、レビュアーは PR をマージして変更が数分後に反映されます。

ローカルのフォークから作業する

Git に慣れている場合もしくは、変更が数行以上の場合は、ローカルのフォークから作業してください。

git がパソコンにインストール済みであることを確認してください。 Git のユーザーインターフェースも利用できます。

図 3 は、ローカルのフォークから作業するときに従う手順を示しています。詳細はそれぞれの手順に従ってください。

flowchart LR
1[open-telemetry/opentelemetry<br>repository をフォーク] --> 2[ローカルのクローンを作成<br>アップストリームを設定]
subgraph changes[変更]
direction TB
S[ ] -.-
3[ブランチを作成<br>例 my_new_branch] --> 3a[テキストエディター<br>を使用した変更の追加] --> 4["Hugo を使用した<br>変更のプレビュー<br>(localhost:1313)"]
end
subgraph changes2[コミット / プッシュ]
direction TB
T[ ] -.-
5[変更をコミット] --> 6[origin/my_new_branch<br>にコミットをプッシュ]
end

2 --> changes --> changes2

classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px;
classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold
classDef k8s fill:#326ce5,stroke:#fff,stroke-width:1px,color:#fff;
classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000
class 1,2,3,3a,4,5,6 grey
class S,T spacewhite
class changes,changes2 white

図 3. ローカルのフォークで作業して変更を追加。

opentelemetry.io リポジトリをフォークする

  1. opentelemetry.io リポジトリに移動してください。
  2. フォークを選択してください。

ローカルのクローンを作成し、アップストリームを設定してください

  1. ターミナルウィンドウで、フォークをクローンし、必要なものをインストールしてください。

    git clone git@github.com:<your_github_username>/opentelemetry.io.git
    cd opentelemetry.io
    npm install
    
  2. open-telemetry/opentelemetry.io リポジトリを upstream リモートに設定。

    git remote add upstream https://github.com/open-telemetry/opentelemetry.io.git
    
  3. originupstream リポジトリの確認。

    git remote -v
    

    出力は以下のようになります。

    origin	git@github.com:<your_github_username>/opentelemetry.io.git (fetch)
    origin	git@github.com:<your_github_username>/opentelemetry.io.git (push)
    upstream	https://github.com/open-telemetry/opentelemetry.io.git (fetch)
    upstream	https://github.com/open-telemetry/opentelemetry.io.git (push)
    
  4. フォークの origin/mainopen-telemetry/opentelemetry.ioupstream/main からコミットをフェッチ。

    git fetch origin
    git fetch upstream
    

    これにより、変更を加える前にローカルリポジトリが最新の状態であることを確認できます。 フォークをアップストリームと同期させるために、定期的にアップストリームの変更をオリジンにプッシュしてください。

ブランチを作成

  1. 新しいブランチを作成します。 この例はベースブランチが upstream/main であると想定しています。

    git checkout -b <my_new_branch> upstream/main
    
  2. コードエディターまたはテキストエディターを使用して変更を加えてください。

いつでも、git status コマンドを使用して、どのファイルが変更したか確認できます。

変更のコミット

プルリクエストを提出する準備ができたら、変更をコミットしてください。

  1. ローカルリポジトリで、コミットが必要なファイルを確認してください。

    git status
    

    出力は次のようになります。

    On branch <my_new_branch>
    Your branch is up to date with 'origin/<my_new_branch>'.
    
    Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git checkout -- <file>..." to discard changes in working directory)
    
    modified:   content/en/docs/file-you-are-editing.md
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
  2. Changes not staged for commit のリストされているファイルをコミットしてください。

    git add <your_file_name>
    

    これを各ファイルに対して繰り返してください。

  3. すべてのファイルを追加した後に、 コミットを作成してください。

    git commit -m "Your commit message"
    
  4. ローカルブランチと新しいコミットをリモートのフォークにプッシュしてください。

    git push origin <my_new_branch>
    
  5. 変更がプッシュされると、GitHub が PR を作成できることを知らせます。

フォークからプルリクエストを公開する

図 4 はフォークから opentelemetry.io への PR を開く手順を示しています。

flowchart LR
subgraph first[ ]
direction TB
1[1\. opentelemetry.io リポジトリに移動] --> 2[2\. New Pull Request を選択]
2 --> 3[3\. compare across forks を選択]
3 --> 4[4\. head repository のドロップダウンメニューから<br>自身のフォークを選択]
end
subgraph second [ ]
direction TB
5[5\. compare のドロップダウンメニューから<br>自身のブランチを選択] --> 6[6\. Create Pull Request を選択]
6 --> 7[7\. PR に説明を追加]
7 --> 8[8\. Create pull request を選択]
end

first --> second

classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px;
classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold
class 1,2,3,4,5,6,7,8 grey
class first,second white

図 4. フォークから、PR を公開する手順 opentelemetry.io.

  1. Web ブラウザで opentelemetry.io リポジトリにアクセスしてください。

  2. New Pull Request を作成してください。

  3. compare across forks を選択してください。

  4. head repository ドロップダウンメニューから、あなたのフォークを選択してください。

  5. ドロップダウンメニューの compare から、あなたのブランチを選択してください。

  6. Create Pull Request を選択してください。

  7. プルリクエストの説明を追加してください。

    • タイトル (50 文字未満): 変更の意図を要約してください。

    • 説明: 変更を詳細に記述してください。

      • GitHub イシューに関連する場合、Fixes #12345Closes #12345 を説明に記述することで、PR のマージしたあとに GitHub の自動化が該当イシューをクローズします。 他の関連する PR がある場合もリンクしてください。
      • 特定のことに対してアドバイスを求める場合、説明にレビュアーが考えて欲しい質問を含めてください。
  8. Create pull request ボタンを選択してください。

プルリクエストは、Pull requests で確認できます。

PR を公開した後に、自動テストの実行と Netlify を使用したプレビューのデプロイを試みます。

  • Netlify ビルドが失敗した場合、詳細な情報のために Details を選択してください。
  • Netlify のビルドが成功した場合、Details を選択して、変更が適用された OpenTelemetry のウェブサイトのステージングバージョンを開いてください。 これがレビュアーが変更を確認する方法です。

他のチェックも同様に失敗している可能性があります。すべての PR チェック を参照してください。

内容の問題を自動的に修正する

リポジトリに変更を提出するまえに、以下のコマンドを実行して (i) 報告された問題の対応し、(ii) スクリプトによって変更されたファイルのコミットをしてください。

npm run test-and-fix

ファイルに対して、テストとすべての問題の修正を分割して実行するには、以下を実行してください。

npm run test    # ファイルを更新せずにチェックのみを実行します
npm run fix:all # ファイルを更新する場合があります。

利用可能な NPM スクリプトのリストを表示するには、npm run を実行してください。 プルリクエストのチェックとエラーの自動修正の詳細は、PR checks を参照してください。

変更をローカルでプレビューする

変更のプッシュまたはプルリクエストの公開の前に、ローカルでプレビューしてください。 プレビューはビルドエラーとマークダウンのフォーマットの問題を検出できます。

Hugo をローカルでビルドと提供するには、以下のコマンドを実行してください。

npm run serve

Web ブラウザで http://localhost:1313 に移動してローカルプレビューを確認してください。 Hugo は変更を監視し、必要に応じてサイトをリビルドします。

ローカルの Hugo インスタンスを停止するには、ターミナルにもどって Ctrl+C を入力するか、ターミナルを閉じてください。

サイトデプロイと PR プレビュー

PR を提出したら、Netlify は deploy preview を作成し、変更をレビューできます。 PR がマージされると、Netlify はプロダクションサーバーに更新されたサイトを本番サーバーにデプロイします。

Note: PR プレビューには ドラフトページ が含まれますが、本番ビルドには含まれません。

デプロイログなどを確認するには、プロジェクトの dashboard を確認してください。 Netlify ログインが必要です。

PR ガイドライン

PR がマージされる前に、レビューと編集を数回繰り返すことがあります。 このプロセスをできるだけ簡単にするために、以下のガイドラインに従ってください。

  • もしあなたの PR が簡単な修正でない場合は、フォークから作業してください。 リポジトリの上部にある Fork ボタンをクリックし、フォークをローカルにクローンしてください。準備ができたら、アップストリームリポジトリに PR を作成してください。
  • あたなたのフォークの main ブランチから作業をせずに、PR 専用のブランチを作成してください。
  • メンテナーがあなたのプルリクエストに変更を加えられることを確認してください。

レビュアーからの変更

レビュアーはあなたのプルリクエストにコミットすることがあります。 ほかの変更を加える前に、それらのコミットをフェッチしてください。

  1. リモートフォークからコミットをフェッチして、作業中のブランチをリベースしてください。

    git fetch origin
    git rebase origin/<your-branch-name>
    
  2. リベースしたあとに、フォーク先にあなたの変更をフォースプッシュしてください。

    git push --force-with-lease origin <your-branch-name>
    

コンフリクトは GitHub UI からも解決できます。

マージのコンフリクトとリベース

別のコントリビューターが別の PR で同じファイルに変更をコミットすると、マージコンフリクトが発生する可能性があります。 あなたの PR ですべてのマージコンフリクトを解決する必要があります。

  1. フォークを更新して、ローカルブランチをリベースしてください。

    git fetch origin
    git rebase origin/<your-branch-name>
    

    フォークに変更をフォースプッシュしてください。

    git push --force-with-lease origin <your-branch-name>
    
  2. open-telemetry/opentelemetry.ioupstream/main から変更をフェッチして、あなたのブランチをリベースしてください。

    git fetch upstream
    git rebase upstream/main
    
  3. リベースの結果を確認してください。

    git status
    

    これにより、多くのファイルがコンフリクトとしてマークされます。

  4. コンフリクトが発生した各ファイルを開き、コンフリクトマーカー(>>><<< そして ===) を探してください。 コンフリクトを解消してコンフリクトマーカーを削除してください。

    詳細は、How conflicts are presented を確認してください。

  5. ファイルをチェンジセットに追加してください。

    git add <filename>
    
  6. リベースを続けてください。

    git rebase --continue
    
  7. ステップ 2 から 5 を必要に応じて繰り返してください。

    すべてのコミットを適用した後、git status コマンドはリベースが完了したことを示します。

  8. ブランチをあなたのフォークにフォースプッシュしてください。

    git push --force-with-lease origin <your-branch-name>
    

    プルリクエストにはもうコンフリクトが表示されません。

マージの要件

プルリクエストは、以下の条件を満たしたときにマージされます。

  • 承認者、メンテナー、技術委員会メンバー、または専門家によるすべてのレビューが “Approved” ステータスであること。
  • 解決していない会話がないこと。
  • 最低 1 人の承認者によって承認されていること。
  • 失敗している PR チェックがないこと。
  • PR ブランチがベースブランチと最新の状態であること。

重要

PR チェックの失敗についてあまり心配しないでください。 コミュニティメンバーが修正方法を教えたり、代わりに修正したりしてくれます。