Githubアクションを使用したアプリケーション配備の自動化
12187 ワード
GitHubアクションは、すべてのソフトウェアのワークフローを自動化することが容易になります.Githubからコードをビルド、テスト、配備できます.このポストでは、どのようにGOTTUBアクションを使用してAWS上のサーバーレスアプリケーション展開を自動化する方法を検討します.AWSの独自のCI/CDサービスを使用しても同じことができます.しかし、ここでは、我々の議論をgithub行動に制限し続けます.
Githubアクションの作成は簡単です.自動化し、アクションをクリックしたいGitHubリポジトリに移動します
あなたは、新しい空白のワークフローを作成したり、市場から既存のアクションを選択するアクションページに撮影されます.市場からのアクションは、ワークフローで使用できる再利用可能なアクションです.我々は空白のアクションを作成するつもりです、我々はまた、市場からいくつかのアクションを使用します.
YAMLファイルをワークフローに変更します.京大理何でも好きな名前をつけます.Serverless Application Model(SAM)テンプレートでAPIゲートウェイを持つラムダ関数を作成し、Githubアクションを使用して展開します.
以下はSAMテンプレートです.
SAMConfigでSAM展開と更新に使用されるS 3 Rayバケットを作成します.TOML
APIゲートウェイに移動し、ブラウザでURLをヒット.“ラムダからこんにちは”を取得する必要がありますレスポンス.
Githubの上で我々のワークフローファイルに戻ってください.我々は、更新プログラムをRepoにプッシュするとすぐに展開されます.
以下はワークフローです.気象研
すぐにチェックインのワークフロー.このアクションはトリガされる.
スタックの配備
これでAWSコンソールにログインでき、スタックが確認されます.
タブにアクセスし、APIゲートウェイにアクセスします.ステージに行って、prodステージAPIにアクセスしてください.
ブラウザのURLをPATH/Helloで開きます.
おめでとう!あなたはGATHUBアクションを使用してAWS展開を自動化しました!
ここからコードをダウンロードできます.
GitHubアクションの使い方
Githubアクションの作成は簡単です.自動化し、アクションをクリックしたいGitHubリポジトリに移動します
あなたは、新しい空白のワークフローを作成したり、市場から既存のアクションを選択するアクションページに撮影されます.市場からのアクションは、ワークフローで使用できる再利用可能なアクションです.我々は空白のアクションを作成するつもりです、我々はまた、市場からいくつかのアクションを使用します.
YAMLファイルをワークフローに変更します.京大理何でも好きな名前をつけます.Serverless Application Model(SAM)テンプレートでAPIゲートウェイを持つラムダ関数を作成し、Githubアクションを使用して展開します.
以下はSAMテンプレートです.
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
GitHub Actions demonstration App
Resources:
ApiGatewayApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
Auth:
UsagePlan:
CreateUsagePlan: PER_API
Description: Usage plan for this API
Quota:
Limit: 500
Period: MONTH
Throttle:
BurstLimit: 100
RateLimit: 50
LamdbaFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: ./
Handler: lambda.handler
Runtime: python3.8
Events:
getCounter:
Type: Api
Properties:
Path: /hello
Method: get
RestApiId: !Ref ApiGatewayApi
ラムダ.パイdef handler(event, context):
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
},
'body':'Hello from Lambda!'
,
"isBase64Encoded": False
}
これは1つのラムダ関数とAPIを含んでいます.まずSAM CLIを使用して手動で展開します.samconfigを作成します.詳細は以下のtoml.SAMConfigでSAM展開と更新に使用されるS 3 Rayバケットを作成します.TOML
version = 0.1
[default]
[default.deploy]
[default.deploy.parameters]
stack_name = "sam-github-actions-app"
s3_bucket = "aws-sam-cli-managed-default-samclisourcebucket-1xyg1t2j2ws5k"
s3_prefix = "sam-app"
region = "us-east-1"
confirm_changeset = false
capabilities = "CAPABILITY_IAM"
また、空の要件を作成します.テンプレートと一緒にtxt.京大理Sam buildとsam deploy - gをCLIで実行します.APIゲートウェイに移動し、ブラウザでURLをヒット.“ラムダからこんにちは”を取得する必要がありますレスポンス.
Githubの上で我々のワークフローファイルに戻ってください.我々は、更新プログラムをRepoにプッシュするとすぐに展開されます.
以下はワークフローです.気象研
# This is a basic workflow to help you get started with Actions
name: AWS Lambda & API gateway deployment demonstration
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# Installs Python
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
# Installs PIP
- name: Install dependencies
run: |
python -m pip install --upgrade pip
# Configures AWS credentials from github secrets
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
# Build using SAM
- name: SAM Build
uses: youyo/aws-sam-action/python3.8@master
with:
sam_command: build
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-1
# Deploy on AWS
- name: sam deploy
uses: youyo/aws-sam-action/python3.8@master
with:
sam_command: 'deploy --stack-name myApp --no-fail-on-empty-changeset'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-1
まず、このアクションをマスターにプッシュして実行したいことを示します.次に、我々の手順を実行するランナー(Ubuntu)を選択します.手順では、まずコードをチェックアウトし、Pythonとその依存関係をインストールします.それから、我々はAWS資格情報を構成するために市場からの他の動作を使用します、そして、我々はSAMビルドとSAM配備をするもう一つの行動を使用します.注意してください、私たちは、コマンドのための行動のためにキー供給AWSアクセスキーと秘密のアクセスキーを必要とします.私たちはここでgithubの秘密を設定します.すぐにチェックインのワークフロー.このアクションはトリガされる.
スタックの配備
これでAWSコンソールにログインでき、スタックが確認されます.
タブにアクセスし、APIゲートウェイにアクセスします.ステージに行って、prodステージAPIにアクセスしてください.
ブラウザのURLをPATH/Helloで開きます.
おめでとう!あなたはGATHUBアクションを使用してAWS展開を自動化しました!
ここからコードをダウンロードできます.
Reference
この問題について(Githubアクションを使用したアプリケーション配備の自動化), 我々は、より多くの情報をここで見つけました https://dev.to/rajanpanchal/automate-application-deployment-using-github-actions-1acpテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol