Merge ~alextu/pc-enablement/+git/oem-scripts:refine_recovery-from-iso into ~oem-solutions-engineers/pc-enablement/+git/oem-scripts:master

Proposed by Alex Tu
Status: Work in progress
Proposed branch: ~alextu/pc-enablement/+git/oem-scripts:refine_recovery-from-iso
Merge into: ~oem-solutions-engineers/pc-enablement/+git/oem-scripts:master
Diff against target: 192 lines (+86/-20)
1 file modified
recovery-from-iso.sh (+86/-20)
Reviewer Review Type Date Requested Status
OEM Solutions Group: Engineers Pending
Review via email: mp+404647@code.launchpad.net
To post a comment you must log in.
Revision history for this message
OEM Taipei Bot (oem-taipei-bot) wrote :

[autopkgtest]
autopkgtest-collect-credentials PASS
autopkgtest-oem-scripts-auto PASS
pkg-somerville-meta PASS
pkg-stella-meta PASS
pkg-sutton-meta PASS
bug-bind PASS
get-private-ppa PASS
jq-lp PASS
launchpad-api PASS
lp-bug PASS
oem-meta-packages PASS
pkg-list PASS
review-merge-proposal PASS
run-autopkgtest PASS
setup-apt-dir PASS
mir-bug FAIL non-zero exit status 1
git-url-insteadof-setting FAIL non-zero exit status 128
recovery-from-iso.sh PASS
mir-bug-verification FAIL stderr: E: Unable to locate package oem-somerville-maester-meta

https://oem-share.canonical.com/partners/lyoncore/share/artifacts/oem-scripts-0.97-01868b2-in-linux-container-focal

Revision history for this message
OEM Taipei Bot (oem-taipei-bot) wrote :

[autopkgtest]
autopkgtest-collect-credentials PASS
autopkgtest-oem-scripts-auto PASS
pkg-somerville-meta PASS
pkg-stella-meta PASS
pkg-sutton-meta PASS
bug-bind PASS
get-private-ppa PASS
jq-lp PASS
launchpad-api PASS
lp-bug PASS
oem-meta-packages PASS
pkg-list PASS
review-merge-proposal PASS
run-autopkgtest PASS
setup-apt-dir PASS
mir-bug FAIL non-zero exit status 1
git-url-insteadof-setting FAIL non-zero exit status 128
recovery-from-iso.sh PASS
mir-bug-verification PASS

https://oem-share.canonical.com/partners/lyoncore/share/artifacts/oem-scripts/oem-scripts-0.97-01868b2-in-linux-container-focal

Unmerged commits

01868b2... by Alex Tu

