【GitHub Actions】 S3에 캐싱하는 액션을 만들었습니다
6034 단어 시S3GitHubActionsAWS
소개
S3에 캐시하는 작업을 만들었습니다.
GitHub Actions 공식 캐시 기능인
actions/cache
같은 문제가있는 것 같습니다.
자세한 내용은 이 블로그 기사를 참조하세요.
게다가 캐시의 용량은 리포지토리 마다 5GB라는 것입니다만, 분명히 용량 오버하고 있지 않을 것인데, 캐시 미스가 발생하고 있는 일이 있는 것 같은 생각이 듭니다.
그래서 이번에 S3에 독자적으로 캐시시키는 액션을 만들었습니다.
지금, 쾌적하게 움직이고 있으므로, 이번 그 내용을 소개하겠습니다.
사용법
예로서 다음과 같이 기술하면
npm ci
에 의해 작성된 node_modules
를 S3에 캐쉬 해, 다음 번 이후는 S3로부터 복원합니다.jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: shonansurvivors/[email protected]
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ap-northeast-1
with:
s3-bucket: your-s3-bucket-name # 必須
cache-key: npm-v1-${{ hashFiles('laravel/package-lock.json') }} # 必須 ('.zip' は記述不要)
paths: node_modules # 必須(キャッシュするディレクトリやファイル。複数ある場合はスペース区切りで記述)
command: npm ci # 必須(インストールやビルドのコマンドを記述)
zip-option: -ryq # 任意 (デフォルト: -ryq)
unzip-option: -n # 任意 (デフォルト: -n)
working-directory: laravel # 任意 (デフォルト: ./)
사전 준비로서는
필요합니다. 캐시이므로 S3 버킷에는 라이프사이클 정책을 붙여 일정 일수로 객체가 삭제되도록 하면 좋을까 생각합니다.
다음은 IAM 정책의 예입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
],
"Resource": [
"arn:aws:s3:::your-s3-bucket-name",
"arn:aws:s3:::your-s3-bucket-name/*"
]
}
]
}
액션 유형에는 Docker 액션과 JavaScript 액션이 있지만 actions-s3-cache는 후자의 JavaScript 액션입니다.
따라서 GitHub에서 제공하는 VM 환경에서 직접 실행됩니다.
기타 공식 actions/cache와의 차이
실제로 사용해보십시오.
정확하게 측정하지는 않지만, 속도적으로는 공식
actions/cache
와 손색 없는 생각이 듭니다.무엇보다 캐쉬가 거기에 있을 것인데 히트하지 않는, 라는 상황에도 다소 하지 않는 것은 쾌적했습니다.
좋으면 꼭 사용해보십시오.
「S3 잇윽!!」
Reference
이 문제에 관하여(【GitHub Actions】 S3에 캐싱하는 액션을 만들었습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shonansurvivors/items/d0ea8e045f9c113522bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)