여러 Dockerfile을 빌드하는 GitHub Actions 워크플로 설정
5362 단어 GitHubActions도커
이 리포지토리는 다음을 실현하기위한 GitHub Actions 워크 플로 설정 (yaml 파일)의 구현 예입니다.
실현하고 싶은 것
리포지토리에 여러 개의 Dockerfile을 GitHub Actions로 빌드
변경된 파일만 빌드
나무
.
├── .github
│ └── workflows
│ └── main.yaml
├── hello
│ ├── Dockerfile
│ └── hello.sh
├── world
│ ├── Dockerfile
│ └── world.sh
└── README.md
/.github/workflows/main.yaml
name: ci
on:
push:
branches:
- 'main'
paths-ignore:
# 他のファイルも含めて変更があった場合はactionが動作してしまうので、
# 以下がdocker buildの対象にならないようにstepsでチェックする
- '.github/**'
- 'README.md'
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- id: file_changes
# changed filesをリスト化してくれるモジュール
uses: trilom/[email protected]
with:
# パイプ処理したいため、changed filesリストを改行区切りにする
output: '\n'
- name: docker_build
run: |
#
# ${{ steps.file_changes.outputs.files }}
# ↓
# hello/Dockerfile
# hello/hello.sh
# world/world.sh
# .github/workflows/main.yaml
# ↓
# hello
# world
# .github
#
echo -e "${{ steps.file_changes.outputs.files }}" | \
awk '{sub("/.*", "");print $0;}' | \
sort | \
uniq | \
while read line
do
echo "##### docker build -> ${line} #####"
if [ ! -e ./${line}/Dockerfile ]; then
# .githubとREADME.mdはこのロジックに入る
echo "./${line}/Dockerfile not exists"
continue
fi
docker build -t ${line} ./${line}
# 確認のため
docker run --rm ${line}
done
동작 확인
사례 1
다음 파일 작업
⇒GitHub Actions가 다음 디렉토리를 docker build
(changed files)
(GitHub Actions 로그)
사례 2
다음 파일 작업
⇒GitHub Actions가 다음 디렉토리를 docker build
(changed files)
(GitHub Actions 로그)
사례 3
다음 파일 작업
⇒GitHub Actions는 작동하지 않음
Reference
이 문제에 관하여(여러 Dockerfile을 빌드하는 GitHub Actions 워크플로 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/eyasy1217/items/e2a15564254e142a4f91텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)