[MẸO] Khắc phục sự cố cài đặt Pip trong đường dẫn CI/CD
By JoeVu, at: 17:38 Ngày 20 tháng 9 năm 2024
Thời gian đọc ước tính: __READING_TIME__ minutes
![[TIPS] Troubleshooting Pip Installation Issues in CI/CD Pipelines](/media/filer_public_thumbnails/filer_public/2e/79/2e79498b-5628-4425-a716-0d72bb726268/celery_-_pip_issues.png__1500x900_crop_subsampling-2_upscale.png)
![[TIPS] Troubleshooting Pip Installation Issues in CI/CD Pipelines](/media/filer_public_thumbnails/filer_public/2e/79/2e79498b-5628-4425-a716-0d72bb726268/celery_-_pip_issues.png__400x240_crop_subsampling-2_upscale.png)
Khắc phục sự cố cài đặt Pip trong đường dẫn CI/CD
Vấn đề
Hôm nay, tôi gặp phải sự cố với đường dẫn CI/CD của ứng dụng Django trong GitLab. Sau khi hoạt động trơn tru trong nhiều tháng, đường dẫn đột nhiên bị lỗi trong bước pip install -r requirements.txt
. Nhật ký lỗi chỉ ra vấn đề với việc cài đặt Celery==5.1.0:
Requested celery==5.1.0 from https://files.pythonhosted.org/packages/b4/f3/884b0b5bd46bc9d9721076c060b2ea37b2f95fdb6edb01e7fcda3def56dc/celery-5.1.0-py3-none-any.whl (from -r requirements.txt (line 34)) has invalid metadata: Expected matching RIGHT_PARENTHESIS for LEFT_PARENTHESIS, after version specifier
pytz (>dev)
~^
Please use pip<24.1 if you need to use this version.
ERROR: Ignored the following yanked versions: 5.0.6, 5.2.5
ERROR: Ignored the following versions that require a different python version: 5.0 Requires-Python >=3.10; 5.0.1 Requires-Python >=3.10; 5.0.2 Requires-Python >=3.10; 5.0.3 Requires-Python >=3.10; 5.0.4 Requires-Python >=3.10; 5.0.5 Requires-Python >=3.10; 5.0.6 Requires-Python >=3.10; 5.0.7 Requires-Python >=3.10; 5.0.8 Requires-Python >=3.10; 5.0a1 Requires-Python >=3.10; 5.0b1 Requires-Python >=3.10; 5.0rc1 Requires-Python >=3.10; 5.1 Requires-Python >=3.10; 5.1a1 Requires-Python >=3.10; 5.1b1 Requires-Python >=3.10; 5.1rc1 Requires-Python >=3.10
Điều này thật kỳ lạ vì phiên bản Celery 5.1.0 đã tồn tại và tôi đã sử dụng nó trong nhiều năm.
Nguyên nhân gốc rễ
Vấn đề là do sự không tương thích giữa phiên bản pip 24.2 và Celery==5.1.0. Nhật ký lỗi cho thấy pip không thể phân tích chính xác siêu dữ liệu của Celery do sự không khớp phiên bản, dẫn đến lỗi cài đặt.
Liên kết tham khảo: https://github.com/celery/celery/discussions/9112
Giải pháp
Để giải quyết vấn đề này, tôi đã sửa đổi đường dẫn CI/CD để cài đặt phiên bản pip 24.0 thay vì nâng cấp lên phiên bản mới nhất (24.2 tính đến ngày 16 tháng 8 năm 2024). Điều này đã khắc phục sự cố và đường dẫn đã cài đặt thành công tất cả các phụ thuộc, bao gồm cả Celery.
Tạo venv và nâng cấp pip:
stage: build
rules:
- if: $CI_COMMIT_BRANCH == "develop"
when: manual
tags:
- test
script:
- rm -R venv
- python3.8 -m venv venv
- venv/bin/pip3 install -U pip==24.0 --force
- venv/bin/pip3 install wheel
Bài học kinh nghiệm
Khi duy trì đường dẫn CI/CD, điều quan trọng là phải theo dõi những thay đổi trong các công cụ bạn đang sử dụng. Trong trường hợp này, việc nâng cấp pip đã gây ra sự không tương thích với một gói đã ổn định trong một thời gian dài. Việc quay lại phiên bản pip trước đó cho phép tôi duy trì sự ổn định của đường dẫn trong khi chờ sửa lỗi hoặc chuẩn bị nâng cấp gói.
Đối với những người gặp phải các vấn đề tương tự, hãy thử khóa phiên bản pip của bạn vào một bản phát hành ổn định hoạt động với các phụ thuộc hiện có. Điều này có thể ngăn ngừa các lỗi không mong muốn và giữ cho đường dẫn CI/CD của bạn hoạt động trơn tru.