トライアム、こんにちは!
BitBucket を介して GitLab と AppCenter の統合をセットアップした私の経験について話したいと思います。
このような統合の必要性は、Xamarin 上のクロスプラットフォーム プロジェクトの UI テストの自動起動を設定するときに発生しました。 詳細なチュートリアルはカットの下にあります。
* 一般の皆様にご興味があれば、クロスプラットフォーム条件での UI テストの自動化について別の記事を作成します。
そんな資料を一つだけ掘り出した
タスク: 私たちのチームがバージョン管理システムとして GitLab を使用していることを考慮して、AppCenter で UI テストの自動起動を設定します。
問題 AppCenter は GitLab と直接統合されていないことが判明しました。 BitBucket によるバイパスがソリューションの XNUMX つとして選択されました。
ステップ
1. BitBucket に空のリポジトリを作成します
これについて詳しく説明する必要はないと思います:)
2. GitLabのセットアップ
リポジトリにプッシュ/マージするときに、変更も BitBucket にアップロードされる必要があります。 これを行うには、ランナーを追加します (または既存の .gitlab-ci.yml ファイルを編集します)。
まず、before_scripts セクションにコマンドを追加します。
- git config --global user.email "user@email"
- git config --global user.name "username"
次に、次のコマンドを目的のステージに追加します。
- git push --mirror https://username:[email protected]/username/projectname.git
私の場合、これは私が取得したファイルです:
before_script:
- git config --global user.email "user@email"
- git config --global user.name "username"
stages:
- mirror
mirror:
stage: mirror
script:
- git push --mirror https://****:*****@bitbucket.org/****/testapp.git
ビルドを起動し、変更/ファイルが BitBucket 上にあることを確認します。
* 実践で示されているように、SSH キーの設定はオプションです。 ただし、念のため、SSH 経由で接続を設定するためのアルゴリズムを以下に示します。
SSH経由で接続する
まず、SSH キーを生成する必要があります。 これについては多くの記事が書かれています。 たとえば、次のように見ることができます
生成されたキーは次のようになります。
次へ 秘密鍵 GitLab 上の変数として追加する必要があります。 これを行うには、[設定] > [CI/CD] > [環境変数] に移動します。 秘密キーを保存したファイルの内容をすべて追加します。 変数を SSH_PRIVATE_KEY と名付けましょう。
* このファイルには、公開キー ファイルとは異なり、拡張子はありません。
わかりました。次に、公開キーを BitBucket に追加する必要があります。 これを行うには、リポジトリを開いて、[設定] > [アクセス キー] に移動します。
ここでは、「キーの追加」をクリックし、公開キーを含むファイル (拡張子 .pub のファイル) の内容を挿入します。
次のステップは、gitlab-runner のキーを使用することです。 これらのコマンドを使用します。ただし、アスタリスクは詳細に置き換えてください。
image: timbru31/node-alpine-git:latest
stages:
- mirror
before_script:
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- git config --global user.email "*****@***"
- git config --global user.name "****"
- ssh -T [email protected]
mirror:
stage: mirror
script:
- git push --mirror https://****:****@bitbucket.org/*****/*****.git
3. AppCenterのセットアップ
AppCenterで新しいアプリケーションを作成します。
言語/プラットフォームを指定する
次に、新しく作成したアプリケーションの「ビルド」セクションに移動します。 そこで、BitBucket とステップ 1 で作成したリポジトリを選択します。
わかりました。ビルドを構成する必要があります。 これを行うには、歯車アイコンを見つけます
原則として、そこにあるものはすべて直感的です。 プロジェクトと構成を選択します。 必要に応じて、ビルド後のテストの起動を有効にします。 それらは自動的に開始されます。
基本的にはそれだけです。 簡単なことのように聞こえますが、当然のことながら、すべてがスムーズに進むわけではありません。 したがって、作業中に発生したいくつかのエラーについて説明します。
「ssh-keygen」は内部コマンドまたは外部コマンドとして認識されません。
また、ssh-keygen.exe へのパスが環境変数に追加されていないためにも発生します。
オプションは XNUMX つあります。C:Program FilesGitusrbin を環境変数に追加する (マシンの再起動後に適用されます)、またはこのディレクトリからコンソールを起動します。
AppCenter が間違った BitBucket アカウントに接続しましたか?
この問題を解決するには、BitBucket アカウントを AppCenter からリンク解除する必要があります。 間違った BitBucket アカウントにログインし、ユーザー プロファイルに移動します。
次に、[設定] > [アクセス管理] > [OAuth] に移動します。
「取り消し」をクリックしてアカウントのリンクを解除します。
この後、必要な BitBucket アカウントでログインする必要があります。
* 最後の手段として、ブラウザのキャッシュもクリアしてください。
それでは、AppCenter に行きましょう。 「ビルド」セクションに移動し、「BitBucket アカウントの切断」をクリックします。
古いアカウントのリンクが解除されると、AppCenter が再度リンクされます。 目的のアカウントに移動します。
「eval」は内部コマンドまたは外部コマンドとして認識されません
コマンドの代わりに使用します
- eval $(ssh-agent -s)
チーム:
- ssh-agent
場合によっては、C:Program FilesGitusrbinssh-agent.exe へのフル パスを指定するか、ランナーが実行されているマシンのシステム変数にこのパスを追加する必要があります。
AppCenter Build が古い bitBucket リポジトリからプロジェクトのビルドを起動しようとしています
私の場合、複数のアカウントを使用していたために問題が発生しました。 キャッシュをクリアすることにしました。
出所: habr.com