<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>CI on gkzz.dev</title>
    <link>https://gkzz.dev/tags/ci/</link>
    <description>Recent content in CI on gkzz.dev</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Mon, 20 Jul 2026 00:00:00 +0900</lastBuildDate>
    <atom:link href="https://gkzz.dev/tags/ci/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>maestro testコマンドの `--test-output-dir` と `--debug-output` の違いをドキュメントとサンプルコードから追ってみる</title>
      <link>https://gkzz.dev/posts/maestro-test-output-log-artifact-capture/</link>
      <pubDate>Mon, 20 Jul 2026 00:00:00 +0900</pubDate>
      <guid>https://gkzz.dev/posts/maestro-test-output-log-artifact-capture/</guid>
      <description>&lt;h2 id=&#34;はじめに&#34;&gt;はじめに&lt;/h2&gt;
&lt;p&gt;Maestro の &lt;code&gt;maestro test&lt;/code&gt; コマンドでは、&lt;code&gt;--test-output-dir&lt;/code&gt; と &lt;code&gt;--debug-output&lt;/code&gt; などのオプションで、スクリーンショットやログなどの artifact が出力されます。両者はどちらも「artifact の保存先を指定するオプション」に見えるのですが、実際には扱うファイルがやや異なります。&lt;/p&gt;
&lt;p&gt;この違いを意識しないと、落ちたテストの調査で「あるはずの artifact が見つからない」ということが起こりえます。
たとえば、スクリーンショットを探していたら &lt;code&gt;maestro.log&lt;/code&gt; しか入っていなかったり、逆にログだけ別ディレクトリに出ていたり。&lt;/p&gt;
&lt;p&gt;そこで、この記事では &lt;code&gt;maestro test&lt;/code&gt; の artifact 周りを整理します。また、ドキュメントとサンプルコードを頼りに、これらのオプションの違いや使用例を探ってみます。&lt;/p&gt;
&lt;p&gt;この記事で最初に押さえたいのは、次の4点です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--test-output-dir&lt;/code&gt; はスクリーンショットや動画の主な置き場&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--debug-output&lt;/code&gt; は &lt;code&gt;maestro.log&lt;/code&gt; の主な置き場&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commands-*.json&lt;/code&gt; は artifact 調査で見ることになる主要なファイル&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--flatten-debug-output&lt;/code&gt; は &lt;code&gt;--debug-output&lt;/code&gt; の artifact 群のディレクトリ階層をフラットにする&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;レポート系のフォーマットは下記の2つです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--format&lt;/code&gt; : レポートのフォーマット。
&lt;ul&gt;
&lt;li&gt;例：&lt;code&gt;--format junit&lt;/code&gt; , &lt;code&gt;--format html&lt;/code&gt; , &lt;code&gt;--format html-detailed&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--output&lt;/code&gt; : 上記のレポートの出力場所。省略した場合はカレントディレクトリに出力。
&lt;ul&gt;
&lt;li&gt;例：&lt;code&gt;--output build/report.xml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なお、AI 系のレポートは生成条件が別なのでこの記事では深追いしません。&lt;/p&gt;
&lt;p&gt;参考：&lt;a href=&#34;https://docs.maestro.dev/maestro-flows/workspace-management/ai-test-analysis&#34;&gt;https://docs.maestro.dev/maestro-flows/workspace-management/ai-test-analysis&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;1---test-output-dir----debug-output----flatten-debug-output-オプションの早見表&#34;&gt;1. &lt;code&gt;--test-output-dir&lt;/code&gt; / &lt;code&gt;--debug-output&lt;/code&gt; / &lt;code&gt;--flatten-debug-output&lt;/code&gt; オプションの早見表&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;--test-output-dir&lt;/code&gt; / &lt;code&gt;--debug-output&lt;/code&gt; / &lt;code&gt;--flatten-debug-output&lt;/code&gt; オプションの早見表をご覧ください。ここでは「flag の役割」と「実際に目に入る artifact」を分けて書きます。実際の挙動を見ると、&lt;a href=&#34;https://github.com/mobile-dev-inc/maestro-docs/blob/3c44ca2c6d6b11056e2164ac177ee9674139fde2/flows/workspace-management/test-reports-and-artifacts.md?plain=1#L111-L125&#34;&gt;ドキュメント&lt;/a&gt; のように、&lt;code&gt;Yes / No&lt;/code&gt; の二値だけで読むと誤解しやすいので、まずは役割ベースで整理するほうがよいかと思います。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firebase HostingとGithub Actionsで独自ドメインのHugoプロジェクトのブログを自動デプロイする</title>
      <link>https://gkzz.dev/posts/deploy-hugo-on-firebase-hosting-via-github-actions/</link>
      <pubDate>Fri, 20 Aug 2021 18:36:16 +0900</pubDate>
      <guid>https://gkzz.dev/posts/deploy-hugo-on-firebase-hosting-via-github-actions/</guid>
      <description>&lt;h2 id=&#34;1この記事で達成したいこと&#34;&gt;1.この記事で達成したいこと&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;独自ドメインのHugoプロジェクトのブログを作ってみたい
