כתיבת סקריפט לדפלוימנט בבאש
-
יש לי תיקיה אחת שהיא בשביל השרת DEV
ועוד תיקיה עם הקבצים של שרת הפרודקשן (להלן app)
אני כותב את כל הקוד בתיקיה הDEV
ואחרי שהקימפול עובר בהצלחה (ולפעמים גם טסטים).
אני שומר לגיט, ומושך את הכל לתיקית app.אני רוצה לעשות סקריפט שיעשה את הכל ברצף
אז אלו הפקודותgo build git add -u . git commit -m "commit foo" cd ~/app git pull go build pm2 restart app
לכאורה אפשר לכתוב הכל בבאש (או שיש כלים אחרים בשביל זה)
מה שחסר לי כרגע זה :
איך לעשות תנאי שהבילד הראשון עבר בהצלחה
ולדלג על החלון בVIMשנפתח לי לפעמים בgit pull
(וגם עדיף שאם הpull
נכשל משסיבה כל שהיא, שלא ימשיך הלאה) -
@nigun אמר בכתיבת סקריפט לדפלוימנט בבאש:
איך לעשות תנאי שהבילד הראשון עבר בהצלחה
(וגם עדיף שאם הpull נכשל משסיבה כל שהיא, שלא ימשיך הלאה)
כמה דרכים:
- התוצאה של של הפעולה האחרונה נשמרת במשתנה
$?
- אפשר גם לשרשר את הפעולות על ידי
&&
ואז הפעולה השנייה מבוצעת רק אם הראשונה הצליחה. - אפשר לכתוב
set -e
בתחילת הסקריפט ואז התהליך יפסיק ברגע שפקודה כלשהו לא מחזירה קוד הצלחה.
(אגב, תבדוק אם issue זה תוקן...)
ולדלג על החלון בVIMשנפתח לי לפעמים בgit pull
מתי/למה זה מופיע? (אני לא משתמש בשורת הפקודה של גיט... )
- התוצאה של של הפעולה האחרונה נשמרת במשתנה
-
@nigun
נזכרתי שבעצם משתמשים בmake (יותר יעיל כשרוצים רק חלק מהתהליך)
יצרתי את הקובץall: test hello test: go test -v hello: @echo "Hello World"
וכשאני מפעיל
make
אם הטסט נכשל הוא לא ממשיך לHello Worldעריכה:
הנה הקובץ המלאremotDir = ~/app all: test gitadd gitpull build test: gotest -v gitadd: git add -u . git commit -m "$m" gitpull: cd ${remotDir} && git pull --no-edit build: cd ${remotDir} && go build restart: pm2 restart app logs: pm2 logs app
ומפעיל עם
make m="commit foo"
-
@yossiz אמר בכתיבת סקריפט לדפלוימנט בבאש:
מתי/למה זה מופיע? (אני לא משתמש בשורת הפקודה של גיט... )
לא יודע
בהתחלה זה לא היה מופיע לי
אבל אחרי פעם אחת עשיתי מרג' הוא דורשMerge branch 'master' of /root/test # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.
אולי הפתרון הוא
git pull --no-edit
?