はじめに
Github Actionsにはartifactをupload/downloadするために利用するActionsが予め用意されている。
https://github.com/actions/upload-artifact
https://github.com/actions/download-artifact
当然のことだが、GithubActionsでは滅茶苦茶使われている。AWS S3にUploadしたりとかCICDの常套手段だからであんまり考えずに簡便に利用できるActionだからである。
- uses: actions/upload-artifact@v4
with:
name: my-artifact
path: path/to/artifact/ # or path/to/artifact
昨今幾つか問題になりそうな事例があるため、本項にまとめている。
Upload-Artifactに関する破壊的な変更
9/2にこのような隠しファイルのUploadをやめるという変更を既存Verに入れるという話があり、それを8/19のBlogにて通知していた。
GitHub Actions のアーティファクトのアップロードでデフォルトで隠しファイルを除外
2024 年 9 月 2 日より、v3 および v4upload-artifactアクションのデフォルトのアップロードの一部として隠しファイルとフォルダーが含まれなくなります。これにより、資格情報が誤ってアーティファクトにアップロードされるリスクが軽減されます。これらのファイルを引き続きアップロードする必要があるお客様は、新しいオプション「include-hidden-files」を使用して、引き続きアップロードできます。
https://github.blog/changelog/2024-08-19-notice-of-upcoming-deprecations-and-breaking-changes-in-github-actions-runners/
ところが、当然と言えば当然だがblogを常に読んでいる保証などなく、しかもこれは今まで動いていたものが急に動かなくなる破壊的変更であることから、世界中の数々のSystemで急にDeployが失敗するようになり、しかも自分たちの箇所ではないことから調査に恐ろしく時間がかかる場合もあり、当該PRには世界中から怨嗟の声が殺到。
新しい v5 バージョンを作成するのではなく、v3 と v4 に重大な変更を導入するのはなぜですか?
この意見に同調すると、新しいメジャー バージョンがなければ、重大な変更は発生すべきではありませんでした。この変更により、当社の本番システムで文字通りダウンタイムが発生し、デバッグに何時間もかかりました (もちろん、その時点で本番環境はロールバックされていました)。
(中略)
また、祝日で多くの人が仕事をしていない日にこれをリリースするのは、完全に不快で失礼です。まるで、人々が注意を払っていないかもしれないときに、それを滑り込ませたかったかのようです.....🙄
@nebuk89パイプラインは壊れませんでしたが、実行に必要なファイルがない状態でアプリケーションがデプロイされたため、ダウンタイムと費やされた時間の請求書をお送りしてもよろしいでしょうか。
自分の間違いを認め、悪意ある隠しファイルのアップロードから私たちを守ってくれて何とかその日を救ってくれたという盾の後ろに隠れないでください... 真面目な話、草に触れてください... これはあなたがパッチを当てているゼロデイではありません。そのような愚かな理由で、semver を無視して破壊的な変更をプッシュしないでください。
隠しファイルをUploadしないという意向は理解するものの結局include-hidden-files: true
というOptionsを付ければクリアされるというなんとも悩ましい対応であり、結果的にこの対応で終わらせた人も多かったであろう。であれば、既存Verにこの破壊的変更を入れる意味って何?っていう疑問はご尤もだと思われる。
v3Actionsの廃止
次に問題になりそうなのはこれである。
EOLですらなく、使えなくなるというものであり、これもまた怨嗟の声が殺到しそうな感じである。下方互換性を考慮しないというのはこれだけ使われているActionsにおいては割と珍しいことのようにも思うが、それは日本の感覚であんまり考えてないのかな、とはいえ、きっとまた世界中でDeploy失敗問題が起きそうではある。
廃止のお知らせ: アーティファクトアクションの v3
2024 年 11 月 30 日以降、GitHub Actions のお客様はactions/upload-artifactまたはactions/download-artifactの v3 を使用できなくなります。お客様は、できるだけ早くワークフローを更新して、アーティファクト アクションの v4 を使い始める必要があります。
v3がリリースされたのが2022年3月だから2年半かー。まあそんなもんかなあ。
https://github.com/actions/upload-artifact/releases/tag/v3.0.0
当然のことながらメジャーバージョンアップなので細かい挙動は全く違うため、検証せずにUpdateはできないであろう。