개인프로젝트/자동화 13

CICD 3차전 - 깃허브 액션 사용하기

깃허브 액션 사용하기깃허브 액션을 활용한 코드 파이프라인 구성 방식에 대해 알아보겠습니다. 이 방식은 개인적인 출석체크 자동화 프로젝트에 적용된 CICD 중 일부입니다.개발자가 git을 이용해 버전 관리개발자는 로컬에서 코드를 작업하고 git을 통해 버전 관리를 합니다.개발자가 git을 이용해 GitHub에 코드를 push작업이 완료되면 개발자는 코드를 GitHub에 푸시합니다.GitHub에서 코드 변경이 일어날 경우 GitHub Actions 파이프라인을 실행GitHub은 코드 변경이 발생하면 GitHub Actions 파이프라인을 트리거합니다.GitHub Actions 파이프라인GitHub Actions은 다음과 같은 작업을 수행합니다:도커 파일을 빌드하여 이..

CICD 2차전 - 젠킨스 웹훅방식 구현안내

젠킨스 웹훅방식 구현안내젠킨스 웹훅 방식은 코드의 변경 사항을 자동으로 감지하여 CI/CD 파이프라인을 실행하는 방식입니다. 이 방식은 GitHub과 같은 버전 관리 시스템과 젠킨스를 연동하여 사용됩니다. 아래는 이 방식을 사용하여 구축한 CICD 기능의 구성입니다. 개발자가 코드 편집기에 git을 통하여 코드를 작업개발자는 로컬 환경에서 코드를 작성하고 수정합니다.개발자가 작업한 코드를 GitHub에 push작업이 완료되면 개발자는 GitHub에 코드를 푸시합니다.GitHub webhook에서 Jenkins로 코드 변경이 있음을 알림GitHub에 코드 변경이 발생하면 webhook이 이를 감지하여 Jenkins에 변경 사항을 알립니다.Jenkins에서 코드 변경을 체..

CI/CD 1차전

CICD(Continuous Integration and Continuous Deployment)CICD는 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Deployment)의 합성어로, 소프트웨어 개발 프로세스를 자동화하고 통합하여 품질을 유지하고 소프트웨어를 신속하게 제공하는 방법론입니다.내가 사용하는 CICD 방식 VSCode → GitHub → Jenkins → Docker Build → Docker Compose이 방식은 개발자가 로컬 환경에서 코드를 작성하고 수정한 후, VSCode를 통해 GitHub에 변경 사항을 푸시합니다. Jenkins는 GitHub의 변경 사항을 감지하여 자동으로 빌드 작업을 실행하고 Docker 이미지를 빌드합니다. 그 후 ..

게더타운 출석체크 자동화-Docker 컨테이너화 시키기

서버 분리 및 도커 컨테이너화기존에는 하나의 서버에서 모든 업무를 처리했지만, 효율적인 운영을 위해 서버를 분리하고 도커 컨테이너화를 진행했습니다. 이를 통해 라즈베리 파이에 설치된 도커를 활용하여 각각의 서버를 컨테이너 형태로 운영하게 되었습니다.변경된 구성:Flask 서버 컨테이너: 학생명단 텍스트 파일 생성 및 관리를 위한 Flask 서버를 컨테이너로 운영합니다. 이 서버는 WebSocket을 통해 게더타운에서 가져온 학생 명단을 처리하고 필요한 작업을 수행합니다.Node.js 서버 컨테이너: 게더타운 접속자 명단을 가져오는 기능을 수행하는 Node.js 서버를 컨테이너로 운영합니다. 이 서버는 게더타운 API를 활용하여 학생들의 접속 정보를 수집하고 필요한 데이터를 전달합니다.이와 같이 서버를 분..

게더타운 출석체크 자동화-Node.js WebSocket

실시간 학생 상태 관리를 위한 Node.js WebSocket과 Flask 서버 프로그램 오늘은 Node.js와 Flask를 이용하여 학생의 접속정보와 상태정보를 실시간으로 관리하는 프로그램을 소개합니다. 이 프로그램을 통해 학생들의 상태를 감시하고, 필요한 조치를 취할 수 있습니다. 1. Flask 서버에 전달할 학생명단 텍스트 파일 생성 먼저, Flask 서버에 필요한 학생명단 텍스트 파일을 생성합니다. 이 파일은 WebSocket을 통해 학생 명단을 받아와 저장하는 역할을 합니다. let now_userlist_filename = {}; now_userlist_filename = env_DEF_SRC+`/player_names_${getCurrentDate()}.txt`; createIfNotExi..

게더타운 출석체크 자동화-python flask 서버 구축

