AppCenterとGitLabの統合

こんにちは、こんにちは!


BitBucketを介してGitLabとAppCenterの統合をセットアップした経験についてお話したいと思います。


このような統合の必要性は、Xamarin上のクロスプラットフォームプロジェクトのUIテストの自動起動を設定する過程で発生しました。 詳細なチュートリアル


* クロスプラットフォーム環境でのUIテストの自動化について、一般の人々が興味を持っている場合は別の記事を作成します。


そのような資料は1つの記事だけ掘り出しました。 したがって、私の記事は誰かを助けることができます。


目的 :チームがバージョン管理システムとしてGitLabを使用している間に、AppCenterでUIテストの自動起動を設定します。


問題は、AppCenterがGitLabと直接統合されていないことでした。 ソリューションの1つとして、BitBucketを介したバイパスが選択されました。


手順


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:password@bitbucket.org/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という名前を付けましょう。
* このファイルは、公開鍵ファイルとは異なり、拡張子を持ちません。


OK、公開鍵を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 git@bitbucket.org mirror: stage: mirror script: - git push --mirror https://****:****@bitbucket.org/*****/*****.git 

3. AppCenterを構成する


AppCenterで新しいアプリケーションを作成します。



言語/プラットフォームを指定します



次に、新しく作成したアプリケーションの[ビルド]セクションに移動します。 BitBucketとステップ1で作成したリポジトリを選択します。


では、ビルドを構成する必要があります。 これを行うには、歯車のアイコンを見つけます



原則として、すべてが直観的です。 プロジェクトと構成を選択します。 必要に応じて、ビルド後にテストの起動を有効にします。 それらは自動的に開始されます。


原則として、それだけです。 簡単に聞こえますが、当然、すべてがスムーズに進むわけではありません。 したがって、作業中に発生したいくつかのエラーについて説明します。


'ssh-keygen'は、内部コマンドまたは外部コマンドとして認識されません。

これは、ssh-keygen.exeへのパスが環境変数に追加されていないためです。
2つのオプションがあります:C:\ Program Files \ Git \ usr \ binを環境変数に追加する(マシンの再起動後に適用されます)か、このディレクトリからコンソールを起動します。


AppCenterが間違ったBitBucketアカウントに接続していませんか?

この問題を解決するには、AppCenterからBitBucketアカウントを解く必要があります。 間違ったBitBucketアカウントに入り、ユーザープロファイルに移動します。



次に、[設定]> [アクセス管理]> [OAuth]に移動します



[取り消し]をクリックして、アカウントを解きます。



その後、必要なBitBucketアカウントでログインする必要があります
* 極端な場合には、ブラウザーのキャッシュもクリアする


次に、AppCenterに移動します。 [ビルド]セクションに移動し、[BitBucketアカウントの切断]をクリックします



古いアカウントが解放されると、AppCenterを再度バインドします。 次に、目的のアカウントに移動します。


「eval」は内部コマンドまたは外部コマンドとして認識されません

コマンドの代わりに使用


  - eval $(ssh-agent -s) 

コマンド:


  - ssh-agent 

場合によっては、C:\ Program Files \ Git \ usr \ bin \ ssh-agent.exeへのフルパスを指定するか、ランナーが実行されているマシンのシステム変数にこのパスを追加する必要があります。


AppCenterビルドは、無関係なbitBucketリポジトリからプロジェクトのビルドを起動しようとします

私の場合、複数のアカウントで作業したために問題が発生しました。 キャッシュをクリアすることにしました。



Source: https://habr.com/ru/post/J444136/


All Articles