בתוך בית Dev: כיצד אנו מטפלים בפריסת נושא אוטומטית עבור ערכות נושא של LITE ו- PRO WordPress

בתוך בית Dev: כיצד אנו מטפלים בפריסת נושא אוטומטית עבור ערכות נושא של LITE ו- PRO WordPress

בתוך בית Dev: כיצד אנו מטפלים בפריסת נושא אוטומטית עבור ערכות נושא של LITE ו- PRO WordPress
СОДЕРЖАНИЕ
02 июня 2020

כפי שאתה יכול לדמיין, פיתוח נושא זה משהו שאנחנו עושים די הרבה כאן בחברה. עם כ- 4-5 פרויקטים חדשים בנושא העבודות בכל רגע נתון, ו -80 ערכות נושא ב- הספריה שלנו בסך הכל (שמשמעותו תחזוקה פעילה ופיתוח נוסף של אלה גם כן), ידנו מלאות למדי.


במסגרת זו, אופטימיזציה ואפילו אוטומציה, ככל שניתן, הם המפתח.

אז היום, אנו רוצים להזמין אתכם דרך דלת הבית שלנו בשעה ThemeIsle, כביכול, ולהראות לכם שני קטעים ספציפיים בפאזל פיתוח הנושא שלנו.

לא אסתיר שפוסט מסוג זה הוא ניסוי. אם אתה נהנה מכך, אנו נדאג להוציא עוד דברים כאלה בעתיד.

באופן ספציפי, הנושא של היום הוא דבר שאפשר לקרוא לו, "פריסה אוטומטית וארכיטקטורת רגרסיה חזותית לפיתוח נושא WordPress."

רגע, מהי פריסת נושא אוטומטית?

אם אינך מדבר מפתחים, פירוש הדבר באנגלית זה שאתה יכול לפתח ערכות נושא עבור WordPress, לפרוס אותם לשרת ואז להשוות באופן חזותי את ההבדלים מול קו בסיס מוגדר מראש מבלי שתצטרך לעשות דבר ידני..

הכל קורה אוטומטית, או ליתר דיוק, "באופן אוטומטי."

איך זה עובד?

פיתחנו שני שירותים לטיפול בפריסת נושא אוטומטית זו: "שודדי אתחול" ו "שודדי שרייט."

הראשון, Pirate Bootstrap, ניתן להפעיל באמצעות ווקי רשת מ- GitHub.

על פי בקשת משיכה, היא מציגה מופע וורדפרס חדש, תוך שימוש בעיצוב נתון ממאגר סט + כל החבילות והגדרות מסד הנתונים שנלקחו מהדגמת ברירת המחדל של הנושא ב- ThemeIsle.

האחרון, Pirate Wraith, מבצע מבחן רגרסיה חזותית (המכונה גם השוואה בין תמונות משני מקורות). המבחן בודק את הפריסה החדשה של הנושא מול ההדגמה מ- ThemeIsle – חזותית – ואז מייצר דוח. בהתבסס על דוח זה, תוכל לראות במהירות אם השינויים האחרונים השפיעו על מראה הנושא.

במילים אחרות, בכל פעם שאתה עובד על נושא, ואתה רוצה לוודא כי שינויי הקוד האחרונים שלך לא פגעו בעיצוב של הנושא, אתה יכול להשתמש בפיראט ריית ‘כדי לטפל במשימה בהקלטה אוטומטית..

נסביר על כל שירות ביתר פירוט:

Pirate Bootstrap – פורס מופע חדש של וורדפרס באמצעות ערכת נושא

Pirat Bootstrap מתארח באתר forks.themeisle.com

פיראט Bootstrap בנוי על גבי WP-CLI ו יש שיטות לייצור פריסות וורדפרס שלמות מבוסס על חבילות נושא ותלות של ThemeIsle.

היסודות:

ווקי רשת GitHub

רשתות האינטרנט משמשות להתקשר לממשק ה- API של Pirate Bootstrap ב- (נפתח או לסנכרן) בקשות משיכה על ידי שליחת עומס JSON ל- http://forks.themeisle.com

בעיטה זו מתחילה את זרימת הפריסה באתר forks.themeisle.com. ככה:

פריסת נושא אוטומטית עבור ערכות נושא של LITE ו- PRO WordPress

דוגמה לטעינת מטען של GitHub בקשה:

