#author("2019-03-14T10:25:50+00:00","","") #mynavi(AWSメモ) #setlinebreak(on); * 目次 [#wef7852b] #contents - 関連 -- [[AWSメモ]] - 参考 -- https://aws.amazon.com/jp/getting-started/projects/setup-jenkins-build-server/ -- https://aws.amazon.com/jp/blogs/devops/integrating-aws-codecommit-with-jenkins/ * 概要 [#w74ec372] #html(<div style="padding-left: 10px;">) EC2インスタンス上にJenkinsをインストールして、API Gateway & Lambda をテスト/デプロイする環境を構築する。 #html(</div>) * IAMロールの作成 [#aad49cfb] #html(<div style="padding-left: 10px;">) [[マネジメントコンソール>https://console.aws.amazon.com/iam/home?region=ap-northeast-1#/roles]] からCodeCommit にアクセスする為のEC2用のロールを作成する。 #TODO(アタッチするポリシーを書く) #html(</div>) * IAMユーザの作成 [#dc777e43] #html(<div style="padding-left: 10px;">) [[マネジメントコンソール>https://console.aws.amazon.com/iam/home?region=ap-northeast-1#/users]] から デプロイ等に使用するIAMユーザを作成する。 #TODO(アタッチするポリシーを書く) // AWSCodeCommitFullAccess #html(</div>) * CodeCommitリポジトリの作成 [#be04414e] #html(<div style="padding-left: 10px;">) [[マネジメントコンソール>https://ap-northeast-1.console.aws.amazon.com/codesuite/codecommit/repositories?region=ap-northeast-1]] からリポジトリを作成しておく。 #html(</div>) * EC2インスタンスの作成 [#p40f0751] #html(<div style="padding-left: 10px;">) [[マネジメントコンソール>https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#Instances:sort=instanceId]] からJenkinsをインストールするEC2インスタンスを作成する。 ※セキュリティグループでポート 8080 を許可しておく事。 ※先程作成しておいたIAMロールを設定しておく事。 #html(</div>) * EC2インスタンスの設定 [#bbce0ba9] #html(<div style="padding-left: 10px;">) EC2インスタンスに接続して以下の作業を行う。 ** ec2-user用の aws-cli の設定 [#s769b608] 確認用に ec2-user 用に aws-cli の設定をしておく。 ここでは、作成しておいたIAMユーザの AWS Access Key ID、AWS Secret Access Key、リージョン等を設定する。 #myterm2(){{ aws configure AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX AWS Secret Access Key [None]: XXXXX.......XXXXXX Default region name [None]: ap-northeast-1 Default output format [None]: }} ** ec2-user 用の git の設定 [#oc27edcb] 確認用に ec2-user 用に git クライアントの設定を行っておく。 認証にはIAMを使用する為、以下の通り設定する。 #myterm2(){{ git config --global credential.helper '!aws codecommit credential-helper $@' git config --global credential.useHttpPath true git config --global user.name "ユーザ名" git config --global user.email "メールアドレス" }} ** CodeCommit へのアクセス確認 [#tf811b0a] 先ほど作成した CodeCommit リポジトリにIAMでアクセスできるか確認する。 #myterm2(){{ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/Xxxxxxx }} ※Jenkins からのアクセスは jenkinsユーザでのアクセスになる為、別途設定が必要。(後述) ** Jenkinsのインストール [#c31e9f98] 起動したEC2インスタンスで以下の作業を行う。 ※参考: https://d1.awsstatic.com/Projects/P5505030/aws-project_Jenkins-build-server.pdf ** JDK8 のインストール [#f664e401] #myterm2(){{ sudo yum install -y java-1.8.0-openjdk-devel }} ** 使用するJavaバージョンの切替 [#r78e8b85] #myterm2(){{ sudo alternatives --config java 2 プログラムがあり 'java' を提供します。 選択 コマンド ----------------------------------------------- *+ 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java 2 /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2 }} バージョンが切り替わったか確認 #myterm2(){{ java -version openjdk version "1.8.0_201" OpenJDK Runtime Environment (build 1.8.0_201-b09) OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode) }} ** Gitのインストール [#w1c5446a] #myterm2(){{ sudo yum install git -y }} ** Jenkinsのインストール [#n4605e1f] #myterm2(){{ sudo yum update -y sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key sudo yum install jenkins -y }} ** Jenkins ユーザ用の git 設定 [#f9310d5f] jenkins からCodeCommit にアクセスする際に IAMロールでアクセスするように設定する。 jenkins ユーザのホームディレクトリは /var/lib/jenkins になっているので、その配下に .gitconfig を以下の通り作成する。 #myterm2(){{ sudo touch /var/lib/jenkins/.gitconfig sudo chmod 664 /var/lib/jenkins/.gitconfig sudo chown jenkins:jenkins /var/lib/jenkins/.gitconfig sudo vim /var/lib/jenkins/.gitconfig [user] name = ユーザ名 email = メールアドレス [credential] helper = !aws codecommit credential-helper $@ useHttpPath = true }} ** Jenkinsユーザ用の aws-cliの設定 [#p686d994] 作成しておいたIAMユーザの AWS Access Key ID、AWS Secret Access Key、リージョン等を設定する。 #myterm2(){{ sudo -u jenkins aws configure AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX AWS Secret Access Key [None]: XXXXX.......XXXXXX Default region name [None]: ap-northeast-1 Default output format [None]: }} ** Jenkinsのサービス開始 [#gdbfc49e] #myterm2(){{ sudo service jenkins start }} ** Jenkinsインストール用の管理者パスワードを確認 [#lc81743b] #myterm2(){{ sudo cat /var/lib/jenkins/secrets/initialAdminPassword }} #html(</div>) * デプロイする処理の作成 [#dffd36c5] #html(<div style="padding-left: 10px;">) ** 準備 [#c8596510] #html(<div style="padding-left: 10px;">) *** git チェックアウト [#v0d4c0f8] #html(<div style="padding-left: 10px;">) #myterm2(){{ mkdir ~/workspace git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/SampleRepo # 作成しておいたCodeCommitリポジトリのURL cd SampleRepo git checkout develop }} #html(</div>) #html(</div>) ** 処理の作成 [#lb9987cf] #html(<div style="padding-left: 10px;">) *** index.py [#od3ba411] #html(<div style="padding-left: 10px;">) #mycode2(){{ TODO }} #html(</div>) *** template.yml [#w4800203] #html(<div style="padding-left: 10px;">) #mycode2(){{ TODO }} #html(</div>) *** build.sh [#i06fa1fa] #html(<div style="padding-left: 10px;">) #mycode2(){{ TODO }} #html(</div>) #html(</div>) ** git リポジトリにプッシュ [#s974f195] #html(<div style="padding-left: 10px;">) *** git commit & push [#ae6e2eca] #html(<div style="padding-left: 10px;">) #myterm2(){{ git add . git commit -m 'first commit' git push }} #html(</div>) *** masterにマージ [#pab838ad] #html(<div style="padding-left: 10px;">) #myterm2(){{ git checkout master git merge develop git push }} #html(</div>) #html(</div>) #html(</div>) * Jenkinsの設定 [#c6e4a45a] #html(<div style="padding-left: 10px;">) ** Jenkinsにログイン [#g017c319] #html(<div style="padding-left: 10px;">) http://ec2-XX-XXX-XX-XX.ap-northeast-1.compute.amazonaws.com:8080 にアクセスし、Administrator password に、先程確認した管理者パスワードを入力する ※ [Install suggested plugins] で適当なプラグインをインストールしておく。 #html(</div>) ** ジョブの作成 [#gd3abfe0] #html(<div style="padding-left: 10px;">) #TODO #html(</div>) ** XXXXXXXXXX [#m88eb6d4] #html(<div style="padding-left: 10px;">) #TODO #html(</div>) #html(</div>)