浏览代码

Add prerequisite keep_artifacts var

Joshua Boniface 6 年之前
父节点
当前提交
546f4cd46f
共有 2 个文件被更改,包括 19 次插入6 次删除
  1. 17 6
      build
  2. 2 0
      deployment/README.md

+ 17 - 6
build

@@ -23,7 +23,7 @@ usage() {
     echo -e "Usage:"
     echo -e " $ build --list-platforms"
     echo -e " $ build --list-actions <platform>"
-    echo -e " $ build [-b/--web-branch <web_branch>] <platform> <action>"
+    echo -e " $ build [-k/--keep-artifacts] [-b/--web-branch <web_branch>] <platform> <action>"
     echo -e ""
     echo -e "The web_branch defaults to the same branch name as the current main branch."
     echo -e "To build all platforms, use 'all'."
@@ -67,6 +67,14 @@ if [[ $1 == '--list-actions' ]]; then
     exit 0
 fi
 
+# Parse keep-artifacts option
+if [[ $1 == '-k' || $1 == '--keep-artifacts' ]]; then
+    keep_artifacts="y"
+    shift 1
+else
+    keep_artifacts="n"
+fi
+
 # Parse branch option
 if [[ $1 == '-b' || $1 == '--web-branch' ]]; then
 	web_branch="$2"
@@ -193,6 +201,13 @@ for target_platform in ${platform[@]}; do
     echo -e "> Processing platform ${target_platform}"
     date_start=$( date +%s )
     pushd ${target_platform}
+    cleanup() {
+        echo -e ">> Processing action clean"
+        if [[ -f clean.sh && -x clean.sh ]]; then
+            ./clean.sh ${keep_artifacts}
+        fi
+    }
+    trap cleanup EXIT INT
     for target_action in ${action[@]}; do
         echo -e ">> Processing action ${target_action}"
         if [[ -f ${target_action}.sh && -x ${target_action}.sh ]]; then
@@ -204,12 +219,8 @@ for target_platform in ${platform[@]}; do
         target_dir="../../../jellyfin-build/${target_platform}"
         mkdir -p ${target_dir}
         mv pkg-dist/* ${target_dir}/
-
-        echo -e ">> Processing action clean"
-        if [[ -f clean.sh && -x clean.sh ]]; then
-            ./clean.sh 
-        fi
     fi
+    cleanup
     date_end=$( date +%s )
     echo -e "> Completed platform ${target_platform} in $( expr ${date_end} - ${date_start} ) seconds."
     popd

+ 2 - 0
deployment/README.md

@@ -55,6 +55,8 @@ These builds are not necessarily run from the `build` script, but are present fo
 
 * The `clean` action should always `exit 0` even if no work is done or it fails.
 
+* The `clean` action can be passed a variable as argument 1, named `keep_artifacts`. It is indended to handle situations when the user runs `build --keep-artifacts` and should be handled intelligently. Usually, this is used to preserve Docker images while still removing temporary directories.
+
 ### Output Files
 
 * Upon completion of the defined actions, at least one output file must be created in the `<platform>/pkg-dist` directory.