seminar-2020
seminar-2020 copied to clipboard
django-redis 사용에 따른 workflows 수정에 대한 질문
과제 3의 GitHub Actions를 이용한 workflows를 완료한 상태입니다.
과제 4를 수행하면서 기존의 test branch를 이용했기 때문에 workflows 설정도 같이 딸려온 상황인데요, django-redis를 사용함에 따라 django.yml의 Run Tests step에서 redis-server를 실행하려고 합니다.
그 과정에서 E: Sub-process /usr/bin/dpkg returned an error code (2)
에러를 만나 어떻게든 해결하였습니다. (dpkg dependency 문제로 추정)
질문 드리고 싶은 것은 redis-server를 실행하는 과정에서 다음과 같은 문제를 만났습니다.
![image](https://user-images.githubusercontent.com/46114393/97263844-1e101280-1867-11eb-89eb-8f269ded5cda.png)
구글링 결과 redis.conf 파일을 수정하면 된다고 하는데, 제가 이해하기로는 workflow 자체가 Ubuntu에 접속하여 실행 커맨드를 적으면 알아서 수행되는 개념으로 알고 있습니다. 위 링크에서 제시한 방법 대로라면 (아래 사진 참고) Ubuntu 내부의 파일인 redis.conf에 접근하여 특정 라인을 찾아가 일부를 수정하는 방법이 막막합니다.
![image](https://user-images.githubusercontent.com/46114393/97264223-e3f34080-1867-11eb-9c08-0973d8334ae6.png)
혹시 과제4 1번을 수행하신 분들 중에 저처럼 redis 관련해서 CI 문제를 접해보신 분 없나요?
EC2 컴퓨터의 파일에 sudo vi 등으로 수정할 수 있는 것처럼 GitHub Actions가 제공하는 Ubuntu에 비슷하게 접근할 수도 있을까요?
workflow에서 sed 명령어를 이용해서 바꿀 수 있지 않을까요?
혹은 그냥 정상적으로 작동하는 redis.conf를 업로드 해놓고 해당 위치에 덮어쓰기 해도 될 것 같아요
저는 mysql과 마찬가지로 Docker 이미지로 redis를 실행했는데, yml에서 포트만 설정해 주면 redis-server
를 직접 실행시킬 필요는 없었습니다.
@Hank-Choi 감사합니다! 관련해서 더 찾아보겠습니다
@gyusang 저도 services에 mysql과 마찬가지로 redis에 대해 아래와 같이 설정하긴 했습니다. 규상님의 설정과 다소 다른 부분이 있을까요?
redis:
image: redis
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
@YeonghyeonKO 저도 같은 방법으로 설정했습니다.
Test의 어떤 step에서 에러가 발생하는 것인가요? Initialize Containers가 정상적으로 실행되었다면,
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
/usr/bin/docker create --name 355a9fcbcd3b4a80aaa89fe7cb6c23df_redis_1e9ab7 --label 1e5c35 --network github_network_5216e763bb544a36a2db94209920886d --network-alias redis -p 6379:6379 --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 -e GITHUB_ACTIONS=true -e CI=true redis
...
/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" 2301acdaa759d764d10e6fb701432abadcf8d5f5be08da4f63ae2ad138aa03ec
healthy
redis service is healthy.
위와 같이 redis service의 health-cmd(redis-cli ping
)가 성공해야 하고, 즉 redis server가 정상적으로 켜진 상태가 됩니다.
위의 에러 메시지는 apt 등을 이용하여 redis를 별도로 설치한 후 server를 켜는 것으로 보이는데, 이미 redis server가 실행되는 상태에서 또 redis server를 실행하려고 해서 문제가 발생하는 것이 아닐까요?
@gyusang 앗 그렇네요.. 문제점을 깨달았습니다. 제가 requirements.txt를 최신으로 만들지 않고(즉, redis, django-redis관련해서 명시되어 있지 않았습니다) 무작정 Run Tests에서 redis 설치해버리자 생각했던게 잘못이었습니다. requirements.txt 수정하니깐 정상적으로 작동하네요 ㅎㅎ..
@YeonghyeonKO 참고로, requirements.txt 는 수동으로 작성하지 않고 pip freeze > requirements.txt
같은 과정을 통해 생성하는 것이 바람직합니다. 간접적으로 dependency상 필요한 패키지도 함께 표시되고, 실수할 여지도 없습니다. 물론 본인이 불필요하게 해당 가상환경에 설치해둔 패키지가 포함되지 않도록 주의해야겠지만요.
@davin111 감사합니다!