docker 파일을 actions 로 빌드해보기
이번에는 push 가 되었을 때 도커파일로 장고 앱이 빌드가 되고 이미지가 출력되는 워크플로우를 만들어보자
기존에 사용하던 명령어
docker run --name lion-app ...
docker images
참고용
.github/workflow/lesson1.yml
name: lesson1
on: # if the below events are on,
push: # push event
pull_request: # pull_request event
jobs: # these below tasks are on
echo-event:
name: echo event
runs-on: ubuntu-latest
steps:
- name: get event
run: echo "This event is ${{github.event_name}}"
- name: echo github context
run: echo "${{github.repositoryUrl}}"
docker-build: # job name
name: docker build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Docker buildx
uses: docker/setup-buildx-action@v2
- name: Build and Export
uses: docker/build-push-action@v4
with:
context: lion_app
tags: lion-app:latest
outputs: type=docker,dest=/tmp/lion_app.tar
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: lion-app
path: /tmp/lion_app.tar
- name: docker images
if: ${{ always() }}
run: |
docker load --input /tmp/lion_app.tar
docker images lion-app
docker-images:
# Always execute the bleow
if: ${{ always() }}
needs: docker-build
name: docker images
runs-on: ubuntu-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: lion-app
path: /tmp
- name: Load image
run: |
docker load --input /tmp/lion_app.tar
- name: docker images
run: |
docker images lion-app
actions/checkout@v3: 이 액션은 GitHub 저장소의 코드를 작업 러너에 체크아웃한다. 워크플로우에서 저장소의 코드에 액세스해야 하는 경우에 사용
https://github.com/marketplace/actions/checkout
docker/setup-buildx-action@v2: 이 액션은 Docker Buildx를 설정한다. Buildx는 Docker의 플러그인으로, 멀티 플랫폼 이미지 빌드와 기타 고급 빌드 기능을 제공
https://github.com/marketplace/actions/docker-setup-buildx
docker/build-push-action@v4: 이 액션은 Docker 이미지를 빌드하고 선택적으로 레지스트리에 푸시한다. 또한 이미지를 tar 파일로 내보내는 등의 추가 기능을 제공
https://github.com/marketplace/actions/build-and-push-docker-images
actions/upload-artifact@v3 및 actions/download-artifact@v3: 이 액션들은 작업 간에 파일을 공유할 수 있도록 "artifacts"라는 임시 저장 영역을 사용한다. upload-artifact 액션은 파일을 artifacts로 업로드하고, download-artifact 액션은 다른 작업에서 해당 artifacts를 다운로드한다.
https://github.com/marketplace/actions/upload-a-build-artifact
Artifact
Artifact는 GitHub Actions의 일시적인 저장 영역으로, 워크플로우 실행 중에 작업 간에 데이터를 공유하는 데 사용된다. 예를 들어, 한 작업에서 생성된 파일을 다른 작업에서 사용해야 하는 경우, 해당 파일을 artifact로 업로드한 후 다른 작업에서 다운로드할 수 있다.
Artifact 메커니즘:
- 워크플로우의 한 작업에서 파일을 artifact로 업로드
- 업로드된 artifact는 워크플로우의 실행 기간 동안 저장
- 다른 작업에서 해당 artifact를 다운로드하여 사용할 수 있음
- 워크플로우 실행이 완료되면 artifact는 선택적으로 일정 기간 동안 보관되거나 삭제될 수 있음
build 내에서도 images 출력되고, 다른 Job 인 docker images 에서도 다운로드 받아 출력되는 것 확인
'Dev. > Github Actions' 카테고리의 다른 글
[Cloud] CD: Github Actions - Mutiple workflow (0) | 2023.08.23 |
---|---|
[Cloud] CD: Github Actions - 환경변수, docker-compose (0) | 2023.08.21 |
[Cloud] CD: Github Actions - ssh, git pull (0) | 2023.08.19 |
[Cloud] CD: Github Actions - workflow (0) | 2023.08.18 |
[Cloud] CD: Continuous Deployment (feat. github actions) (0) | 2023.08.17 |
댓글