paramter to keep iso, parameter to reuse local folder and refactor

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/recovery-from-iso.sh b/recovery-from-iso.sh
2index c8a5b1c..6afe6a5 100755
3--- a/recovery-from-iso.sh
4+++ b/recovery-from-iso.sh
5@@ -1,6 +1,8 @@
6 #!/bin/bash
7 set -ex
8
9+keep="false"
10+local_folder=""
11 jenkins_job_for_iso=""
12 jenkins_job_build_no="lastSuccessfulBuild"
13 script_on_target_machine="inject_recovery_from_iso.sh"
14@@ -12,17 +14,22 @@ temp_folder="$(mktemp -d -p "$PWD")"
15 GIT="git -C $temp_folder"
16
17 clear_all() {
18+ if [ "$keep" = "true" ]; then
19+ echo "[INFO] All downloaded files in $temp_folder"
20+ return 0
21+ fi
22 rm -rf "$temp_folder"
23 }
24 trap clear_all EXIT
25 # shellcheck disable=SC2046
26-eval set -- $(getopt -o "hj:t:b:u:" -l "help,target-ip:,jenkins-job:,local-iso:,url:" -- "$@")
27+eval set -- $(getopt -o "hj:t:b:u:" -l "help,target-ip:,jenkins-job:,local-folder:,local-iso:,url:,keep:" -- "$@")
28
29 usage() {
30 cat << EOF
31 usage:
32-$(basename "$0") -u <jenkins url> -j <jenkins-job-name> -b <jenkins-job-build-no> -t <target-ip> [-h|--help] [--dry-run]
33-$(basename "$0") --local-iso <path to local iso file> -t <target-ip> [-h|--help] [--dry-run]
34+$(basename "$0") -u <jenkins url> -j <jenkins-job-name> -b <jenkins-job-build-no> -t <target-ip> [-h|--help] [--keep <folder>]
35+$(basename "$0") --local-iso <path to local iso file> -t <target-ip> [-h|--help]
36+$(basename "$0") --local-folder <path to folder which have downloaded files> -t <target-ip> [-h|--help]
37
38 Limition:
39 It will failed when target recovery partition size smaller than target iso file.
40@@ -38,6 +45,7 @@ OPTIONS:
41 -b|--jenkins-job-build-no The build number of the Jenkins job assigned by -j|--jenkins-job.
42 -t|--target-ip The IP address of target machine. It will be used for ssh accessing.
43 Please put your ssh key on target machine. This tool no yet support keyphase for ssh.
44+ --keep Keep everything downloaded in specific folder.
45 -h|--help Print this message
46
47 Usage:
48@@ -46,34 +54,69 @@ Usage:
49
50 $(basename "$0") --local-iso ./dell-bto-focal-fossa-edge-alloem-X73-20210302-3.iso -t 192.168.101.68
51
52+ $(basename "$0") --local-iso a-folder-included-iso-and-preseed -t 192.168.101.68
53+
54 EOF
55 exit 1
56 }
57
58+# $1: target folder
59+# $2: url of git repository
60+# $3: branch, the default is master
61+git_clone() {
62+ local target_folder
63+ local target_branch
64+ local target_repo
65+ target_branch="master"
66+ target_folder="$1"
67+ target_repo="$2"
68+ if [ -n "$3" ]; then
69+ target_branch="$3"
70+ fi
71+ for i in $(seq 5); do
72+ if git -C $target_folder clone "$target_repo" --depth 1 -b $target_branch; then
73+ return 0
74+ else
75+ echo "warnning: cloning $target_repo failed, retry no. $i"
76+ sleep 3
77+ fi
78+ done
79+ echo "ERROR: failed cloning $target_repo. Exit."
80+ exit 1
81+}
82+
83 download_preseed() {
84 echo " == download_preseed == "
85- # get checkbox pkgs and prepare-checkbox
86- # get pkgs to skip OOBE
87- $GIT clone https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-fix-misc-cnl-no-secureboot --depth 1
88- $GIT clone https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-fix-misc-cnl-skip-oobe --depth 1
89- $GIT clone https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-fix-misc-cnl-skip-storage-selecting --depth 1
90- $GIT clone https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/pack-fish.openssh-fossa --depth 1
91+ # get preseeds to skip enabling secureboot for somerville
92+ git_clone "$temp_folder" https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-fix-misc-cnl-no-secureboot
93+ # get preseeds to skip oobe
94+ git_clone "$temp_folder" https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-fix-misc-cnl-skip-oobe
95+ # get preseeds to skip storage selecting for somerville
96+ git_clone "$temp_folder" https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-fix-misc-cnl-skip-storage-selecting
97+ # get packages for openssh-server and openssh-client so that we can avoid dependency issue.
98+ git_clone "$temp_folder" https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/pack-fish.openssh-fossa
99
100 # get pkgs for ssh key and skip disk checking.
101- $GIT clone https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-fix-misc-cnl-misc-for-automation --depth 1 misc_for_automation
102+ git_clone "$temp_folder" https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-fix-misc-cnl-misc-for-automation
103
104 return 0
105 }
106 push_preseed() {
107 echo " == download_preseed == "
108+ local target_folder
109+ if [ -n "$local_folder" ]; then
110+ target_folder="$local_folder"
111+ else
112+ target_folder="$temp_folder"
113+ fi
114 $SSH "$user_on_target"@"$target_ip" rm -rf push_preseed
115 $SSH "$user_on_target"@"$target_ip" mkdir -p push_preseed
116 $SSH "$user_on_target"@"$target_ip" touch push_preseed/SUCCSS_push_preseed
117 $SSH "$user_on_target"@"$target_ip" sudo rm -f /cdrom/SUCCSS_push_preseed
118
119- for folder in pack-fish.openssh-fossa misc_for_automation oem-fix-misc-cnl-no-secureboot oem-fix-misc-cnl-skip-oobe oem-fix-misc-cnl-skip-storage-selecting; do
120- tar -C "$temp_folder"/$folder -zcvf "$temp_folder"/$folder.tar.gz .
121- $SCP "$temp_folder/$folder".tar.gz "$user_on_target"@"$target_ip":~
122+ for folder in pack-fish.openssh-fossa oem-fix-misc-cnl-misc-for-automation oem-fix-misc-cnl-no-secureboot oem-fix-misc-cnl-skip-oobe oem-fix-misc-cnl-skip-storage-selecting; do
123+ tar -C "$target_folder"/$folder -zcvf "$target_folder"/$folder.tar.gz .
124+ $SCP "$target_folder/$folder".tar.gz "$user_on_target"@"$target_ip":~
125 $SSH "$user_on_target"@"$target_ip" tar -C push_preseed -zxvf $folder.tar.gz || $SSH "$user_on_target"@"$target_ip" sudo rm -f push_preseed/SUCCSS_push_preseed
126 done
127
128@@ -83,12 +126,26 @@ push_preseed() {
129 inject_preseed() {
130 echo " == inject_preseed == "
131 $SSH "$user_on_target"@"$target_ip" rm -rf /tmp/SUCCSS_inject_preseed
132- download_preseed && \
133+ if [ -z "$local_folder" ]; then
134+ download_preseed
135+ fi
136 push_preseed
137 scp -o StrictHostKeyChecking=no "$user_on_target"@"$target_ip":/cdrom/SUCCSS_push_preseed "$temp_folder" || usage
138 $SSH "$user_on_target"@"$target_ip" touch /tmp/SUCCSS_inject_preseed
139 }
140
141+get_iso() {
142+ jenkins_url="$1"
143+ jenkins_job_for_iso="$2"
144+ jenkins_job_build_no="$3"
145+ img_jenkins_out_url="ftp://$jenkins_url/jenkins_host/jobs/$jenkins_job_for_iso/builds/$jenkins_job_build_no/archive/out"
146+ img_name="$(wget -q "$img_jenkins_out_url/" -O - | grep -o 'href=.*iso"' | awk -F/ '{print $NF}' | tr -d \")"
147+ wget "$img_jenkins_out_url/$img_name".md5sum
148+ md5sum -c "$img_name".md5sum || wget "$img_jenkins_out_url"/"$img_name"
149+ md5sum -c "$img_name".md5sum || usage
150+ local_iso="$PWD/$img_name"
151+}
152+
153 inject_recovery_iso() {
154 if [ -n "$local_iso" ]; then
155 img_name="$(basename "$local_iso")"
156@@ -109,14 +166,12 @@ EOF
157 ssh -o StrictHostKeyChecking=no "$user_on_target"@"$target_ip" chmod +x "\$HOME/$script_on_target_machine"
158 ssh -o StrictHostKeyChecking=no "$user_on_target"@"$target_ip" "\$HOME/$script_on_target_machine"
159 scp -o StrictHostKeyChecking=no "$user_on_target"@"$target_ip":/tmp/SUCCSS_inject_recovery_iso "$temp_folder" || usage
160+ elif [ -n "$local_folder" ]; then
161+ local_iso="$(find $local_folder | grep "\.iso$")"
162+ inject_recovery_iso
163 else
164- img_jenkins_out_url="ftp://$jenkins_url/jenkins_host/jobs/$jenkins_job_for_iso/builds/$jenkins_job_build_no/archive/out"
165- img_name="$(wget -q "$img_jenkins_out_url/" -O - | grep -o 'href=.*iso"' | awk -F/ '{print $NF}' | tr -d \")"
166 pushd "$temp_folder" || usage
167- wget "$img_jenkins_out_url/$img_name".md5sum
168- md5sum -c "$img_name".md5sum || wget "$img_jenkins_out_url"/"$img_name"
169- md5sum -c "$img_name".md5sum || usage
170- local_iso="$PWD/$img_name"
171+ get_iso "$jenkins_url" "$jenkins_job_for_iso" "$jenkins_job_build_no"
172 popd
173 inject_recovery_iso
174 fi
175@@ -150,6 +205,17 @@ main() {
176 shift
177 local_iso="$1"
178 ;;
179+ --local-folder)
180+ shift
181+ local_folder="$1"
182+ ;;
183+ --keep)
184+ shift
185+ keep="true"
186+ rm -rf "$temp_folder"
187+ temp_folder="$1"
188+ mkdir -p "$temp_folder"
189+ ;;
190 -u | --url)
191 shift
192 jenkins_url="$1"

Subscribers

People subscribed via source and target branches