{
"פעולה": "נפתח",
"מספר": 1,
"בקשה": {

"ראש": {
"תווית": "פרה-בוגדן: ייצור",
"ref": "הפקה",
"ש": "****",

"ריפו": {
"מזהה": 82166596,
"שם": "zerif-lite",
"שם מלא": "preda-bogdan / zerif-lite",
"בעלים": {
"התחברות": "פרה-בוגדן",

},
"פרטי": שקר,

"git_url": "git: //github.com/preda-bogdan/zerif-lite.git",
"ssh_url": "[email protected]: preda-bogdan / zerif-lite.git",
"clone_url": "https://github.com/preda-bogdan/zerif-lite.git",
"svn_url": "https://github.com/preda-bogdan/zerif-lite",

}
},

}
}

  • אנו משתמשים ב- "ש" כדי לבדוק אם זו בקשה חוקית והאם מותר לנו לעבד את המשא.
  • אנו משתמשים "התחברות", "שם" ו "ref" לייצר דייר אם הוא לא קיים.

מבנה הקובץ

מבנה הקבצים בשרת מוגדר כך שאנו מאחסנים כל דייר בתיקיה הציבורית שלו ויש לנו התקנת ליבה של וורדפרס בה אנו משתמשים להפניה עם סימלינק לכל דייר..

מבנה קובץ השוכר הוא כדלקמן:

דייר /
| _ wp / / ** התקנת הליבה של symlink של וורדפרס
| _ תוכן / / ** תיקיית תוכן לדייר עבור וורדפרס
| | _ ערכות נושא / / ** תיקיית ערכות נושא לדייר עבור וורדפרס
| | _ תוספים / / ** תיקיית תוספים לדייר עבור וורדפרס
| _ .htaccess / ** שנוצר אוטומטית .htaccess לדייר
| _ vhost.conf / ** קובץ התצורה של כינוי לאפאצ’י
| _ wp-config.php / ** קובץ config שנוצר אוטומטית לדייר

ה- wp / folder מתייחס להתקנת הליבה של וורדפרס, המשותפת לכל הדיירים. בדרך זו נוכל להתקין יחיד של וורדפרס ומופעים בודדים של אתרי וורדפרס, לכל אחד מהם הגדרות, קבצים ומשאבים מכוסים..

הליבה wp-config.php וקבצי הדייר

דוגמה לליבה של WordPress wp-config.php:

/ ** נתיב מוחלט לספריית וורדפרס. * /
demand_once ($ _SERVER [‘CONTEXT_DOCUMENT_ROOT’]. ‘wp-config.php’);

/ ** מגדיר קבצי WordPress וכלולים בקבצים. * /
demand_once (ABSPATH. ‘wp-settings.php’);

דוגמא של wp-config.php של השוכר:

(ערכים הכלולים בתוך סוגר מתולתל כפול מוחלפים אוטומטית ביצירת הדייר.)

/ ** נוסף על ידי ממשק API של BOOTSTRAP * /
{{MYSQL_CONNECTION_TENANT_DATA}}

הגדירו (‘AUTH_KEY’, ‘{{AUTH_KEY}}’);
הגדירו (‘SECURE_AUTH_KEY’, ‘{{SECURE_AUTH_KEY}}’);
הגדירו (‘LOGGED_IN_KEY’, ‘{{LOGGED_IN_KEY}}));
הגדירו (‘NONCE_KEY’, ‘{{NONCE_KEY}}’);
הגדירו (‘AUTH_SALT’, ‘{{AUTH_SALT}}’);
הגדירו (‘SECURE_AUTH_SALT’, ‘{{SECURE_AUTH_SALT}}));
הגדירו (‘LOGGED_IN_SALT’, ‘{{LOGGED_IN_SALT}}’);
הגדירו (‘NONCE_SALT’, ‘{{NONCE_SALT}});

להגדיר (‘WP_DEBUG’, שקר);

הגדירו (‘WP_CONTENT_DIR’, ‘{{tenant_folder}} / תוכן’);
הגדירו (‘WP_CONTENT_URL’, ‘{{tenant_folder}} / תוכן’);
הגדירו (‘WP_PLUGIN_DIR’, ‘{{tenant_folder}} / תוכן / תוספים’);
הגדירו (‘WP_PLUGIN_URL’, ‘{{tenant_url}} / תוכן / תוספים’);