&lt;ul&gt;
&lt;li&gt;そのブログがこれ！ &amp;ndash;&amp;gt; &lt;a href=&#34;https://gkzz.dev&#34;&gt;https://gkzz.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ブログはHugo + Firebase Hostingで構成し、デプロイはGithub Actionsで自動化したい
&lt;ul&gt;
&lt;li&gt;これまでローカルからデプロイという運用対処としていた、、&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;※Hugoのインストール手順はこちらに書いてあるのでどうぞ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gkzz.dev/posts/hugo-installation-on-ubuntu/&#34;&gt;最新のHugoをインストールする方法とHugoの設定ファイルをtomlフォーマット以外にする方法 | gkzz.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2前提&#34;&gt;2.前提&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;HugoのテーマはPaperMod&lt;/li&gt;
&lt;li&gt;Firebase HostingとGoogle Domainsで購入したカスタムドメインを接続する方法は以下のとおり実施している
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gkzz.dev/posts/add-custom-domain-firebase-hosting/&#34;&gt;Firebase HostingとGoogle Domainsで購入したカスタムドメインを接続する | gkzz.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ドメインはgkzz.devとする&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3環境情報&#34;&gt;3.環境情報&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ grep Ubuntu /etc/os-release 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NAME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Ubuntu&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PRETTY_NAME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Ubuntu 20.04.2 LTS&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ hugo version
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo v0.87.0-B0C541E4 linux/amd64 BuildDate&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;2021-08-03T10:57:28Z VendorInfo&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;gohugoio
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;4papermodの導入&#34;&gt;4.PaperModの導入&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;以下のPaperModのインストール手順を参考に進める
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/adityatelange/hugo-PaperMod/wiki/Installation#method-2&#34;&gt;https://github.com/adityatelange/hugo-PaperMod/wiki/Installation#method-2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;※ &lt;strong&gt;&lt;code&gt;https://github.com/adityatelange/hugo-PaperMod&lt;/code&gt;&lt;/strong&gt; をサブモジュールとする点がミソ！&lt;/li&gt;
&lt;li&gt;「6.GitHub Actionsの設定ファイル(.github/workflows/*.yml)を用意」で活きてくる！&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ hugo new site &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;BLOG_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt; -f yml
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cd &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;BLOG_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git init
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git submodule add --depth&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;config.ymlのbaseURLにFirebase Hostingでホストしているカスタムドメインを指定&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ vi config.yml
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# https://github.com/adityatelange/hugo-PaperMod/wiki/Installation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;baseURL: https://gkzz.dev/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#languageCode: en-us&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;title: gkzz.dev
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;paginate: &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;theme: PaperMod
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;記事を書いてローカルサーバーにデプロイしてみる
&lt;ul&gt;
&lt;li&gt;http://localhost:1313で接続できる&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ hugo new posts/&amp;lt;記事のファイル名&amp;gt;.md
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ hugo server -D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;5firebaseのインストールと初期設定&#34;&gt;5.Firebaseのインストールと初期設定&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;以下のFirebase CLIのインストール手順を参考に進める
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://firebase.google.com/docs/cli#sign-in-test-cli&#34;&gt;Firebase CLI reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ curl -sL https://firebase.tools | bash
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ firebase login
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;略
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Visit this URL on this device to log in:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;********  &amp;lt;--- 表示されるURLからログイン認証を終える
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Waiting &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; authentication...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✔  Success! Logged in as ********
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Firebase CLIからGithubのログイン認証を終え、またfirebaseServiceAccountというサービスアカウントを作成
&lt;ul&gt;
&lt;li&gt;対話形式で進んでいく&lt;/li&gt;
&lt;li&gt;firebaseServiceAccountはGithub Actions上でFirebase CLIが使うもの&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;## 改めて設定し直したい場合&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ firebase init hosting:github
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;details&gt;
  &lt;summary&gt;$ firebase init hosting&lt;/summary&gt;
  &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ firebase init hosting
You&amp;#39;re about to initialize a Firebase project in this directory:

  /path/to/${BLOG_DIR}


=== Project Setup

First, let&amp;#39;s associate this project directory with a Firebase project.
You can create multiple project aliases by running firebase use --add, 
but for now we&amp;#39;ll just set up a default project.

? Please select an option: Use an existing project
? Select a default Firebase project for this directory:
i  Using project ${GCP_PROJECT_ID}

=== Hosting Setup

Your public directory is the folder (relative to your project directory) that
will contain Hosting assets to be uploaded with firebase deploy. If you
have a build process for your assets, use your build&amp;#39;s output directory.


## ${BLOG_DIR}からみた相対パス。PaperModの場合、public
? What do you want to use as your public directory? public


## シングルページではないのでNo
? Configure as a single-page app (rewrite all urls to /index.html)? No


## Yes
? Set up automatic builds and deploys with GitHub? Yes
✔  Wrote public/404.html
✔  Wrote public/index.html
i  Detected a .git folder at /path/to/${BLOG_DIR}
i  Authorizing with GitHub to upload your service account to a GitHub repository&amp;#39;s secrets store.

Visit this URL on this device to log in:
********  &amp;lt;--- 表示されるURLからFirebase CLIからGithubのログイン認証を終える

Waiting for authentication...

✔  Success! Logged into GitHub as ${GITHUB_USERNAME}


##　${GITHUB_USERNAME}/${BLOG_DIR}
? For which GitHub repository would you like to set up a GitHub workflow? (format: user/repository) ${GITHUB_USERNAME}/${BLOG_DIR}

✔  Created service account ******** with Firebase Hosting admin permissions.
✔  Uploaded service account JSON to GitHub as secret ********
i  You can manage your secrets at https://github.com/${GITHUB_USERNAME}/${BLOG_DIR}/settings/secrets.

## 後ほど自分で書くのでNo
? Set up the workflow to run a build script before every deploy? No

✔  Created workflow file /path/to/${BLOG_DIR}/.github/workflows/firebase-hosting-pull-request.yml


## Yes
? Set up automatic deployment to your site&amp;#39;s live channel when a PR is merged? Yes


## main (Firebase Hostingへデプロイするときのブランチ)
? What is the name of the GitHub branch associated with your site&amp;#39;s live channel? main

✔  Created workflow file /path/to/${BLOG_DIR}/.github/workflows/firebase-hosting-merge.yml

i  Action required: Visit this URL to revoke authorization for the Firebase CLI GitHub OAuth App:
********
i  Action required: Push any new workflow file(s) to your repo

i  Writing configuration info to firebase.json...
i  Writing project information to .firebaserc...

✔  Firebase initialization complete!
&lt;/code&gt;&lt;/pre&gt;
&lt;/details&gt;
&lt;p&gt;ここまでくると、Github Actions上でFirebase CLIが使うfirebaseServiceAccountというサービスアカウントがご自身のブログのリポジトリの「settings &amp;gt; secrets」のページから登録されていることが確認できる。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
