GitHub Actions로 job 간 이미지 공유하기
GitHub Actions로 job 간 이미지 공유하기 (Share built image between jobs with GitHub Actions)
각 job은 자기 러너에 격리되어 있기 때문에, self-hosted runner나 Docker Build Cloud를 쓰지 않는 한 빌드한 이미지를 job 간에 직접 사용할 수 없어요. 하지만 actions/upload-artifact와 actions/download-artifact 액션으로 워크플로의 job 간에 데이터를 전달할 수는 있어요.
출처: 문서
본문
이 워크플로는 Docker 익스포터가 manifest list를 지원하지 않기 때문에 단일 플랫폼 이미지만 지원해요. 멀티플랫폼 이미지는 레지스트리로 push하세요. 이후 job이 push 전에 이미지를 다시 빌드한다면, 공유 캐시 백엔드를 구성해 이전 빌드 결과를 재사용할 수 있어요. 자세한 내용은 Multi-platform image with GitHub Actions를 참고해요.
name: ci
on:
push:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Build and export
uses: docker/build-push-action@v7
with:
tags: myimage:latest
outputs: type=docker,dest=${{ runner.temp }}/myimage.tar
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
path: ${{ runner.temp }}/myimage.tar
다음 job에서는 actions/download-artifact로 아카이브를 내려받아 docker load로 이미지를 로드해 사용할 수 있어요.