אם (מוגדר (‘ABSPATH’))
הגדירו (‘ABSPATH’, dirname (__ FILE__). ‘/ wp’);

לאחר יצירת הדייר, אנו מבקשים לשאול נקודת קצה לאחזור חבילות הדרושות לפריסת נושא (תוספים, ערכות נושא לילדים, מסד נתונים). החבילות נשמרות במטמון / מאוחסנות בתיקיית stash בשרת ומתרעננות כל שש שעות.

השלב הבא הוא לבדוק אם הנושא שאנחנו רוצים לפרוס הוא פריסה יחידה או שצריך לייצר ערכות נושא נוספות מהבסיס.

  • אם מדובר בפריסה יחידה, אנו פשוט משתמשים במשיכה קלה "ssh_url" לדייר / תוכן / נושאים /.
  • במקרה ולא מדובר בפריסה יחידה, אנו מבצעים משיכה קטנה ל- tmp /, מפעילים יצירת רטט ואז מעתיקים את התיקיות המתקבלות לשוכר / תוכן / ערכות נושא /.

המשימה לייצר נהרות היא תקן עבורנו בעבודה עם ערכות נושא שיש בהן מספר גרסאות (בדרך כלל "לייט" ו "מקצוען") תוך שימוש באותו בסיס קוד (מאגר). לדוגמה, אם אנו מפעילים יצירת גרנט למאגר hestia-pro, נקבל גם את גרסת הלייט באופן אוטומטי.

לאחר הטיפול באמור לעיל, אנו משתמשים ב- WP-CLI כדי להתקין את כל החבילות הנדרשות (תוספים ו / או ערכות נושא לילד) וייבא את המזבלה ממסד הנתונים מ demo.themeisle.com.

השלבים האחרונים הם לשטוף את כללי ההכתבה .htaccess, עדכן "אתרורל" ו "בית" עם כתובת האתר של השוכר וכתובת האתר של WordPress Core, עדכן קישורים לפריטים ופוסטים בתפריט, ואז לבסוף טען מחדש את אפאצ ‘י.