python flask 서버 구축 구현된 업무 목록: 학생명단 가져오기: 현재 기수의 학생명단을 가져와서 활용합니다. 이는 회사의 데이터베이스에서 학생명단을 가져오는 과정을 거쳐서 이뤄집니다. 게더타운 접속자 명단 가져오기: flask 서버는 node.js를 통해 구현된 접속자 명단을 가져옵니다. 이를 통해 게더타운에 접속한 학생들의 정보를 실시간으로 확인할 수 있습니다. #게더타운 접속자목록 가져오기 @app.route('/get_gw',methods=['POST']) def get_gw(): filename = f'{secrets['DATA_SRC']}/gethertown/{session['gather_space']}_player_nam..

게더타운 출석체크 자동화 3탄 - 최종개발

회사 업무 자동화를 위한 라즈베리 파이 서버 구축 회사에서 제공한 노트북의 성능 한계로 인해, 크롬 디버그 모드와 Flask 서버를 별도의 시스템으로 분리하기로 결정했습니다. 이를 위해 집에 있던 라즈베리 파이 서버를 활용하여 업무 자동화를 진행하기로 했습니다. 라즈베리 파이 서버 구축 과정: Flask 서버 호스팅: 라즈베리 파이에 Flask 서버를 호스팅하기 위해 필요한 설정을 마쳤습니다. 이제 Flask 서버는 회사에서 지급한 노트북과는 별도로 동작하며, 업무 자동화에 필요한 데이터를 처리합니다. nodejs 활용: 크롬 디버그 모드 대신 node js websocket 를 활용하여 업무를 진행합니다. 이 라이브러리를 통해 플레이어 정보를 쉽게 가져올 수 있어서 업무 효율성을 높일 수 있습니다. D..

게더타운 출석체크 2탄 파이썬 크롬 디버그 모드를 활용

게더타운 접속자를 확인하는 파이썬 프로그램 크롬 익스텐션의 문제점이 발견되어 > 파이썬 셀레니움으로 변경 크롬익스텐션의경우 상시가 되지않고 다른데 클릭하면 꺼짐. 플라스크+파이썬 셀레니움 조합으로 변경하여 코드 변경 0. 크롬 디버그모드 접속 크롬 브라우저를 디버그 모드로 접속. "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --remote-debugging-port=9222 --user-data-dir="D:\\ChromeTEMP" 바로 가기경로에 아규먼트 추가 원격디버그 포트 추가 -remote-debugging-port 9222 유저데이타 저장 폴더 지정 -user-data-dir="D:\ChromeTEMP" app.py에 플라스크로 학..

게더타운 접속자를 확인하는 크롬익스텐션 개발

1. 출석자명단 표시 및 실시간 업데이트** 크롬 익스텐션을 통해 게더타운의 접속자 명단을 가져와 출석 중인 사용자는 초록색 배경으로 표시되어 한눈에 확인할 수 있습니다. 또한, 새로고침 버튼을 통해 실시간으로 명단을 업데이트할 수 있습니다. 2. 출석부 가져오기 기능 "출석부 가져오기" 버튼을 클릭하면, 자체 출석 앱의 데이터베이스를 조회하여 출석한 사용자의 정보를 크롬 익스텐션 팝업 출석부에 표시합니다. 이를 통해 각 사용자의 출석 시간을 확인할 수 있습니다. 3. 퇴실부 가져오기 기능 "퇴실부 가져오기" 버튼을 누르면, 자체 출석 앱의 데이터베이스에서 퇴실 체크한 사용자의 정보를 조회하여 크롬 익스텐션 팝업 출석부에 해당 정보를 표시합니다. 이를 통해 각 사용자의 퇴실 시간을 확인할 수 있습니다. ..

3. 업무 자동화를 위한 최종 구축 방식

마지막으로 구축된 방식은 두 개의 도커 컨테이너를 사용하여 전체적인 시스템을 구축했습니다. Node.js 기반 웹소켓 프로세스: gathertown/gather-game-client를 사용하는 노드 기반의 웹소켓 프로세스입니다. 이 프로세스는 다음과 같은 알고리즘을 따릅니다: 먼저 게더타운 측에서 제어용 API 키 값을 발급받습니다. Node.js를 활용하여 모니터링할 게더타운의 환경 변수를 체크하고, 접속 중인 사용자의 정보를 반복적으로 가져와 저장합니다. 이를 위해 두 개의 독립적인 Node.js 컨테이너를 구축했습니다. 5분마다 모든 사용자 정보를 MongoDB에 저장하고, 5초마다 사용자의 이름을 가공하여 내부 서버의 폴더에 텍스트 문서로 저장합니다. Python Flask 서버: 이 서버는 다음..

728x90
반응형