📁

actions/upload-artifact はデフォルトでは隠しファイルをアップロードしなくなった

2024/09/02に公開

GitHub Actions の actions/upload-artifact アクションは、デフォルトでは隠しファイル[1]をアップロードしなくなりました
今後、隠しファイルをアップロードするためには include-hidden-files: true を指定する必要があります。

この変更は v3 と v4 の両方に適用されています。

https://github.blog/changelog/2024-08-19-notice-of-upcoming-deprecations-and-breaking-changes-in-github-actions-runners/

https://github.com/actions/upload-artifact/pull/598

というわけで実際に挙動を確認してみます。

実際の挙動を見てみる

アップロードするディレクトリを用意

こんな感じで、隠しファイルや隠しディレクトリが含まれる dir/ ディレクトリを用意してみました。

dir/
├─ hello.txt
├─ .hello_hidden.txt
├─ subdir/
│  ├─ hello.txt
│  └─ .hello_hidden.txt
└─ .subdir_hidden/
   └─ hello.txt

https://github.com/koki-develop/upload-artifact-hidden-files-example/tree/main/dir

Workflow を作成

この dir/ ディレクトリを actions/upload-artifact アクションでアップロードする Workflow を作成します。

include-hidden-files input を指定しない job」と「include-hidden-files: true を設定する job」をそれぞれ用意しました。

.github/workflows/example.yml
on: push

jobs:
  # `include-hidden-files` を指定しない (`false` がデフォルト)
  # → 隠しファイルはアップロードされない
  exclude-hidden-files:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/upload-artifact@v4
        with:
          name: exclude-hidden-files
          path: dir

  # `include-hidden-files` を `true` に指定
  # → 隠しファイルもアップロードされる
  include-hidden-files:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/upload-artifact@v4
        with:
          name: include-hidden-files
          path: dir
          include-hidden-files: true # これ

この Workflow を実行すると、それぞれの job でアーティファクトがアップロードされます。


アップロードされたアーティファクト

アーティファクトの中身を確認

それではアップロードされたアーティファクトを展開して中身を見てみます。

include-hidden-files を指定しなかった方

exclude-hidden-files/
├─ hello.txt
└─ subdir/
   └─ hello.txt

隠しファイルや隠しディレクトリが一切含まれていません

include-hidden-filestrue にした方

include-hidden-files/
├─ hello.txt
├─ .hello_hidden.txt
├─ subdir/
│  ├─ hello.txt
│  └─ .hello_hidden.txt
└─ .subdir_hidden/
   └─ hello.txt

隠しファイルや隠しディレクトリが全て含まれています。

まとめ

一応覚えとくとよさそうですね。

脚注
  1. 「隠しファイル」 = ファイル名の先頭が . のファイル。( 例 : .example.txt ) ↩︎

Discussion