Submit Search
Github Actionsで GASのデプロイを自動化した
Download as PPTX, PDF
1 like
14,470 views
S
ShioriSawada
Github Actionsで GASのデプロイを自動化した話
Engineering
Read more
1 of 27
Download now
Download to read offline
1
2
Most read
3
4
5
6
7
8
9
10
11
12
13
Most read
14
15
16
17
18
19
20
21
Most read
22
23
24
25
26
27
More Related Content
PDF
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
SEGADevTech
PDF
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
PDF
はじめてのGit forデザイナー&コーダー
Saeko Yamamoto
PDF
입문 Visual SLAM - 5장 카메라와 이미지
jdo
PPTX
GameInstance에 대해서 알아보자
TonyCms
PDF
Gofのデザインパターン stateパターン編
Ayumu Itou
PDF
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
PPT
ジェネリクスの基礎とクラス設計への応用
nagise
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
SEGADevTech
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
はじめてのGit forデザイナー&コーダー
Saeko Yamamoto
입문 Visual SLAM - 5장 카메라와 이미지
jdo
GameInstance에 대해서 알아보자
TonyCms
Gofのデザインパターン stateパターン編
Ayumu Itou
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
ジェネリクスの基礎とクラス設計への応用
nagise
What's hot
(20)
PDF
規格書で読むC++11のスレッド
Kohsuke Yuasa
PDF
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
UnityTechnologiesJapan002
PDF
[NDC 2018] 유체역학 엔진 개발기
Chris Ohk
PDF
シェーダだけで世界を創る!three.jsによるレイマーチング
Sho Hosoda
PPTX
つぶやきGLSLのススメ
notargs
PDF
【Unity】 Behavior TreeでAIを作る
torisoup
PPTX
Unreal python
TonyCms
PDF
DeepVIO: Self-supervised Deep Learning of Monocular Visual Inertial Odometry ...
harmonylab
PDF
게임 스타트업 시작하기
기룡 남
PDF
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
PDF
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
SEGADevTech
PDF
物体検出エラーの分析ツール TIDE
GuoqingLiu9
PDF
Singularityで分散深層学習
Hitoshi Sato
PDF
Code Review - DevOn2013
호정 이
PDF
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
レガシーコードに向き合ってみた話
株式会社MonotaRO Tech Team
PDF
ノンプログラマでも今日から使える「Git」でバージョン管理
H2O Space. Co., Ltd.
PDF
NDC2019 - 게임플레이 프로그래머의 역할
Hoyoung Choi
PDF
(책 소개) 실전 카프카 개발부터 운영까지
Jay Park
PPTX
PostGIS - National Education Center for GIS: Open Source GIS
MinPa Lee
規格書で読むC++11のスレッド
Kohsuke Yuasa
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
UnityTechnologiesJapan002
[NDC 2018] 유체역학 엔진 개발기
Chris Ohk
シェーダだけで世界を創る!three.jsによるレイマーチング
Sho Hosoda
つぶやきGLSLのススメ
notargs
【Unity】 Behavior TreeでAIを作る
torisoup
Unreal python
TonyCms
DeepVIO: Self-supervised Deep Learning of Monocular Visual Inertial Odometry ...
harmonylab
게임 스타트업 시작하기
기룡 남
いつやるの?Git入門 v1.1.0
Masakazu Matsushita
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
SEGADevTech
物体検出エラーの分析ツール TIDE
GuoqingLiu9
Singularityで分散深層学習
Hitoshi Sato
Code Review - DevOn2013
호정 이
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
エピック・ゲームズ・ジャパン Epic Games Japan
レガシーコードに向き合ってみた話
株式会社MonotaRO Tech Team
ノンプログラマでも今日から使える「Git」でバージョン管理
H2O Space. Co., Ltd.
NDC2019 - 게임플레이 프로그래머의 역할
Hoyoung Choi
(책 소개) 실전 카프카 개발부터 운영까지
Jay Park
PostGIS - National Education Center for GIS: Open Source GIS
MinPa Lee
Ad
Github Actionsで GASのデプロイを自動化した
1.
Github Actionsで GASのデプロイを自動化した 2021/8/12 #自動化エンジニアのLT会
Shiori Sawada
2.
Twitter @jamgodtree 株式会社ログラス所属 趣味: 美味しい野菜を食べること
3.
Topic ● GASをログラスではどう活用しているのか? ● これまでのデプロイ方法と課題点 ●
どのように自動化したか?
4.
GASとはなにか? ● GAS =
Google Apps Scriptの略 ● JavaScriptベースのスクリプト言語 ● Googleのサービスと連携し、自動化できる ○ カスタムメニューをGoogleドキュメントに追加する ○ Googleスプレットシートにカスタム関数を作成 ○ Googleサービスの拡張するアドオンとを作成する ○ 公式ドキュメントより
5.
GASをログラスではどう活用しているのか?
6.
ログラスについて
7.
GASをログラスではどう活用しているのか? ● Googleスプレッドシートからアドオン経由で予算策定の数値を更新するため に使われています ... { "code": "科目コード1", "yearMonth":
"2020年10月", "value": 200 }, { "code": "科目コード1", "yearMonth": "2020年10月", "value": 200 }, ...
8.
ログラスにとって大事な機能の一つ ● 手動リリースによるミスを防ぎたい ● 自動化されていないことによりリリースを忘れたくない
9.
これまでのデプロイ方法と課題点
10.
一般的なアドオンのリリースの流れ
11.
今回はここまで自動化しました
12.
GASへのデプロイ操作は、CLIで(claspコマンド) ● Google公式のGASデプロイ用CLIツールを使用しています
13.
GASへのデプロイ操作は、CLIで(claspコマンド) ● Google公式のGASデプロイ用CLIツールを使用しています ● コマンド実行するディレクトリ直下に以下のファイルを配置 ●
検証環境用と本番環境用とpushする先を変えるために以下のファイルを書き 換えている
14.
課題点 ● ローカル環境でソースコードをpushすると以下の危険性がある ○ ブランチを正しく切り替えなければ、開発途中のソースコードをpushし てしまう ○
ブランチを正しく切り替えていても最新のソースコードをpullしていな ければ同じ事がおきる ● プロジェクトIDを間違えてGASへpushすると検証環境に反映したつもりが、 本番のGASへpushしてしまう可能性がある ● ローカル環境の環境差異(Version)による影響がある ● リリースすることを忘れる ● リリースのやり方を知っている一部の人しかできない
15.
どのように自動化したのか?
16.
Github Actionsへ移行 Hello World
17.
GASのデプロイを自動化するためのポイント3選
18.
①テストとデプロイのタイミングを分ける ● デプロイは、GASのコードが管理されているPathかつ、developとmasterブ ランチにpushされた場合にのみ実行する
19.
①テストとデプロイのタイミングを分ける ● GASのテスト実行は、ブランチの指定なくGASのコードが管理されている Pathにpushされたら毎回実行する
20.
②検証環境と本番環境へ環境差分の吸収
21.
③GASの認証について ● GASへpush時にGoogleアカウントの認証が必要になるのですが、ブラウザ へ遷移しブラウザ上での確認が必要になります。 ● そのままCIで動作させると一生終わらないJobに..... ●
また、ログイン後、1週間でアクセストークンが切れてしまう
22.
③GASの認証について ● GASへpush時にGoogleアカウントの認証が必要になるのですが、ブラウザ へ遷移しブラウザ上での確認が必要になります。 ● そのままCIで動作させると一生終わらないJobに..... ●
また、ログイン後、1週間でアクセストークンが切れてしまう
23.
③GASの認証について ● GASの認証は1度認証すれば、ずっと使い続けられる仕様 ○ 認証するとローカルにjsonファイルが作成される ○
仕組みとして、アクセストークンの期限が切れていたらリフレッシュトークンでアクセスト ークンを再取得する ○ ローカルに作成された認証用のjsonファイルをCI上に設置することで解決しました。 ● ただ、issueにもあるようにサービスアカウントでの認証ができるようになる ともっとモダンに自動化できるようになりますね ○ https://github.com/google/clasp/issues/225 ○ 参考
24.
おまけ: 地味に大事Slack通知 ● 成功時 ○
リリースバージョンの通知 ○ リリースへの促し ● 失敗時
25.
解決できたかな!! ● ローカル環境でソースコードをpushすると以下の危険性がある ○ ブランチを正しく切り替えなければ、開発途中のソースコードをpushし てしまう ○
ブランチを正しく切り替えていても最新のソースコードをpullしていな ければ同じ事がおきる ● プロジェクトIDを間違えてGASへpushすると検証環境に反映したつもりが、 本番のGASへpushしてしまう可能性がある ● ローカル環境の環境差異(Version)による影響がある ● リリースすることを忘れる ● リリースのやり方を知っている一部の人しかできない
26.
まだやりきれていないこと ● アドオンへのリリースはGCPから手動なので、第2弾として自動化へ!! Hello World
27.
We are Hiring!! https://job.loglass.jp/
Editor's Notes
#2:
github actionsでGASのデプロイを自動化した話をしていきたいと思います。
#3:
澤田史織といいます。今はログラスという会社で働いています。
#4:
今日は、 ログラスでGASをどう活用しているのか 今までどんな方法でデプロイシどんな課題があったのか、 そこから自動化しどう改善されたか のこの3つのtopicについて話していきます。
#5:
GASとはなにか? Google Apps Scriptのことで略してGASですといいます。 使ったことある方もいるかたも結構いるかもしれませんが、 スクリプト言語でもあるため、比較的手軽な開発で向きかなと思います。 googleのサービスと連携し、拡張してくれるサービスです。
#6:
GASをログラスではどのように活用しているのか
#8:
loglassでは、事業や会社のデータを一括で管理しその進捗を可視化することで より良い経営判断を推進をすること可能にすることができるSaasプロダクトです。
#9:
その中でも 会社の予算を更新するときにログラスとGoogleスプレットシートを連携させる所で利用しています。 左の画像のGoogleスプレッドシートからアドオンタブからの更新申請ボタンを押してもらう裏でGASが動作し、更新すべき予算データをログラスへ送ってくれる仕組みです。
#10:
重要機能のひとつなので、とにかくリリースによる事故をなくしたいというのとわすれ
#11:
コレまでのデプロイ方法と課題点
#12:
一般的なアドオンのリリースについて紹介します。 ログラスでもおなじ手法です。 アドオンへのリリースでは3段階あります。まず ソースコードをGASへpuhsし、、pushした成果ぶつに対しversionをきります。versionをGCP画面から更新することでリリースが完了します。
#13:
今回はこの赤枠の部分を自動化したので、この部分にフォーカスして話していきます。 まず①でソースコードをGASへpushですが、 こちらはGoogle公式のcliツールを使用ししてローカルからコマンドを実行することで対応していました。
#14:
ソースコードをGASへpushするのにcliを使っています。 Google公式が作っているcliツールなのでGAsの開発する人は大体コレを使うかと思います。
#15:
コマンド実行時にjsonファイルを設置するのですが、 ここにどのディレクトリ配下をpushするかの指定と、GASのプロジェクトのIDを設定します。 検証環境と本番環境でGASのプロジェクトを分けているため、ここの向き先を変えることによりわけてデプロいができます。 がドキュメントを見るかGASプロジェクトを見に行ってIDを書き換えてpushするのが毎回手間でした。
#16:
そいう事情からいくつか課題点がありました。 ローかる環境でソースコードをpushすると、ブランチの切り替え忘れによる中途半端なソースコードのpush。や最新化忘れ等があります。 また、先程の検証環境と本番環境のID切り替えを人力でやっていたこともあり、検証環境にpushするつもりが本番にpushしてしまったりヒヤリ・ハットは何回かありました。 ローカル環境のnode versionやnpm cliのversionによりリリース時の事故もありました。 コレは私が踏み抜いたのですが、ある設定が1年以上前から入っていたのに、私がローカルからリリースしたら正しく適用され動作しはじめてリリース失敗したことがありました。 知っているい人いないとリリースできないという属人化が起きていました・
#17:
コレをどのように自動化したのか
#18:
Github actionsへ移行しました!
#19:
GASのデプロイ自動化するのに気をつけた3点紹介します。
#20:
①テストとデプロイのタイミングを制御しました。 デプロイは、developマージ時に検証環境へdeployする masterマージ時に本番環境へdeployする 仕組みにしています。
#21:
GASのテストはブランチ関係なく、pushされた場合にテスト実行するようにしています
#22:
②つめは、検証環境へpushするのか本番環境にpushするのかでプロジェクトのIDが変わるので画像のように設定を入れています。 branchでの制御をしているためどちらか一方の設定が適用される様になっています。
#23:
③ GASの認証です。 GASへソースコードをpushする時にまず、Googleアカウントでの認証が必要になります。 ローカルで実行するとブラウザに遷移しブラウザ上で アクセプトが必要になります。 これがCIで毎回動かすとなると一生終わらないjobに 1習慣でアクセストーくん期限が切れてしまうので、ただ、コマンドを動かしていればよいわけではないため、何かしら対応しなければ。、と
#24:
どうしよう・・・
#25:
GASは一度認証すればずっと使い続けられる仕様 認証するとローカルにjsonファイルが作成され、そこにトークンが書かれている。 仕組みとして、アクセストークンの期限が切れていたらリフレッシュトークンでアクセストークンを再取得する。リフレッシュトークンも期限がないようでした。 一度ローカルで認証して、 ローカルに作成された認証用のjsonファイルをCI上に設置し、トークンをgithubactionsのシークレットに設定しました。 他に人も悩んでいるようで、
#26:
地味に大事だと思っています。slackの通知も追加しました。
#27:
ということで上記の問題は一通り解決でき、安心安心
#28:
まだやりきりれていないこととして、アドオンリリース。GCP画面から②のversionをコピペして保存するだけなのですが、自動反映して欲しいよねって声聞こえてきたので、対応しようと思っています。
#29:
おわり。
Download