GithubとServiceNow連携

### 目的
ServiceNowのソースコード管理は、レコードの中身を参照してから見るので取り回しが不便である。さらに、Update Setの更新でソースコードを見るのはXMLの山々から宝探しの様相を呈するのでしんどい。

**そういった悩みを解決するツールがGithub,Gitlab**である。

上記、管理ツールとの連携を行うことで、チーム開発における利便を測ることは有効。
[差分管理]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/555ce6b6-0e27-d68b-2e90-1c393a5a7c0b.png)

[フォルダ管理]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/7c0c3c91-2da0-a5ae-e009-5600033d194d.png)

上記のように管理が可能でなかなか便利。
ということで個人インスタンスでGithubとの連携を行ったのでその備忘録です。

### 手順

:::note info
Github側の設定
:::

以下3つの設定を行う

* Create Github repository
* Personal access tokens
* 2Factor Autentication		

#### 1.Create Github repository		
1Githubにサインインする	
2	リポジトリの新規作成をクリックする	
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/0fd707e7-2cd4-dfcf-fc79-83aa936a4ccb.png)


3	リポジトリを作成する
	(参考)
	
2.Personal access tokens	
	Settings

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/e1b414cb-2f05-4a46-832a-03668028625f.png)

Developer Settings

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/bd8df81e-9ed5-6f57-ecfd-1a0c055c4421.png)


Personal access tokens > Generate new token
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/69cd1fbb-6a83-e9c0-e7cd-f665462e15b8.png)


トークンを作成する	
ここで作成したToken情報は2.ServiceNow設定で使用する	
	
(参考)	https://developer.servicenow.com/dev.do#!/guides/paris/developer-program/github-guide/using-servicenow-provided-application-repositories#authenticating-to-github
	https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-token


3.2 Factor Autentication	
	Settings

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/ac270331-a2d9-5182-e2dc-45d86b784ab7.png)


Account Security > Two-factor autentication

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/3be2c19e-e8b9-1e15-51b5-d66493ab881c.png)

これでAuthenticator appの設定を行うこと	
	
(参考)	https://developer.servicenow.com/dev.do#!/guides/paris/developer-program/github-guide/using-two-factor-authentication
	https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication


2	ServiceNowの設定			
	GitHubのリポジトリを、アプリケーションのStudioのリポジトリにリンクする。			
	そのため、以下の手順を実行する			
	1	Credentialを作成する		
	2	studioでリンクを作成する		
				
Credentialを作成する			

1	Connection & Credentials > Credentials	
2	Newで新規作成	
3	[Basic Auth Credentials]を選択	
	以下のように入力	
	Name	Github Credentials
	User Name	Githubのユーザーネーム
	Password	personal access token

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/0b1b9d9a-1d81-dda0-b7de-29e9e3e588e3.png)


4	saveする


studioでリンクを作成する		
	1	GitからrepogitoryのURLをコピーする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/aea95a35-f45d-30c6-61f7-5409234f797e.png)


2	system application > studio でstudioを起動				
	左上のSource Control > Link to Source Controlをクリック				
	パネルが表示されるので以下の項目を記入				
	URL	先ほどコピーしたGit URL			
	Credential	先ほど作成したGithub Credential			

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/088b6cfe-4961-2e5b-e36f-51be2cb14baf.png)

saveする		
		
(参考)	https://developer.servicenow.com/dev.do#!/learn/learning-plans/paris/new_to_servicenow/app_store_learnv2_devenvironment_paris_exercise_create_and_link_a_repository	
		
以上で、GithubとServiceNowの連携がなされる		

ブランチ作成から変更のGithubへの適用まで				
作成手順				
	Studio			
	1	Create Branch でブランチ作成		
	2	Switch Branch でブランチの変更		
	3	実装(テーブルの追加やスクリプト追加)		
	4	Commit Changes		
	Github			
	5	Create Pull Requestでプルリクエストの作成		
	6	Merge Pull Requestでプルリクエストの承認		
				
				
作成				
	1	Create Branch でブランチ作成		
	2	Switch Branch でブランチの変更		
	3	実装(テーブルの追加やスクリプト追加)		
	4	Commit Changes		
				
(Studio)		以下のメニューより操作する		
		実装は適宜行うこと。		
		上記操作で、ローカルの変更をコミットまで行える。		
		Studioでの操作を終えたらGithubでリクエストを作成・確認・承認する		

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/de33ab39-6357-69db-0845-a44869e9eea8.png)


(Github)		
		Compare&pull Requestをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/e41565d7-95bf-3248-5049-073f547b3a75.png)


Create pull Requestをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/0932792c-4a4f-3a98-20bf-aa7e33f559c1.png)


File Changedで差分を確認し、問題がなければ、
Merge pull Requestをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/4edccf9e-9a51-79c0-0322-9f05ac1f2ce5.png)


上記操作で差分が適用される
変更はupdateフォルダ以下にXML形式で保存されている

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/1e3271e7-1894-3c99-b9e6-3aa48862c598.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/7c0c3c91-2da0-a5ae-e009-5600033d194d.png)


ServiceNow変更箇所のGitでの見え方		
	1	スクリプトの変更の場合
	2	非スクリプトの変更の場合
		
スクリプトの場合		
	差分で表現される	
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/555ce6b6-0e27-d68b-2e90-1c393a5a7c0b.png)


非スクリプトの場合	
	差分表記される
	変更は基本的にXMLで保存される

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/444cecb9-0259-5423-7bd1-9e44286f0e0e.png)