Add functions to build PXE bin and upload as release artifact #13

Merged
PeterSurda merged 1 commits from maxweiss/ipxe_scripts:pxe into master 2021-05-26 21:56:40 +02:00
Showing only changes of commit 9655c066f8 - Show all commits

View File

@ -123,6 +123,42 @@ function make_ipxe_iso() {
return 0 return 0
} }
function make_ipxe_pxe() {
local ipxe_src_dir="$1"
local embed_file="$2"
local signing_cert="$3"
local ca_cert="$4"
embed_file="$(realpath "${embed_file}")"
signing_cert="$(realpath "${signing_cert}")"
ca_cert="$(realpath "${ca_cert}")"
if [ ! -d "$ipxe_src_dir" ]; then
>&2 echo "IPXE supplied directory does not exist."
return 1
fi
if [[ ! -f "$embed_file" ]]; then
>&2 echo "IPXE embedded file does not exist."
return 1
fi
if [[ ! -f "$signing_cert" ]]; then
>&2 echo "IPXE signing cert does not exist."
return 1
fi
if [[ ! -f "${ca_cert}" ]]; then
>&2 echo "IPXE CA cert does not exist."
return 1
fi
curr="$(pwd)"
cd "${ipxe_src_dir}/src/" || return 1
make bin/ipxe.pxe EMBED="${embed_file}" CERT="${signing_cert},${ca_cert}" TRUST="${ca_cert}" || return 2
cd "$curr"
return 0
}
function make_ipxe_bin_shasums() { function make_ipxe_bin_shasums() {
local ipxe_src_dir="$1" local ipxe_src_dir="$1"
@ -138,11 +174,15 @@ function make_ipxe_bin_shasums() {
>&2 echo "IPXE iso build file does not exist." >&2 echo "IPXE iso build file does not exist."
return 1 return 1
fi fi
if [[ ! -f "${ipxe_src_dir}/src/bin/ipxe.pxe" ]]; then
>&2 echo "IPXE pxe build file does not exist."
return 1
fi
curr="$(pwd)" curr="$(pwd)"
cd "${ipxe_src_dir}/src/bin/" || return 1 cd "${ipxe_src_dir}/src/bin/" || return 1
sha256sum ipxe.lkrn ipxe.iso > SHA256SUMS || return 2 sha256sum ipxe.lkrn ipxe.iso ipxe.pxe > SHA256SUMS || return 2
cd "$curr" cd "$curr"
return 0 return 0
} }
@ -297,6 +337,10 @@ function upload_release_ipxe_lkrn() {
>&2 echo "IPXE iso build file does not exist." >&2 echo "IPXE iso build file does not exist."
return 1 return 1
fi fi
if [[ ! -f "${ipxe_src_dir}/src/bin/ipxe.pxe" ]]; then
>&2 echo "IPXE pxe build file does not exist."
return 1
fi
if [[ ! -f "${ipxe_src_dir}/src/bin/SHA256SUMS" ]]; then if [[ ! -f "${ipxe_src_dir}/src/bin/SHA256SUMS" ]]; then
>&2 echo "IPXE sha256sums file does not exist." >&2 echo "IPXE sha256sums file does not exist."
return 1 return 1
@ -378,6 +422,10 @@ function upload_release_ipxe_iso() {
>&2 echo "IPXE iso build file does not exist." >&2 echo "IPXE iso build file does not exist."
return 1 return 1
fi fi
if [[ ! -f "${ipxe_src_dir}/src/bin/ipxe.pxe" ]]; then
>&2 echo "IPXE pxe build file does not exist."
return 1
fi
if [[ ! -f "${ipxe_src_dir}/src/bin/SHA256SUMS" ]]; then if [[ ! -f "${ipxe_src_dir}/src/bin/SHA256SUMS" ]]; then
>&2 echo "IPXE sha256sums file does not exist." >&2 echo "IPXE sha256sums file does not exist."
return 1 return 1
@ -419,6 +467,91 @@ function upload_release_ipxe_iso() {
return 0 return 0
} }
function upload_release_ipxe_pxe() {
local ipxe_src_dir="$1"
local git_repo_dir="$2"
local branch="$3"
local repo_user="$4"
local repo_name="$5"
local api_token_file="$6"
if [ ! -d "$git_repo_dir" ]; then
>&2 echo "Supplied directory does not exist."
return 1
fi
if [[ -z "$branch" ]]; then
>&2 echo "No branch specified."
return 1
fi
if [[ -z "$repo_user" ]]; then
>&2 echo "No repo username specified."
return 1
fi
if [[ -z "$repo_name" ]]; then
>&2 echo "No repo name specified."
return 1
fi
if [[ ! -f "$api_token_file" ]]; then
>&2 echo "API token file does not exist."
return 1
fi
if [ ! -d "$ipxe_src_dir" ]; then
>&2 echo "IPXE supplied directory does not exist."
return 1
fi
if [[ ! -f "${ipxe_src_dir}/src/bin/ipxe.lkrn" ]]; then
>&2 echo "IPXE lkrn build file does not exist."
return 1
fi
if [[ ! -f "${ipxe_src_dir}/src/bin/ipxe.iso" ]]; then
>&2 echo "IPXE iso build file does not exist."
return 1
fi
if [[ ! -f "${ipxe_src_dir}/src/bin/ipxe.pxe" ]]; then
>&2 echo "IPXE pxe build file does not exist."
return 1
fi
if [[ ! -f "${ipxe_src_dir}/src/bin/SHA256SUMS" ]]; then
>&2 echo "IPXE sha256sums file does not exist."
return 1
fi
curr="$(pwd)"
cd "$git_repo_dir"
cat release_results.txt | grep ^HTTP/ | grep 201 >/dev/null
if [ $? -ne 0 ]; then
>&2 echo "The release info from the curl step cannot be found."
return 2
fi
tail -n 1 release_results.txt | jq .id | grep -P '^(\d)+$' >/dev/null
if [ $? -ne 0 ]; then
>&2 echo "The release info from the curl step cannot be found."
return 2
fi
releaseid="$(tail -n 1 release_results.txt | jq .id)"
curl -X POST "https://git.bitmessage.org/api/v1/repos/${repo_user}/${repo_name}/releases/${releaseid}/assets?name=ipxe.pxe" \
-H "accept: application/json" \
-H "Authorization: token $(cat $api_token_file)" \
-i \
-F "attachment=@${ipxe_src_dir}/src/bin/ipxe.pxe" > release_pxe.txt
cat release_pxe.txt | grep ^HTTP/ | grep 201 >/dev/null
if [ $? -ne 0 ]; then
>&2 echo "The upload of ipxe.pxe as a release attachment failed."
return 2
fi
tail -n 1 release_pxe.txt | jq .id | grep -P '^(\d)+$' >/dev/null
if [ $? -ne 0 ]; then
>&2 echo "The upload of ipxe.pxe as a release attachment failed."
return 2
fi
cd "$curr"
return 0
}
function upload_release_ipxe_shasums() { function upload_release_ipxe_shasums() {
local ipxe_src_dir="$1" local ipxe_src_dir="$1"
local git_repo_dir="$2" local git_repo_dir="$2"
@ -459,6 +592,10 @@ function upload_release_ipxe_shasums() {
>&2 echo "IPXE iso build file does not exist." >&2 echo "IPXE iso build file does not exist."
return 1 return 1
fi fi
if [[ ! -f "${ipxe_src_dir}/src/bin/ipxe.pxe" ]]; then
>&2 echo "IPXE pxe build file does not exist."
return 1
fi
if [[ ! -f "${ipxe_src_dir}/src/bin/SHA256SUMS" ]]; then if [[ ! -f "${ipxe_src_dir}/src/bin/SHA256SUMS" ]]; then
>&2 echo "IPXE sha256sums file does not exist." >&2 echo "IPXE sha256sums file does not exist."
return 1 return 1