[[441815]] 以前のディレクトリ構造に従って完了します。ジョブ ディレクトリは、ジョブ テンプレートを保存するために使用されます。テンプレート ディレクトリは、パイプライン テンプレートを保存するために使用されます。今回は、すべてのジョブのベース テンプレートとして default-pipeline.yml を使用します。 ジョブテンプレートジョブは、ビルド、テスト、コード分析、アーティファクト、デプロイに分かれています。ルール機能スイッチはジョブごとに設定され、最終ジョブの動作は変数によって制御されます。 jobs/build.yml ビルドジョブテンプレート 共通ビルド テンプレート (maven/npm/gradle) と docker イメージ ビルド テンプレートの 2 つのジョブ テンプレートが含まれています。 - ## ビルド関連タスク
-
- 。建てる:
- ステージ: ビルド
- スクリプト:
- - |
- ${ビルドシェル}
- 変数:
- GIT_CHECKOUT: "true"
- ルール:
- - if: " $RUN_PIPELINE_BUILD == 'no' "
- いつ:決して
- -いつ: いつも
-
-
- ## イメージをビルドする
- .build-docker:
- ステージ: ビルドイメージ
- スクリプト:
- - dockerログイン -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWD $CI_REGISTRY
- - docker build -t ${IMAGE_NAME} -f ${DOCKER_FILE_PATH} 。
- -docker push ${IMAGE_NAME}
- -docker rmi ${イメージ名}
- ルール:
- - if: " $RUN_BUILD_IMAGE == 'no' "
- いつ:決して
- -いつ: いつも
jobs/test.yml テストジョブテンプレート 主に、Maven、Gradle、npm ユニット テストなどのプロジェクト ユニット テストを実行するために使用されます。 - #ユニットテスト
- 。テスト:
- ステージ: テスト
- スクリプト:
- -$テストシェル
- アーティファクト:
- レポート:
- junit: ${JUNIT_REPORT_PATH}
- ルール:
- - if: " $RUN_PIPELINE_TEST == 'no' "
- いつ:決して
- -いつ: いつも
jobs/codeanalysis.yml コードスキャンテンプレート スキャン ジョブとスキャン結果の取得の 2 つのジョブ テンプレートが含まれています。ここで、スキャン パラメータは、共通プロジェクト パラメータ、特別なマージ リクエスト パラメータ、カスタム プロジェクト パラメータに分類されます。 - ##コードスキャン
- ##
- ##
- ##
-
- .コード分析:
- 変数:
- GLOBAL_PROJECT_ARGS: "-Dsonar.projectKey=${CI_PROJECT_NAME}
- -Dsonar.projectName=${CI_PROJECT_NAME}
- -Dsonar.projectVersion=${CI_COMMIT_REF_NAME}
- -Dsonar.projectDescription=${CI_PROJECT_TITLE}"
- GLOBAL_SERVER_ARGS: "-Dsonar.ws.timeout=30
- -Dsonar.links.homepage=${CI_PROJECT_URL}
- -Dsonar.host.url=${SONAR_SERVER_URL}
- -Dsonar.login=${SONAR_SERVER_LOGIN}
- -Dsonar.sourceEncoding=UTF-8 "
- GLOBAL_MR_ARGS: " -Dsonar.pullrequest. key =${CI_MERGE_REQUEST_IID}
- -Dsonar.pullrequest.branch=${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}
- -Dsonar.pullrequest.base=${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}
- -Dsonar.gitlab.ref_name=${CI_COMMIT_REF_NAME}
- -Dsonar.gitlab.commit_sha=${CI_COMMIT_SHA}
- -Dsonar.gitlab.project_id=${CI_PROJECT_PATH}
- -Dsonar.pullrequest.gitlab.repositorySlug=${CI_PROJECT_ID} "
- 複数のブランチ引数: "-Dsonar.branch.name=${CI_COMMIT_REF_NAME}"
- ステージ: コード分析
- スクリプト:
- - エコー ${GLOBAL_PROJECT_ARGS} ${GLOBAL_SERVER_ARGS} ${SONAR_SCAN_ARGS} ${GLOBAL_MR_ARGS}
- #sonar-scanner $GLOBAL_PROJECT_ARGS $GLOBAL_SERVER_ARGS $SCAN_JAVA_ARGS
- - |
- [ $CI_PIPELINE_SOURCE == 'merge_request_event' ]の場合
-
- それから
- echo "ソナースキャナ ${GLOBAL_PROJECT_ARGS} ${GLOBAL_SERVER_ARGS} ${SONAR_SCAN_ARGS} "
- ソナースキャナー ${GLOBAL_PROJECT_ARGS} ${GLOBAL_SERVER_ARGS} ${SONAR_SCAN_ARGS}
- それ以外
- echo "sonar-scanner ${GLOBAL_PROJECT_ARGS} ${GLOBAL_SERVER_ARGS} ${SONAR_SCAN_ARGS} ${MULTI_BRANCH_ARGS}"
- ソナー スキャナー ${GLOBAL_PROJECT_ARGS} ${GLOBAL_SERVER_ARGS} ${SONAR_SCAN_ARGS} ${MULTI_BRANCH_ARGS}
- フィ
- ルール:
- - if: " $RUN_CODE_ANALYSIS == 'no' "
- いつ:決して
- -いつ: いつも
-
-
- #### コードスキャン結果を取得する
- .get_analysis_result:
- ステージ: get_analysis_result
- スクリプト:
- - |
- SONAR_REPORT_URL=$(grep "ceTaskUrl" .scannerwork/report-task.txt | awk -F = '{OFS="=";print $2,$3}' )
- ${SONAR_REPORT_URL} をエコーします
-
-
- iが{1..10}の場合
- する
- curl -k -u "${SONAR_SERVER_LOGIN}" : "" ${SONAR_REPORT_URL} -o sonar_result.txt -s
- grep '"status":"SUCCESS"' sonar_result.txt && SONAR_SCAN_RESULT= 'SUCCESS'
-
- [ ${SONAR_SCAN_RESULT} == 'SUCCESS' ]の場合
- それから
- 「${SONAR_SCAN_RESULT}」をエコーします
- SONAR_SCAN_RESULT=成功
-
- curl -k -u "${SONAR_SERVER_LOGIN}" : "" "${SONAR_SERVER_URL}/api/qualitygates/project_status?projectKey=$CI_PROJECT_NAME&branch=$CI_COMMIT_REF_NAME" -o result.txt -s
- echo "結果情報 ---->>>>>"
- 猫の結果.txt
- 結果=`cat result.txt | awk -F ':' '{印刷$3}' | awk -F '"' '{print$2}' `
-
- $結果をエコーする
-
- [ $result == 'ERROR' ]の場合
- それから
- echo "${result}"
- 出口122
- 壊す;
- それ以外
- 「成功しました!」とエコーします。
- 壊す;
- フィ
-
- それ以外
- SONAR_SCAN_RESULT = 'エラー'
- echo "$i 回目に結果情報を取得しましたが、失敗しました。10 秒間スリープします。"
- 猫ソナー結果.txt
- 睡眠10
- フィ
- 終わり
-
- ルール:
- - if: " $RUN_CODE_ANALYSIS == 'no' "
- いつ:決して
- -いつ: いつも
jobs/artifactory.yml アーティファクト管理ジョブ 製品のアップロードとダウンロードという 2 つのタスクが含まれます。アーティファクトリー リポジトリ インターフェースを使用します。 - ## 製品ライブラリ関連
- ##
-
- .deploy-アーティファクト:
- ステージ: デプロイアーティファクト
- スクリプト:
- - echo "curl -u${ARTIFACT_USER}:${ARTIFACT_PASSWD} -T ${ARTIFACT_PATH} $ARTIFACTORY_URL/$ARTIFACTORY_NAME/$TARGET_FILE_PATH/$TARGET_ARTIFACT_NAME"
- - curl -u${ARTIFACT_USER}:${ARTIFACT_PASSWD} -T ${ARTIFACT_PATH} "$ARTIFACTORY_URL/$ARTIFACTORY_NAME/$TARGET_FILE_PATH/$TARGET_ARTIFACT_NAME"
- ルール:
- - if: " $RUN_DEPLOY_ARTIFACTS == 'no' "
- いつ:決して
- -いつ: いつも
-
-
- .down-アーティファクト:
- ステージ: ダウンアーティファクト
- スクリプト:
- - curl -u${ARTIFACT_USER}:${ARTIFACT_PASSWD} -O "$ARTIFACTORY_URL/$ARTIFACTORY_NAME/$TARGET_FILE_PATH/$TARGET_ARTIFACT_NAME"
- -ls
jobs/deploy.yml デプロイメントジョブテンプレート k8s に基づいてリリースおよびロールバック構成をリリースします。 - ## アプリケーションリリース
-
-
- ## kubectlイメージ公開を使用する
- .deploy_k8s:
- ステージ: デプロイ
- スクリプト:
- - $KUBE_TOKENをエコーする
- - kubectl config set -cluster my-cluster
- - kubectl config set -credentials admin
- -ls -a
- - sed -i "s#__namespace__#${NAMESPACE}#g" ${DEPLOY_FILE}
- - sed -i "s#__appname__#${APP_NAME}#g" ${DEPLOY_FILE}
- - sed -i "s#__containerport__#${CONTAINER_PORT}#g" ${DEPLOY_FILE}
- - sed -i "s#__nodeport__#${NODE_PORT}#g" ${DEPLOY_FILE}
- - sed -i "s#__imagename__#${IMAGE_NAME}#g" ${DEPLOY_FILE}
- - sed -i "s#__CI_ENVIRONMENT_SLUG__#${CI_ENVIRONMENT_SLUG}#g" ${DEPLOY_FILE}
- - sed -i "s#__CI_PROJECT_PATH_SLUG__#${CI_PROJECT_PATH_SLUG}#g" ${DEPLOY_FILE}
- - sed -i "s#__ingressdomain__#${ENV_URL}#g" ${DEPLOY_FILE}
- - cat ${DEPLOY_FILE}
- - 「kubectlシークレット docker-registry ${APP_NAME}を作成します\
-
-
-
-
- - kubectl apply -f ${DEPLOY_FILE}
- ルール:
- - if: " $RUN_DEPLOY_K8S == 'no'"
- いつ:決して
- -場合: 手動
- 環境:
- 名前: "${ENV_NAME}"
- URL: "http://${ENV_NAME}.${CI_PROJECT_NAMESPACE}.${CI_PROJECT_NAME}.devops.com"
-
-
-
-
- ## ロールバック
- .rollout_k8s:
- ステージ: デプロイ
- スクリプト:
- -rm -rf $HOME/.kube
- - kubectl config set -cluster my-cluster
- - kubectl config set -credentials admin
- - kubectl ロールアウト履歴デプロイメント ${APP_NAME} -n ${NAMESPACE}
- - kubectl ロールアウト デプロイメントを元に戻す ${APP_NAME} -n ${NAMESPACE}
- ルール:
- - if: " $RUN_DEPLOY_K8S == 'no' "
- いつ:決して
- -場合: 手動
- 環境:
- 名前: "${ENV_NAME}"
- アクション:停止
デフォルトのパイプライン テンプレートtemplates/default-pipeline.yml テンプレートは、次の部分に分かれています。 - インポートジョブテンプレートを含める
- 変数はグローバル変数を定義します
- ワークフローはパイプライン制御を定義する
- ジョブ ジョブを作成して公開する
インポートジョブテンプレートを含める - 含む:
- - プロジェクト: 'cidevops/cidevops-newci-service'
- 参照: マスター
- ファイル: 'jobs/build.yml'
- - プロジェクト: 'cidevops/cidevops-newci-service'
- 参照: マスター
- ファイル: 'jobs/test.yml'
- - プロジェクト: 'cidevops/cidevops-newci-service'
- 参照: マスター
- ファイル: 'jobs/codeanalysis.yml'
- - プロジェクト: 'cidevops/cidevops-newci-service'
- 参照: マスター
- ファイル: 'jobs/deploy.yml'
- - プロジェクト: 'cidevops/cidevops-newci-service'
- 参照: マスター
- ファイル: 'jobs/artifactory.yml'
変数はグローバル変数を定義します - 変数:
- ## グローバル設定
- GIT_CLONE_PATH: ${CI_BUILDS_DIR}/builds/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/${CI_PIPELINE_ID}
- GIT_CHECKOUT: 「偽」
- CACHE_DIR: ""
-
- ## ジョブ制御
- RUN_PIPELINE_BUILD: "" #ビルドを実行するかどうか yes/ no
- RUN_PIPELINE_TEST: "" #テストを実行するかどうか yes/ no
- RUN_CODE_ANALYSIS: "" #コードをスキャンするかどうか yes/ no
- RUN_BUILD_IMAGE: "" #イメージを生成するかどうか yes/ no
- RUN_DEPLOY_ARTIFACTS: "" #製品をアップロードするかどうか yes/ no
- RUN_DEPLOY_K8S: "" #K8S をリリースするかどうか yes/ no
-
- ## コンテナイメージへの依存
- ビルドイメージ: ""
- CURL_IMAGE: "curlimages/curl:7.70.0"
- SONAR_IMAGE: "sonarsource/sonar-scanner-cli:latest"
- KUBECTL_IMAGE: "lucj/kubectl:1.17.2"
-
-
- ## テストパラメータを構築する
- MAVEN_OPTS: "" #Maven ビルドパラメータ
- GRADLE_OPTS: "" #gradle ビルドパラメータ
- BUILD_SHELL: '' #ビルドコマンド
-
- ## ユニットテストパラメータ
- TEST_SHELL : 'mvn test --settings=./settings.xml ' #テストコマンド
- JUNIT_REPORT_PATH: 'target/surefire-reports/TEST-*.xml' #ユニットテストレポート
-
- ## コードスキャン
- SONAR_SOURCE_DIR : "src" #プロジェクトソースディレクトリ
- SONAR_SERVER_URL: "http://192.168.1.200:30090" #SonarQube サーバー情報
- SONAR_SERVER_LOGIN: "ee2bcb37deeb6dfe3a07fe08fb529559b00c1b7b" #Sonar トークンはプロジェクト内で定義するのが最適です。
- SONAR_SCAN_ARGS: "-Dsonar.sources=${SONAR_SOURCE_DIR}" #プロジェクトスキャンパラメータ
-
- ## イメージをビルドする
- CI_REGISTRY: 'registry.cn-beijing.aliyuncs.com' #ミラーリポジトリアドレス
- CI_REGISTRY_USER: 'xxxxxx' #ウェアハウスユーザー情報
- #CI_REGISTRY_PASSWD: 'xxxxxxx.' #倉庫ユーザーパスワード
- IMAGE_NAME: "${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" #イメージ名
- DOCKER_FILE_PATH: "./Dockerfile" #Dockerfile の場所
-
- ## アーティファクトライブラリをアップロードする (artifactory)
- ARTIFACTORY_URL: "http://192.168.1.200:30082/artifactory" #アーティファクト ライブラリ アドレス
- ARTIFACTORY_NAME: "${CI_PROJECT_NAMESPACE}" #アーティファクトライブラリ名
- ARTIFACT_PACKAGE: "jar" #アーティファクトタイプ
- ARTIFACT_PATH: "target/*.${ARTIFACT_PACKAGE}" #アーティファクトの場所
- TARGET_FILE_PATH: "${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" #ターゲット成果物の場所 (ディレクトリ構造)
- TARGET_ARTIFACT_NAME: "${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}.${ARTIFACT_PACKAGE}" #ターゲットアーティファクト名
-
- ## アプリケーションk8sをデプロイする
- APP_NAME: "$CI_PROJECT_NAME" #アプリケーション名 <
- CONTAINER_PORT: "8081" #サービスポート <
- 名前空間: "$CI_PROJECT_NAME-$CI_PROJECT_ID-$CI_ENVIRONMENT_SLUG "
- ENV_URL: "${ENV_NAME}.${CI_PROJECT_NAMESPACE}.${CI_PROJECT_NAME}.devops.com" #IngressHosts
パイプライン設定 - ## パイプライン制御
- ワークフロー:
- ルール:
- - if: "$CI_MERGE_REQUEST_ID" #マージリクエストをフィルタリング
- いつ:決して
- - if: "$CI_PIPELINE_SOURCE == 'web'" #Web ページへの公開を許可する
- - if: "$CI_COMMIT_REF_NAME =~ /^RELEASE-*/ || $CI_COMMIT_REF_NAME =~ /master/ " #コードトリガーを送信するバージョンブランチとトランクブランチをフィルタリングします
- いつ:決して
- - if: "$CI_COMMIT_BEFORE_SHA == '000000000000000000000000000000000000000000000'" #ブランチ作成リクエストをフィルタリング
- いつ:決して
- ### デフォルト戦略
- -いつ: いつも
-
-
- ## 実行フェーズ
- ステージ:
- - 建てる
- - テスト
- -パラレル01
- -分析結果を取得する
- - アーティファクトのデプロイ
- - デプロイ機能
- - ロールアウト機能
- - デプロイ-UAT
- -ロールアウト-uat
- - デプロイステージ
- -ロールアウトステージ
- - デプロイ-prod
- - ロールアウト製品
-
- キャッシュ:
- パス:
- - ${CACHE_DIR}
-
- 前スクリプト:
- - 輸出
ビルドジョブ構成 - ################# ジョブの構成 ######################
- ## ビルドジョブ
- 建てる:
- イメージ: ${BUILD_IMAGE}
- 拡張: .build
-
- ## テストの割り当て
- テスト:
- イメージ: ${BUILD_IMAGE}
- 拡張: .test
- 前スクリプト:
- -ls
- -ls ${CACHE_DIR}
-
- ## コードスキャン
- コード分析:
- ステージ: parallel01
- 画像: ${SONAR_IMAGE}
- 拡張: .code_analysis
-
- ## ビルド結果を取得する
- 分析結果を取得:
- 画像: ${CURL_IMAGE}
- 拡張: .get_analysis_result
- ニーズ:
- - コード分析
-
-
- ## イメージをビルドする
- ビルドイメージ:
- イメージ: docker:latest
- サービス:
- -名前: docker:dind
- ステージ: parallel01
- 拡張: .build-docker
-
-
- ## 商品をアップロードする
- デプロイアーティファクト:
- 画像: ${CURL_IMAGE}
- ステージ: デプロイアーティファクト
- 拡張: .deploy-artifact
-
- ## アーティファクトをダウンロードする
- #ダウンアーティファクト:
- # 画像: ${CURL_IMAGE}
- # ステージ: down_artifact
- # 拡張: .down-artifact
リリース展開ジョブ構成 - ################## 機能ジョブのデプロイ構成 ######################
- ## 機能リリースアプリケーション
- デプロイ機能:
- 変数:
- DEPLOY_FILE: 'deployment.yaml'
- ENV_NAME: '機能'
- ステージ: デプロイ機能
- イメージ: ${KUBECTL_IMAGE}
- 拡張: .deploy_k8s
- 環境:
- on_stop: "ロールアウト機能"
- ルール:
- - 場合: $RUN_DEPLOY_K8S == 'no'
- いつ:決して
- - の場合: $CI_COMMIT_REF_NAME =~ /^RELEASE-*/ || $CI_COMMIT_REF_NAME =~ /master/ || $CI_COMMIT_TAG
- いつ:決して
- -場合: 手動
-
- ## アプリケーションのロールバック
- ロールアウト機能:
- 変数:
- DEPLOY_FILE: 'deployment.yaml'
- ENV_NAME: '機能'
- ステージ: ロールアウト機能
- イメージ: ${KUBECTL_IMAGE}
- 拡張: .rollout_k8s
- ニーズ:
- - デプロイ機能
- ルール:
- - 場合: $RUN_DEPLOY_K8S == 'no'
- いつ:決して
- - の場合: $CI_COMMIT_REF_NAME =~ /^RELEASE-*/ || $CI_COMMIT_REF_NAME =~ /master/ || $CI_COMMIT_TAG
- いつ:決して
- -場合: on_failure
-
-
- ##################UAT ジョブをデプロイして構成する #####################
- ##UAT
- デプロイuat:
- 変数:
- DEPLOY_FILE: 'config/deployment-uat.yaml'
- ENV_NAME: 'uat'
- ステージ: デプロイ-UAT
- イメージ: ${KUBECTL_IMAGE}
- 拡張: .deploy_k8s
- 環境:
- on_stop: "rollout_uat"
- ルール:
- - 場合: $RUN_DEPLOY_K8S == 'no'
- いつ:決して
- - の場合: $CI_COMMIT_REF_NAME =~ /^RELEASE-*/ || $CI_COMMIT_REF_NAME =~ /master/ || $CI_COMMIT_TAG
- いつ:手動
- -いつ:決して
-
- ## UAT アプリケーションのロールバック
- ロールアウト_uat:
- 変数:
- DEPLOY_FILE: 'config/deployment-uat.yaml'
- ENV_NAME: 'uat'
- ステージ: ロールアウト-UAT
- イメージ: ${KUBECTL_IMAGE}
- 拡張: .rollout_k8s
- ニーズ:
- - デプロイ
- ルール:
- - 場合: $RUN_DEPLOY_K8S == 'no'
- いつ:決して
- - の場合: $CI_COMMIT_REF_NAME =~ /^RELEASE-*/ || $CI_COMMIT_REF_NAME =~ /master/ || $CI_COMMIT_TAG
- 場合: on_failure
- -いつ:決して
-
- ##################STAG ジョブをデプロイして構成する #####################
- ## スタッグ
- デプロイステージ:
- 変数:
- DEPLOY_FILE: 'config/deployment-stag.yaml'
- ENV_NAME: 'スタッグ'
- ステージ: デプロイステージ
- イメージ: ${KUBECTL_IMAGE}
- 拡張: .deploy_k8s
- 環境:
- on_stop: "ロールアウトタグ"
- ニーズ:
- - デプロイ
- ルール:
- - 場合: $RUN_DEPLOY_K8S == 'no'
- いつ:決して
- - の場合: $CI_COMMIT_REF_NAME =~ /^RELEASE-*/ || $CI_COMMIT_REF_NAME =~ /master/ || $CI_COMMIT_TAG
- いつ:手動
- -いつ:決して
-
- ## STAG アプリケーションのロールバック
- ロールアウトタグ:
- 変数:
- DEPLOY_FILE: 'config/deployment-stag.yaml'
- ENV_NAME: 'スタッグ'
- ステージ: ロールアウト段階
- イメージ: ${KUBECTL_IMAGE}
- 拡張: .rollout_k8s
- ニーズ:
- - デプロイステージ
- ルール:
- - 場合: $RUN_DEPLOY_K8S == 'no'
- いつ:決して
- - の場合: $CI_COMMIT_REF_NAME =~ /^RELEASE-*/ || $CI_COMMIT_REF_NAME =~ /master/ || $CI_COMMIT_TAG
- 場合: on_failure
- -いつ:決して
-
- #################PROD ジョブをデプロイして構成する #####################
- ##製品
- デプロイ製品:
- 変数:
- デプロイファイル: 'config/deployment-prod.yaml'
- ENV_NAME: 'prod'
- ステージ: deploy-prod
- イメージ: ${KUBECTL_IMAGE}
- 拡張: .deploy_k8s
- 環境:
- on_stop: "rollout_prod"
- ニーズ:
- - デプロイステージ
- ルール:
- - 場合: $RUN_DEPLOY_K8S == 'no'
- いつ:決して
- - の場合: $CI_COMMIT_REF_NAME =~ /^RELEASE-*/ || $CI_COMMIT_REF_NAME =~ /master/ || $CI_COMMIT_TAG
- いつ:手動
- -いつ:決して
-
- ## PROD アプリケーションのロールバック
- ロールアウト製品:
- 変数:
- デプロイファイル: 'config/deployment-prod.yaml'
- ENV_NAME: 'prod'
- ステージ: ロールアウト-製品版
- イメージ: ${KUBECTL_IMAGE}
- 拡張: .rollout_k8s
- ニーズ:
- - デプロイ
- ルール:
- - 場合: $RUN_DEPLOY_K8S == 'no'
- いつ:決して
- - の場合: $CI_COMMIT_REF_NAME =~ /^RELEASE-*/ || $CI_COMMIT_REF_NAME =~ /master/ || $CI_COMMIT_TAG
- 場合: on_failure
- -いつ:決して
JAVA プロジェクト配信パイプラインジョブテンプレートのインポート - 含む:
- - プロジェクト: 'cidevops/cidevops-newci-service'
- 参照: マスター
- ファイル: 'templates/default-pipeline.yml'
プロジェクトパラメータを設定する - 変数:
- ## グローバル設定
- GIT_CLONE_PATH: ${CI_BUILDS_DIR}/builds/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/${CI_PIPELINE_ID}
- GIT_CHECKOUT: 「偽」
- CACHE_DIR: "ターゲット/"
-
- ## ジョブ制御
- RUN_PIPELINE_BUILD: "yes" #ビルドを実行するかどうか yes/ no
- RUN_PIPELINE_TEST: "yes" #テストを実行するかどうか yes/ no
- RUN_CODE_ANALYSIS: "yes" #コードスキャンのはい/いいえ
- RUN_BUILD_IMAGE: "yes" #イメージを生成するかどうか yes/ no
- RUN_DEPLOY_ARTIFACTS: "no" #製品をアップロードするかどうか yes/ no
- RUN_DEPLOY_K8S: "yes" #K8S をリリースするかどうか yes/ no
-
- ## コンテナイメージへの依存
- ビルドイメージ: "maven:3.6.3-jdk-8"
- CURL_IMAGE: "curlimages/curl:7.70.0"
- SONAR_IMAGE: "sonarsource/sonar-scanner-cli:latest"
- KUBECTL_IMAGE: "lucj/kubectl:1.17.2"
-
-
- ## テストパラメータを構築する
- MAVEN_OPTS: "-Dmaven.repo.local=/home/gitlab-runner/ci-build-cache/maven" #Maven ビルド パラメータ
- BUILD_SHELL: 'mvn clean package -DskipTests --settings=./settings.xml ' #ビルドコマンド
- #GRADLE_OPTS: "" #gradle ビルドパラメータ
-
- ## ユニットテストパラメータ
- TEST_SHELL : 'mvn test --settings=./settings.xml ' #テストコマンド
- JUNIT_REPORT_PATH: 'target/surefire-reports/TEST-*.xml' #ユニットテストレポート
-
- ## コードスキャン
- SONAR_SOURCE_DIR : "src" #プロジェクトソースディレクトリ
- SONAR_SERVER_URL: "http://192.168.1.200:30090" #SonarQube サーバー情報
- SONAR_SERVER_LOGIN: "ee2bcb37deeb6dfe3a07fe08fb529559b00c1b7b" #Sonar トークンはプロジェクト内で定義するのが最適です。
- SONAR_SCAN_ARGS: "-Dsonar.sources=${SONAR_SOURCE_DIR}
- -Dsonar.java.binaries=ターゲット/クラス
- -Dsonar.java.test.binaries=ターゲット/テストクラス
- -Dsonar.java.surefire.report=target/surefire-reports " #プロジェクトスキャンパラメータ
-
- ## イメージをビルドする
- CI_REGISTRY: 'registry.cn-beijing.aliyuncs.com' #ミラーリポジトリアドレス
- CI_REGISTRY_USER: 'xxxxxx' #ウェアハウスユーザー情報
- #CI_REGISTRY_PASSWD: 'xxxxxxx.' #倉庫ユーザーパスワード
- IMAGE_NAME: "${CI_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" #イメージ名
- DOCKER_FILE_PATH: "./Dockerfile" #Dockerfile の場所
-
- ## アーティファクトライブラリをアップロードする (artifactory)
- #ARTIFACTORY_URL: "http://192.168.1.200:30082/artifactory" #アーティファクト ライブラリ アドレス
- #ARTIFACTORY_NAME: "${CI_PROJECT_NAMESPACE}" #アーティファクトライブラリ名
- #ARTIFACT_PACKAGE: "jar" #アーティファクトタイプ
- #ARTIFACT_PATH: "target/*.${ARTIFACT_PACKAGE}" #アーティファクトの場所
- #TARGET_FILE_PATH: "${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" #ターゲット成果物の場所 (ディレクトリ構造)
- #TARGET_ARTIFACT_NAME: "${CI_PROJECT_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}.${ARTIFACT_PACKAGE}" #ターゲット アーティファクト名
-
- ## アプリケーションk8sをデプロイする
- APP_NAME: "$CI_PROJECT_NAME" #アプリケーション名 <
- CONTAINER_PORT: "8081" #サービスポート <
- 名前空間: "$CI_PROJECT_NAME-$CI_PROJECT_ID-$CI_ENVIRONMENT_SLUG "
- ENV_URL: "${ENV_NAME}.${CI_PROJECT_NAMESPACE}.${CI_PROJECT_NAME}.devops.com" #IngressHosts
CIファイルを指定する パイプラインテストを実行する Docker イメージリポジトリ 導入環境のデモンストレーション Kubernetes クラスター内のアプリケーション ステータス |