LoginSignup
2
1

More than 3 years have passed since last update.

【CI/CD】UI5プロジェクトのパイプラインを構築するまで ~改善編~

Posted at

はじめに

この記事は、UI5のCI/CDパイプラインを構築してみるシリーズの3回目です。

<過去の記事>
【CI/CD】UI5プロジェクトのパイプラインを構築するまで ~環境構築編~
【CI/CD】UI5プロジェクトのパイプラインを構築するまで ~パイプライン編~

今回は、前回作成したパイプラインに以下の改善を加えます。
1. ABAPサーバにデプロイする際のユーザ、パスワード情報をリポジトリに持たせない
2. パイプラインが特定のブランチで実行された場合のみデプロイする

1. ABAPサーバにデプロイする際のユーザ、パスワード情報をリポジトリに持たせない

前回の記事では、デプロイする際に必要な情報を.nwabaprcファイルに設定してGitリポジトリに置いていました。これはセキュリティ上好ましくないので、JenkinsのCredential設定を使うように修正します。

元の設定

.nwabaprc
{
    "base": "./dist", 
    "conn_server": "http://<host>:<port>", 
    "conn_user": "<user>",                 
    "conn_password": "<password>",             
    "abap_package": "<package>",                
    "abap_bsp": "<BSPアプリのID>",            
    "abap_bsp_text": "<BSPアプリのテキスト>",
    "abap_transport": "<移送依頼>"
}

JenkinsのCredentials設定

以下の手順でJenkinsに認証情報を登録します。
image.png
認証情報を追加
image.png
Username, Passwordを設定。IDはわかりやすいものをつける(このIDをパイプラインで使用する)
image.png

環境変数の設定

ちょっと横道ですが、接続先サーバの情報もJenkinsの環境変数に持たせることにします。
image.png
Configure Systemをクリック
image.png
Global propertiesのところで以下のように環境変数を追加します。
image.png

Jenkinsfileの設定

Deployステージを以下のように変更します。ABAP_DEVELOPMENT_CREDS = credentials('abap_login')で、Credentialsに設定したユーザID、パスワードを取得しています。パイプラインの中でのCredentialの取得方法については、ドキュメントに詳しく書かれています。

nwabap-ui5uploaderは実行時に引数を指定でき、ここでデプロイ先のサーバ、認証情報を指定します。

Jenkinsfile
        stage('deploy') {           
            environment {
                ABAP_DEVELOPMENT_CREDS = credentials('abap_login')
            }
            steps {
                echo "user: ${ABAP_DEVELOPMENT_CREDS_USR}"
                echo "pass: ${ABAP_DEVELOPMENT_CREDS_PSW}"
                sh "npx nwabap upload --conn_server ${env.ABAP_DEVELOPMENT_SERVER_HOST} --conn_user ${ABAP_DEVELOPMENT_CREDS_USR} --conn_password ${ABAP_DEVELOPMENT_CREDS_PSW}"
            }
        }   

.nwabaprcからはサーバ、認証情報は削除します。

.nwabaprc
    "base": "./dist",            
    "abap_package": "<package>",                
    "abap_bsp": "<BSPアプリのID>",            
    "abap_bsp_text": "<BSPアプリのテキスト>",
    "abap_transport": "<移送依頼>"

実行すると、うまくデプロイされました。ユーザ、パスワードの内容はマスクされています。
image.png

2. パイプラインが特定のブランチで実行された場合のみデプロイする

masterブランチでパイプラインが実行された場合のみDeployステージを実行するようにします。調べてみると意外と簡単で、stageの下にwhen { branch 'ブランチ名' }を指定するだけでした。

Jenkinsfileの設定

Jenkinsfile
        stage('deploy') {
            when {
                branch 'master'
            }            

結果、masterブランチでない場合はDeployステップがスキップされました。
image.png

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1