לאחר מכן אנו שולחים למשתמש אימייל עם כתובת האתר המזלגית שלו עבור בקשת המשיכה והיומן שנוצר במהלך הפריסה. (כל דייר שנוצר עוקב אחר מודל URL כללי זה: http://forks.themeisle.com/github-login/theme-slug/branch/)

Pirat Bootstrap – טיפים & טריקים ומידע שימושי אחר

כשאתה ניגש ל- forks.themeisle.com, אתה יכול לגשת לממשק דמוי מסוף על ידי לחיצה על "~" (מפתח Tilde) ואז הפעל משם כמה חבורות שימושיות. הרלוונטיות ביותר הן:

איפוס פריסת דייר

הפקודה היא דייר איפוס פיראטים [דייר] (* נושא-שבלול) |

דוגמא:

פיראט איפס את הדייר preda-bogdan / zerif-lite / פיתוח |  

או:

פיראט איפס את הדייר פרדה-בוגדן / hestia / פיתוח hestia-pro |

פקודת האיפוס מחזירה את השוכר למצב הפריסה המקורי שלו (איפוס בסיסי נתונים, התקנת תוספים מחדש ו / או ערכות נושא לילד).

הצגת יומנים

הפקודה היא יומני ראווה. פקודה זו שימושית אם עליך לבדוק את קבצי היומן לאחר פריסה ועדיין לא קיבלת דוא”ל או שאתה צריך לבצע ניפוי באגים.

הערה: קובץ היומן מסתובב אם גודל הקובץ גדול מ- 9000 בתים, כך שאם אינך מצליח למצוא את מה שאתה מחפש, יתכן שתצטרך לבדוק את ארכיון היומן ישירות בשרת..

Pirate Wraith – משווה חזותית שתי גרסאות של נושא

פיראט ורייט מתארח בכתובת wraith.themeisle.com

פיראט וריית בנוי על גבי ורייט ויש לו נקודות קצה לקיום אינטראקציות עם בקשות Slack, Travis ו- AJAX כדי למנף יכולות של Wraith ולייצר בדיקות ודיווחים של רגרסיה חזותית..

טראוויס

Pirate Wraith חושף נקודת קצה באתר wraith.themeisle.com שמאזין לבקשות מבניית טראוויס, ו "נכשל" או "עובר" הבנייה על פי תוצאות מבחן רגרסיה חזותית.

בתוך קובץ ה- .travis.yml, הוספנו מטריצה ​​חדשה המגדירה מבנה חדש על גבי הקיים. זה קובע הרשאות להפעלת סקריפט bash בתוך הפרויקט ואז מבצע אותו.

קובץ ה- YML של טראוויס:

מטריצה:
כולל:
– php: "7.0"
לפני_התקנה: chmod + x wraith.sh
להתקין:
לפני_תסריט:
env: TEST_SUITE = Wraith_Visual_Regression_Testing WRAITH_FAIL = 5
תסריט: ./wraith.sh

אתה יכול לראות את זה "להתקין" ו "לפני_סקריפט" נותרים ריקים. זה בכוונה, כך שהמבנה אינו יורש פעולות מבניינים שהוגדרו בעבר. אנו מעוניינים רק להריץ את סקריפט הבש (script: ./wraith.sh) במבנה זה.

כמו כן לציין; אנו קובעים משתנה סביבתי הנקרא WRAITH_FAIL. ערך זה משמש כדי להגיד לפיראט ורייט את ההפרש המקסימלי המותר למעבר מבחן.

תסריט הבש:

#! / bin / bash
WRAITH_SLUG = $ (צומת -pe "דורשים (‘./ package.json’). wraithSlug")
WRAITH_FAIL = $ {WRAITH_FAIL: -5}
גוף ="{
‘בקשה’: {
‘travis_event_type’: ‘$ TRAVIS_EVENT_TYPE’,
‘travis_pull_request’: ‘$ TRAVIS_PULL_REQUEST’,
‘travis_repo_slug’: ‘$ TRAVIS_PULL_REQUEST_SLUG’,
‘travis_branch’: ‘$ TRAVIS_PULL_REQUEST_BRANCH’,
‘wraithSlug’: $ WRAITH_SLUG,
‘wraithFail’: $ WRAITH_FAIL,
}
}"
הד "הפעלת סניף של $ TRAVIS_PULL_REQUEST_SLUG
$ TRAVIS_PULL_REQUEST_BRANCH ‘על טראוויס."
פלט = $ (סלסול – sw "% {http_code}" -X פוסט \
-ח "סוג תוכן: יישום / json" \
-ח "קבל: יישום / ג’סון" \
-ח "טראוויס-גרסת API: 3" \
-ד "$ {body // \ ‘/ \"}" \
‘http://wraith.themeisle.com’)
http_code ="$ {פלט: $ {# פלט} -3}"
אם [$ {# output} – משך 3]; לאחר מכן
גוף =""
אחר
גוף ="$ {פלט: 0: $ {# פלט} -3}"
fi

אם [$ http_code! = 200]; לאחר מכן
הד "פלט $";
יציאה 1
אחר
הד "פלט $";
יציאה 0
fi

בקיצור, סקריפט זה יוצר עומס JSON המכיל משתני ברירת מחדל של סביבת טראוויס ומשתמשים בהגדרת משתמשים. כמו כן, הוא קורא package.json ומקבל את שבלול הנושא.

החלק השני של התסריט מבצע בקשת POST דרך "תלתל" ל- Pirate Wraith ומנתח את התגובה על מנת לאחזר את קוד הסטטוס HTTP / 1.1 של התגובה.

אנו משתמשים בקוד הסטטוס ל "להיכשל" או "לעבור" לבנות. ממשק ה- API של Pirate Wraith מחזיר קודי HTTP / 1.1 תקפים עבור כל בקשה שהוא מעבד.

  • הוא יחזיר קוד 200 לבדיקות מלאות ועברו.
  • לכל דבר אחר, הבנייה תיכשל עם קוד יציאה של 1 (יציאה 1)

יכול להיות שאתה תוהה מה השוואה של ורית ‘. התשובה היא פשוטה; זה משווה את פריסת הדייר של בקשת המשיכה הנוכחית מ- Pirate Bootstrap עם ההדגמה של נושא היעד.

להבנה טובה יותר של GitHub – Travis – Pirate Bootstrap – מחזור החיים של Pirate Wraith, הנה תרשים הממחיש את זרימת העבודה של שירותים אלה:

זרימת אתחול פיראטים / זרימת עבודה של פיראטים

כפי שאתה יכול לראות, GitHub מודיע לשניהם שודדי אתחול ו טראוויס על בקשת משיכה חדשה. Bootstrap מתחיל לפרוס דייר, שואל טרוויס שודדי שרייט להתחיל בבדיקות.

שודדי שרייט משווה את גרסת הדייר להדגמה עם ThemeIsle הדגמה ומחזירה את התוצאות ל טראוויס, כך שזה יכול לעבור או להיכשל לבנות.

רפוי

בנוסף לתמיכה של טראוויס, לפיראט ורייט יש נקודת קצה להשתלבות עם Slack.

לאחר סיום הבנייה מטראוויס (לעבור או להיכשל), נוצר דוח בערוץ #eyepatch המכיל קישור לגלריה שנוצרה וסיכום של ההבדלים שנמצאו.

מובנות גם כמה פקודות מועילות בהן אתה יכול להשתמש בכל ערוץ (הערה: ממשק ה- API של Pirate Wraith יגיב בערוץ זה בתגובה ציבורית, לכן אנו ממליצים להשתמש בפקודות בצ’אט עצמי). להלן הפקודות של Slack:

איפוס צילומי קו ההיסטוריה של נושא

/ wraith-history [נושא-שבלול]

דוגמא:

/ wraith-history zerif-lite |

השוואה עם צילומי היסטוריה של נושא

/ wraith-האחרונה [נושא-שבלול] [url]

דוגמא:

/ wraith-האחרונה zerif-lite http: //forks.url/pb/zerif-lite |

פקודה זו משתמשת בבלוג שסופק כדי להשוות את כתובת האתר הנתונה להיסטוריה של אותו שבלול.

השוואה בין שתי כתובות אתרים

/ wraith-השוואה [url] לעומת [url]

דוגמא:

/ wraith-השווה http://url.one לעומת http: //url.two 

פיראט ורייט – טיפים & טריקים ומידע שימושי אחר

איפוס צילומי קו ההיסטוריה של נושא

wraith לאפס את ההיסטוריה [נושא-שבלול]

פקודה זו מאפסת את ההיסטוריה עבור הקליע הנתון.

השוואה עם צילומי היסטוריה של נושא

בדוק wraith האחרונה [שבלונות נושא] [url]

פקודה זו משתמשת בבלוג שסופק כדי להשוות את כתובת האתר הנתונה להיסטוריה של אותו שבלול.

השוואה בין שתי כתובות אתרים

wraith השווה כתובות אתר [url-one] [url-two]

הצגת יומנים

הפקודה היא יומני ראווה. פקודה זו שימושית אם עליך לבדוק את קבצי היומן. זה עובד באותו אופן כמו ב- Pirate Bootstrap.

לקחת שלך?

זה די מסכם את שני השירותים החדשים שלנו וכיצד ניתן להשתמש בהם כדי להפוך את פריסת הנושא של וורדפרס לאוטומטית.

יצרנו גם את הפיראטים Bootstrap וגם את Pirate Wraith כדי לשרת את הצרכים שלנו, אך אנו מאמינים כי מושגים אלה יכולים להיות מועילים באותה מידה לכל מי שעובד גם על פרויקטים שונים של פיתוח. במיוחד אם אתה בונה מוצרים נגזרים (כמו נושאי וורדפרס מקצוענים ולייט במקרה שלנו) ואתה רוצה לבדוק איזה סוג משפיע על שינויי קוד ספציפיים על המראה שלהם.

העניין עם ערכות הנושא של וורדפרס הוא שבסיסי הקוד של מרבית הנושאים המודרניים נוטים לצמוח די מהר, וכמה אלמנטים ספציפיים של בסיסי הקוד הללו יכולים להשפיע באופן בלתי צפוי על המראה של אלמנטים אחרים בנושא. לנסות לתפוס את כל זה באופן ידני – רק על ידי התבוננות בדברים דרך העיניים האנושיות שלך – יכול להיות ממש מאתגר, כך שתמיד זו עזרה גדולה להכניס לתערובת איזושהי אלגוריתם / אוטומציה..

אבל מה אתה חושב? האם אתה רואה את הערך של כלים כאלה גם עבור פרויקטים אחרים?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Это интересно
    Adblock
    detector