في هذه المقالة ، قررت أن أصف تجربتي مع تكوين gitlab CI و VPS المستأجرة.خلفية
في العمل ، الأشعة فوق البنفسجية. أنشأ DevOps'y نشرًا لمشاريع في kubernetes ( أعمل كمطور Go ). لدي مشروعي المفضل للحيوانات الأليفة - وأردت أتمتة ، ولكن لم تكن هناك رغبة خاصة في رفع gitlab (VPS ليس من المطاط على أي حال).البيانات الأولية
إنشاء مستودع
نقوم بإنشاء المستودع الذي نريد أتمتة.قررت للاختبارات لرفع عامل الميناء مع nginx وإعادة توجيهه إلى صفحة html.هيكل المستودع:ملف DockerfileFROM nginx:latest
COPY html /var/www/html
COPY nginx.conf /etc/nginx/nginx.conf
nginx.confevents {}
http {
server {
listen 80;
location / {
root /var/www/html;
}
}
}
- لغة البرمجة
index.html<html>
<h1>Hello, Runner!</h1>
</html>
.gitlab-ci.yml
image: docker:19.03.8
before_script:
- docker info
build:
stage: build
script:
- docker build -t hellorunner .
deploy:
stage: deploy
script:
- docker ps --filter name=hellorunner --quiet | xargs --no-run-if-empty docker stop | xargs --no-run-if-empty docker rm
- docker run -d --restart=always --name hellorunner -p 8090:80 hellorunner
after_script:
- docker system prune -f
إعداد المستودع
افتح الإعدادات -> CI
ثم ، انقر فوق Runners ، قم بتوسيع.
أولاً ، أوقف تشغيل العدائين المقترحين - قم بتعطيل العدائين المشتركين
بعد ذلك ، نحن مهتمون بـ - "قم بإعداد عداء محدد يدويًا"
نقوم بنسخ الرمز المميز ، في المستقبل سنحتاج إليه.إعداد VPS
تثبيت عامل الميناء .تثبيت عداء gitlab .تسجيل عداء جديد.! في حقل المنفذ ، حدد إصدار عامل الميناء ، كما هو الحال في ملف Dockerfile!
في حقل الرمز المميز ، حدد الرمز المميز الذي تم تذكره من gitlab
gitlab-runner register
الآن ، تحتاج إلى إجراء تغييرات صغيرة على تهيئة العداء.nano /etc/gitlab-runner/config.toml
حقلvolumes = ["/cache"]
التغيير إلىvolumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
إعادة تشغيل البرنامج الخفيgitlab-runner restart
عد إلى gitlab / settings / CI / Runners مرة أخرى.يجب أن يظهر عداء نشط.
عدّل العداء بالضغط.
اسمح بتنفيذ المهام بدون علامات.
الآن نفذ عمليات الدفع واتبع المهام.
وأخيرًا ، افتح المتصفح.
رابط إلى مستودعPS: لقد واجهت مشكلة - لدي صورة مجمعة من الداخل لم يكن لديك حق الوصول إلى شبكة خارجية ، الحل قم بإنشاء الملف /etc/docker/daemon.json :{
"dns": ["8.8.4.4", "8.8.8.8"]
}
service docker restart