ベースのドローンは、私はそれは主に次のような利点を持っていると思う、CI / CD、業界の兄貴jekinsに対する本当に良い個人的な感情は、私は比較的に言えば、ドローンを好む行います
- 追加のプラグイン管理ん
- YAMLファイルベース、製造が容易、バージョン管理を構成することができます
- さまざまな条件に応じて構築することができます
- よりユーザーフレンドリーなUIインターフェース
我々はそれを行うCIかの点で、私たちのバックエンドのJavaプロジェクトのために?
コードをコミットし、次のように一般的な手順は、
- ローカルにクローンプロジェクトは、gitのチェックアウト-b機能/同期状況、新機能の開発を完了するために、ブランチを作成します。このブランチでいくつかのコードを変更します。
- gitのアドオン。、書き込みコミットとコードを提出し、「同期記事のステータスを」-mコミットgitの準拠
- コードライブラリの枝に対応するプッシュコード、gitのプッシュ原点機能/同期のステータス
- 機能が開発されている場合は、開発(またはマスター)ブランチにプル要求を開始し、プロジェクトコードレビューの担当者を聞かせすることができます
- プロジェクトリーダーによってレビューは、メインブランチブランチにマージされます後
上の図から、我々はコードを送信すると、CIは2:00次の点に注意してくださいし、全体のプロセスを実行します見ることができます
- 道それが失敗した場合、それはスラックにメッセージを送信します、時間のビルドやユニットテストを実行するために、開発者が問題に気づくことができるようになり、この時間は、当然のことながら、メールまたはマイクロ手紙を送るためにも使用することが
- 問題が戻ってgithubのに書かれた結果だろうがある場合SonarQubeチェックを実行すると、開発者はこの問題を見ていきます
何githubの結果を確認するために戻って書かれSonarQubeを見て
ソナーのQubeのテストが完了したら、あなたはgithubのにトークン個人のアクセスを作成する必要があるので、テスト結果は(これがダウンして記述する必要があります)、githubのにはOAuth経由して送信されます
あなたのコードリポジトリを有効にすると、無人機は自動的に手動設定を必要とせずに、このようGitHubのようバージョン管理システムへのウェブフックが追加されます
kind: pipeline
name: default
steps:
# build for push and pull_request
- name: build-pr
image: maven:latest
pull: if-not-exists
commands:
- mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.skip=true -s settings.xml
when:
branch:
- feature/*
- issue/*
- develop
event:
- push
- pull_request
- name: unittest
image: maven:latest
pull: if-not-exists
commands:
- mvn test -s settings.xml
when:
branch:
- develop
event:
include:
- pull_request
- push
# 这里我们使用命令来深度定制我们的扫描,而不是使用drone sonar plugin
- name: sonar-scan
image: newtmitch/sonar-scanner:4.0.0-alpine
environment:
SONAR_TOKEN:
from_secret: sonar_token
GITHUB_ACCESS_TOKEN_FOR_SONARQUBE:
from_secret: github_access_token_for_sonarqube
commands:
- >
sonar-scanner
-Dsonar.host.url=https://sonarqube.company-beta.com/
-Dsonar.login=$$SONAR_TOKEN
-Dsonar.projectKey=smcp-service-BE
-Dsonar.projectName=smcp-service-BE
-Dsonar.projectVersion=${DRONE_BUILD_NUMBER}
-Dsonar.sources=src/main/java
-Dsonar.tests=src/test/java
-Dsonar.language=java
-Dsonar.java.coveragePlugin=jacoco
-Dsonar.modules=smcp-api,smcp-web
-Dsonar.java.binaries=target
-Dsonar.projectBaseDir=.
-Dsonar.analysis.mode=preview
-Dsonar.github.repository=Today_Group/SMCP-Service
-Dsonar.github.oauth=$$GITHUB_ACCESS_TOKEN_FOR_SONARQUBE
-Dsonar.github.pullRequest=${DRONE_PULL_REQUEST}
-Dsonar.github.disableInlineComments=false
when:
event:
- pull_request
branch:
- develop
# post sonarscan result back to git PR (not in preview mode)
- name: sonar-scan-feedback
image: newtmitch/sonar-scanner:4.0.0-alpine
environment:
SONAR_TOKEN:
from_secret: sonar_token
GITHUB_ACCESS_TOKEN_FOR_SONARQUBE:
from_secret: github_access_token_for_sonarqube
commands:
- >
sonar-scanner
-Dsonar.host.url=https://sonarqube.company-beta.com/
-Dsonar.login=$$SONAR_TOKEN
-Dsonar.projectKey=smcp-service-BE
-Dsonar.projectName=smcp-service-BE
-Dsonar.projectVersion=${DRONE_BUILD_NUMBER}
-Dsonar.sources=src/main/java
-Dsonar.tests=src/test/java
-Dsonar.language=java
-Dsonar.java.coveragePlugin=jacoco
-Dsonar.modules=smcp-api,smcp-web
-Dsonar.java.binaries=target
-Dsonar.projectBaseDir=.
-Dsonar.analysis.gitRepo=Today_Group/SMCP-Service
-Dsonar.analysis.pullRequest=${DRONE_PULL_REQUEST}
when:
event:
- pull_request
branch:
- develop
复制代码
コンフィギュレーションのドローンの上、次の点に注意して、全体のCIの基本的な流れであります
- ブランチの名前は、ステップ機能/、問題を/実行するときにのみ、トリガーに上記の始まりを開発する、ユニットテストのために、唯一の開発ブランチは(ニーズに合わせて調整することができる)有効になります
- ソナーの構成sonar.projectKey、sonar.projectNameの必要があり、名前は同じでソナーサーバー(sonar.host.url指定されたアドレス)でプロジェクトを作成するときに
- Sonar_token値はソナーサーバー上に作成され、その後、(倉庫のクリックでドローン、設定をセットすることができ入り)秘密のドローンの値を設定されています
- githubのトークンとsonar_token同じように、我々はする必要がプレセットでドローン中(利点は、あなたがそうより安全なこと、ファイルにパスワードを公開していないということです)
- マルチモジュールプロジェクトとJavaプロジェクトは、あなたがsonar.modulesに複数のモジュール名を指定することができますので
- PRへのスキャンソナーフィードバックコンテンツプレビューモードを指定しません
- ビルドjacoco(解析ユニットテストのカバレッジ)を使用して、のpom.xml Javaプロジェクトでは、このプラグインを導入する必要があります
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>target/jacoco.exec</dataFile>
<outputDirectory>target/jacoco</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
复制代码
発生する可能性のあるその他の問題:
- 実行後ciは完了し、またはどのようにマイクロチャネルグループに電子メールメッセージを送信します
:ドローンはに関する情報を提供し、電子メールやプラグインのマイクロ手紙
- アリババP3C統合またはカスタムのCheckstyleをsonarqubeすることができます
A:いいえP3Cプラグインが、PMD経由で統合することができます
統合されたP3C:www.jianshu.com/p/a3a58ac36 ...カスタムのCheckstyle:www.jianshu.com/p/a3a58ac36 ...
- 私が行う方法(など成功、時間、)自分の情報に基づいて統計を構築したいですか?
:ドローンは、プラグインwebhookeを提供し、あなただけの情報を送信する必要があるかもしれませんテンプレートの設定に応じて、次のことができ、独自の統計処理を記述する必要があります
- 私はどのように行う、プラグインをしたくないですか?
A:あなたはあなた自身のプラグインを書くことができ、公式ウェブサイトは、例えばbashは/行くがあり、あなたは言語に精通している可能性あり
過去の推奨読書
このような発泡インタビュアーとレプリケーションセットのMongoDB
MongoDBはこれらの設計のヒントは、50%の効率を向上させるために知っています