今日のインプット/アウトプット #15 2024-09-13
ルール
毎日何かしら記録する。
どんな些細なことでもOK。レベル感気にしない
書いたらtwitterにでもポストしておく
久々に2日連続ですよ。偉い。
Duolingo
GItHub CI/CD実践ガイド
キャッシュ
name: Cache test
on: push
jobs:
cache:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
key: test-${{ runner.os }}-${{ github.sha }}
path: ${{ github.workspace }}/dummydayo
restore-keys: test-${{ runner.os }}-
- run: |
if [[ -f "${GITHUB_WORKSPACE}/dummydayo" ]]; then exit 0; fi
dd if=/dev/urandom of="${GITHUB_WORKSPACE}/dummydayo" bs=1M count=10
sleep 30
- run: ls -lh "${GITHUB_WORKSPACE}/dummydayo"
cacheアクションで任意のファイルをキャッシュできる。
key, pathはまあさっとわかる。
restore-keysが最初パッと用途がわからなかった。
キャッシュミス時のリストアキーを複数指定できるとのこと
復元のフローは以下とのこと
key キーで定義したキャッシュキーと、厳密に一致するキャッシュを探す
リストアキーの定義順に、プレフィックスが一致するキャッシュを探す
これがどういうときに効いてくるかというと、パッケージマネージャ。
公式の例がわかりやすい。
key: node-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
node-${{ runner.os }}-
package-lockのhashがkeyになっていて、package-lock.jsonが変更されたされたときとかはキャッシュヒットしない。
つづいてrestore-keysで"node-${{ runner.os }}"を指定してるので以前のキャッシュが残っていればそちらが使われる。
へぇーと思って、社内のworkflow見たらちゃっかり設定されてた。
今まで知らずにやってた。ありがた。
キャッシュの利用制限と過去のポリシー
10Gまで保存されて、古いものから消されていくと。
アーティファクト
name: Artifacts test
on: push
jobs:
upload:
runs-on: ubuntu-latest
steps:
- run: date > date_dayo.txt # アーティファクト作成
- uses: actions/upload-artifact@v4
with:
name: uploaded_dayo
path: date_dayo.txt
retention-days: 3 # 保存期間ね
download:
runs-on: ubuntu-latest
needs: [upload]
steps:
- uses: actions/download-artifact@v4
with:
name: uploaded_dayo # upload-artifactに指定したnameね
path: downloaded_dayo
- run: cat downloaded_dayo/date_dayo.txt
成果物としてアップロードして、別ジョブでダウンロードとかできる。buildしたイメージとかそういうやつをアップするのが多そう。
プライベートリポジトリではストレージ使用量が課金対象になるとのこと。
retention-daysが保存期間なので、なるべく短くしておく。
デフォルトは90日で、無期限設定はできない。
この記事が気に入ったらサポートをしてみませんか?