working-directoryを指定したjobでArtifactをアップロードしたらハマってしまいました
はじめに
実現しようとしていたことは、一方のJobではNodeでのテストやビルドを実施するものです。
このテストやビルドは特定のディレクトリに対して実施するものだったので、working-directory
を利用して該当ディレクトリをjob全体の作業ディレクトリとして指定しました。
Artifactのやり取りについては、以下の2つのActionを利用します。このような時に、僕のハマったポイントをみなさんお伝えできればと思います。
ディレクトリ構成
まずは、今回のディレクトリ構成をお伝えします。
packages
ディレクトリにはビルド前の(TypeScript)コードが配置されています。
このコードに対してビルドを行うと、build
ディレクトリに出力されます。
.
└── packages
├── build
│ └── webhook
│ └── index.js
├── package.json
├── pnpm-lock.yaml
├── tsconfig.json
└── webhook
└── src
├── index.ts
└── tsconfig.json
GitHub Actionsの作業ディレクトリ
上のディレクトリ構成をご覧いただくとわかるとおり、ビルドはpackages
ディレクトリで実施します。
そのため、このビルドを行うjobに対しては以下のコードのようにworking-directory
で作業ディレクトリを指定しました。
jobs:
build:
name: 'Build'
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: packages
steps:
...
上の指定により、このjob内の作業ディレクトリは原則として、packages
ディレクトリとなります。
ArtifactのアップロードでArtifactが存在しない
この指定によって問題なく、ビルド自体は行われていました。 しかしならが、upload-artifactを使用して、以下のようにアップロードを実施しようとしましたが、Warningが発生しました。
アップロード部分のコード
path
では、アップロード対象であるファイルパスやディレクトリを指定します。
このjobでは、作業ディレクトリをpackages
にしていたので、その直下にbuild
ディレクトリは存在しています。
そのため、path: build
と記述しました。
- name: 'Upload Artifacts'
uses: actions/upload-artifact@v4
with:
name: build_artifact
path: build
発生したWarning
しかし、GitHub Actionsを実行してみると、以下のようなWarningが発生しました。 実際にアップロードされているArtifactも存在しない状態です。
upload-artifactのpathはrootディレクトリが起点
このWarningの原因は、upload-artifactのpathはrootディレクトリが起点となるということを見落としていたことにあります。
そのため、pathはpackage/build
を指定しなければならなかったのです。
公式ドキュメントの記載はまだ見つけられていないですが…。
これにより、無事にArtifactをアップロードすることができました。
download-artifactのpathも同様の考え方
download-artifactもダウンロードしたArtifactをどこに配置するか、path
で指定することができます。
このpathも起点はrootディレクトリになります。
さいごに
いかがでしたでしょうか。 原因としてはシンプルかつ初歩的なものだと思いますが、地味に躓いてしまったところなので共有としてお伝えできればと思います。 誰かのお役に立てれば幸いです。