⚙️ Ops/CI & CD2023. 5. 24. 11:52Github Actions Self-Hosted-Runner

Self Hosted Runner Self Hosted Runner를 사용하는 이유는 Private Repo의 경우 빌드 시 분당 요금이 나가기 때문에 Github Actions의 Runner를 로컬에 설치해 로컬에서 Runner를 돌리는 것입니다. 그 이유는 Private Repofkeh Runner를 로컬로 돌리면 무료로 Github Actions를 이용 가능합니다. Github Repository Setting -> Actions -> Runner -> New Self-Hosted Runner 클릭 설정하고자 하는 로컬 머신에 해당되는 OS를 선택하면 OS 별로 설정하는 방법이 Download와 Configure란에 설명되어 있습니다. Mac 기준 Self-Hosted-Runner로 등록하고자 하는..

⚙️ Ops/CI & CD2023. 5. 24. 10:05Work flow Commit Message Filter

Work Flow Commit Message Filter Work flow Yaml 파일의 runs on, steps 사이에 if 문으로 특정 커밋메시지가 존재할 시 특정행동을 추가할 수 있다. if: ${{ contains(github.event.head_commit.message, '#ios') || contains(github.event.head_commit.message, '#all') }} #ios 혹은 #all 이 커밋 메시지에 있는 경우에만 Work Flow가 돌아가게 할 수 있다.

⚙️ Ops/CI & CD2023. 5. 23. 21:17Compress/Upload Error Report & Cache Gradle

Github Actions Error Report Github Actions Build 실패 시 에러로그가 담긴 파일을 준다. file:///home/runner/work/Query-Builder/Query-Builder/build/reports/tests/test/index.html이런 식으로 주는데 Github Actions Runner 내부 경로라 접근이 불가능하다. 그래서 빌드 실패 시 오류가 날때 Workflow에 저 에러의 내용을 압축해서 빼와보자. 에러내용을 압축하는 Workflow - name: Compress All Report Files if: ${{ failure() }} run: | echo "Compressing All Report Files..." TIMESTAMP=$(date ..

⚙️ Ops/CI & CD2023. 5. 23. 16:03CI & CD Tool 선정

💡 배포 자동화 계획 최대한 무료 & 저렴한 CI & CD Tool 선정 Serverless면 더 좋음 관리 용이성 아마 Self-Hosted-Runner를 이용한 Github Actions를 사용할 것 같다. Candidates Jenkins 구동환경 : Cloud, On-premise No Serverless 직접 버전관리 필요 무료 Circle 구동환경 : Cloud, On-Premise 배포 가능한 AWS 서비스 : [ S3, CodeDeploy, ECS, EKS ] + ECS 지원 1번에 1개의 Job 수행 가능 주당 2500, 1달 10000크레딧 제공 사용자 수 : 처음 3명까지는 인당 15$ 이후 1명당 15$ 25000 크레딩닷 15$ 2 CPU, 4GB Mem 기준 1분당 10 크레딧 ..

⚙️ Ops/Docker2023. 5. 13. 22:42Docker - Logging

Logging 도커는 컨테이너의 표준출력(stdout)과 에러(stderr)를 별도의 Metadata 파일로 컨테이너 내부에 저장한다. 저장 경로는 컨테이너 내부의 /var/lib/docker/containers/{container-id}/{container-id}-json.log 의 경로로 저장된다. 아래 명령어는 도커 컨테이너 내부의 로그를 출력하는 기본적인 명령어와 옵션들이다. # 컨테이너 내부 로그 출력 $ docker logs {container-name} # 컨테이너 내부 로그 끝 2줄만 출력 $ docker logs {container-name} --tail 2 # 컨테이너 내부 로그의 특정 시간대 검색 (유닉스 시간대 기준) $ docker logs {container-name} --sin..

⚙️ Ops/Docker2023. 5. 9. 23:37Docker - Network

Docker Network 컨테이너 내부의 네트워크 인터페이스는 기본적으로 eth0과 lo 가 있다. 이 IP는 컨테이너 재시작 시 변경될 수 있고 내부망에서만 쓸 수 있는 IP이다. 그리고, 컨테이너 시작 시 마다 외부 연결을 위한 veth 네트워크가 호스트의 네트워크에 컨테이너의 수 만큼 생긴다. 또, 컨테이너의 외부망 연결을 위한 docker0 브릿지 네트워크도 존재한다. docker0 브릿지는 각 veth 인터페이스와 바인딩되어 호스트의 eth0과 연결을 해주는 역할을 한다. 즉, 컨테이너 eth0 -> veth -> docker0 -> 로컬의 경로로 외부 통신을 하는셈이다. 도커의 임베디드 네트워크 드라이버 bridge host none cantainer overlay Third-Party (f..

⚙️ Ops/Docker2023. 5. 9. 22:16Docker - Volume

Volume 도커 컨테이너는 기본적으로 안에 들어있는 데이터들이 컨테이너가 종료되면 사라진다. 그런 Stateful한 상태에서 도커 컨테이너를 운용하는건 좋지 못하다. Stateless하게 외부에서 데이터를 마운트해서 가져오는 방법은 Volume을 이용하는거다. 호스트의 볼륨 공유 로컬의 디렉터리를 컨테이너의 볼륨과 마운트 한다. 볼륨마운트 하면서 환경변수를 넣고 포트포워딩하는 예시 docker run -it \ --name container1 \ -e MYSQL_ROOT_PASSWORD=password \ -e MYSQL_DATABASE=wordpress \ -v /home/wordpress_db:/var/lib/mysql \ -p 33006:3306 \ mysql:5.8 파일 단위의 공유도 가능하다 ..

image