投稿日:
【GitHub Universe 2018】Dockerコンテナの連係によるワークフローを自由に定義可能な「GitHub Actions」が発表【まとめ】
YouTubeも見てね♪
ねこじゃすり
猫を魅了する魔法の装備品!
【最新機種】GoPro hero11 Black
最新機種でVlogの思い出を撮影しよう!
[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット
防水暴風で耐久性抜群なので旅行で大活躍です!
ペヤング ソースやきそば 120g×18個
とりあえず保存食として買っておけば間違いなし!
ドラゴンクエスト メタリックモンスターズギャラリー メタルキング
みんな大好き経験値の塊をデスクに常備しておこう!
Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK
メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!
MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド
Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!
目次
GitHub Universe 2018
先日、サンフランシスコにて「GitHub Universe 2018」が、開催されました。
Github Universeとは、GitHubのコミュニティ登録者約3,100万人の開発者が今後の未来について語ることが出来るイベントとなっており、開発者界隈ではとても人気のあるイベントとなっています。
原文:
GitHub Universe is a conference for the builders, planners, and leaders defining the future of software訳:
GitHub Universeは、ソフトウェアの将来を定義するビルダー、プランナー、リーダーのためのカンファレンスです
Pull Request以来の新機能
その中で、Githubはは「Pull Request機能以来の強靭な新機能」として、「GitHub Actions」を発表しました。
GitHub Actions
What’s?
Github Actionsとは、Github上で行われる各種操作をトリガーにDockerコンテナに対する操作を実行する事が出来る機能となっています。
これにより、ビルド/テスト/デプロイの自動化などGithubでのソース管理以上の事が可能になるとの事です。
イメージ的には、JenkinsのようなCIとして使えるようになるのかな?
また、AWSやgcloud、Azure、Herokuなどメジャーどころのクラウドサービスに対応しているようですね。
main.workflowファイルで管理
サンプルを見ていると、.github
ディレクトリの中にmain.workflow
と言うファイルが用意されています。
こちらに処理を記述する事でワークフローが定義出来るようですね。
またマークダウンのようにリアルタイムプレビューでGUIベースで編集することも出来そうですね。
main.workflow
ファイル内はこんな感じでした。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
workflow "Build and Deploy" {
on = "push"
resolves = ["List Public IP"]
}
# Build
action "Build Docker image" {
uses = "actions/docker/cli@master"
args = ["build", "-t", "aws-example", "."]
}
# Deploy Filter
action "Deploy branch filter" {
needs = ["Push image to ECR"]
uses = "actions/bin/filter@master"
args = "branch master"
}
# AWS
action "Login to ECR" {
uses = "actions/aws/cli@master"
secrets = ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"]
env = {
AWS_DEFAULT_REGION = "us-west-2"
}
args = "ecr get-login --no-include-email --region $AWS_DEFAULT_REGION | sh"
}
action "Tag image for ECR" {
needs = ["Build Docker image"]
uses = "actions/docker/tag@master"
env = {
CONTAINER_REGISTRY_PATH = "377117578606.dkr.ecr.us-west-2.amazonaws.com"
IMAGE_NAME = "aws-example"
}
args = ["$IMAGE_NAME", "$CONTAINER_REGISTRY_PATH/$IMAGE_NAME"]
}
action "Push image to ECR" {
needs = ["Login to ECR", "Tag image for ECR"]
uses = "actions/docker/cli@master"
env = {
CONTAINER_REGISTRY_PATH = "377117578606.dkr.ecr.us-west-2.amazonaws.com"
IMAGE_NAME = "aws-example"
}
args = ["push", "$CONTAINER_REGISTRY_PATH/$IMAGE_NAME"]
}
action "Store Kube Credentials" {
needs = ["Push image to ECR"]
uses = "actions/aws/kubectl@master"
secrets = ["KUBE_CONFIG_DATA"]
}
action "Configure Kube Credentials" {
needs = ["Login to ECR"]
uses = "actions/aws/cli@master"
env = {
CLUSTER_NAME = "devel2"
AWS_DEFAULT_REGION = "us-west-2"
}
secrets = ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"]
args = "eks update-kubeconfig --name $CLUSTER_NAME --region $AWS_DEFAULT_REGION"
}
# Example Local Action to use `aws-iam-authenticator`
action "Deploy to EKS" {
needs = ["Store Kube Credentials", "Deploy branch filter"]
# ["Configure Kube Credentials"]
uses = "./.github/actions/eks-kubectl"
runs = "sh -l -c"
args = ["SHORT_REF=$(echo $GITHUB_SHA | head -c7) && cat $GITHUB_WORKSPACE/config.yml | sed 's/TAG/'\"$SHORT_REF\"'/' | kubectl apply -f - "]
secrets = ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"]
}
action "Verify EKS deployment" {
needs = [
"Push image to ECR",
"Deploy to EKS",
]
# :point_down: use this for self-contained kubectl config credentials
#uses = "docker://gcr.io/cloud-builders/kubectl"
uses = "./.github/actions/eks-kubectl"
args = ["rollout status deployment/aws-example-octodex"]
secrets = ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"]
}
action "List Public IP" {
needs = "Verify EKS deployment"
uses = "./.github/actions/eks-kubectl"
args = ["get services -o wide"]
secrets = ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"]
}
|
スクリプト形式なので分かりやすいですね!!
終わりに
まだ発表されたばかりなので、詳細はこれから明らかになっていくと思いますが、ぱっと見Githubの利便性が上がりそうな新機能でした。
Pull Request機能は革命的な機能でしたが、Github自身がそれに次ぐ新機能と推している事もあるので、続報に期待しましょう!!