From 0fdee7a7686026dc904ef57e3d00daa835b1899b Mon Sep 17 00:00:00 2001 From: Murilo Belluzzo Date: Tue, 2 Oct 2018 14:34:22 -0700 Subject: [PATCH] [content] Add step to create downstream content repo Also, generalize its creation so it can use more content providers besides Koji. Signed-off-by: Alex Jaramillo --- Makefile | 2 +- globals.sh | 4 +++- release/ReleasePipeline | 1 + release/content.sh | 29 +++++++++++++++++++++++++++++ release/koji.sh | 4 ++-- release/mixer.sh | 11 +++++++---- release/prologue.sh | 7 ++++++- release/stage.sh | 4 ++-- 8 files changed, 51 insertions(+), 11 deletions(-) create mode 100755 release/content.sh diff --git a/Makefile b/Makefile index 5a183f3..1b3e057 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,7 @@ $(STEPS): ${BUILD_DIR} ${STAGING_DIR} release/$@.sh .NOTPARALLEL: release -release: prologue koji mixer images stage +release: prologue koji content mixer images stage .PHONY: serve serve: ${STAGING_DIR} diff --git a/globals.sh b/globals.sh index a273ff1..1d25ac0 100755 --- a/globals.sh +++ b/globals.sh @@ -5,8 +5,10 @@ # Servers CLR_PUBLIC_DL_URL=${CLR_PUBLIC_DL_URL:-"https://download.clearlinux.org"} -# Variables Cache +# Workspace VARS_DIR="${WORK_DIR:-$PWD}/.vars" +REPO_DIR="${WORK_DIR:-$PWD}/repo" +PKGS_DIR="${REPO_DIR}/x86_64/os/packages" MIX_INCREMENT=${MIX_INCREMENT:-10} diff --git a/release/ReleasePipeline b/release/ReleasePipeline index eb7f959..2c5123a 100644 --- a/release/ReleasePipeline +++ b/release/ReleasePipeline @@ -15,6 +15,7 @@ pipeline { stage('Setup Content') { steps { sh 'release/koji.sh' + sh 'release/content.sh' } } stage('Create Update Stream') { diff --git a/release/content.sh b/release/content.sh new file mode 100755 index 0000000..ab0b5f6 --- /dev/null +++ b/release/content.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +# Copyright (C) 2018 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +set -e + +SCRIPT_DIR=$(dirname $(realpath ${BASH_SOURCE[0]})) + +. ${SCRIPT_DIR}/../globals.sh +. ${SCRIPT_DIR}/../common.sh + +. ./config/config.sh + +# ============================================================================== +# MAIN +# ============================================================================== +stage "Finalizing Content" + +if [[ -z "$(ls -A ${PKGS_DIR})" ]]; then + info "Custom Content Not Found" " '${PKGS_DIR}' is empty." + exit 0 +fi + +section "Creating Content Repository" +pushd ${PKGS_DIR} > /dev/null +log_line +createrepo_c ${PKGS_DIR} # Output too verbose +log_line +popd > /dev/null diff --git a/release/koji.sh b/release/koji.sh index 13967c4..665cb42 100755 --- a/release/koji.sh +++ b/release/koji.sh @@ -14,7 +14,7 @@ SCRIPT_DIR=$(dirname $(realpath ${BASH_SOURCE[0]})) # ============================================================================== # MAIN # ============================================================================== -stage "Koji" +stage "Content Provider - Koji" log_line "Fetching Package List:" if result=$(koji_cmd list-tagged --latest --quiet ${KOJI_TAG}); then @@ -26,7 +26,7 @@ fi log_line "OK!" 1 section "Downloading RPMs" -pushd ${BUILD_DIR}/local-rpms > /dev/null +pushd ${PKGS_DIR} > /dev/null for rpm in $(cat ${WORK_DIR}/${PKG_LIST_FILE}); do log_line "${rpm}:" koji_cmd download-build -a x86_64 --quiet ${rpm} diff --git a/release/mixer.sh b/release/mixer.sh index 837bbb1..c4aab96 100755 --- a/release/mixer.sh +++ b/release/mixer.sh @@ -123,11 +123,10 @@ echo echo "MIX_INCREMENT=${MIX_INCREMENT}" echo "CLR_BUNDLES=${CLR_BUNDLES:-"all from upstream"}" -assert_dir ${BUILD_DIR} pushd ${BUILD_DIR} > /dev/null section "Bootstrapping Mix Workspace" -mixer init --local-rpms --upstream-url ${CLR_PUBLIC_DL_URL} +mixer init --upstream-url ${CLR_PUBLIC_DL_URL} mixer config set Swupd.CONTENTURL "${DSTREAM_DL_URL}/update" mixer config set Swupd.VERSIONURL "${DSTREAM_DL_URL}/update" @@ -141,8 +140,12 @@ fi section "Preparing Downstream Content" fetch_bundles # Download the Downstream Bundles Repository -if [[ -n "$(ls -A local-rpms)" ]];then - mixer add-rpms +log_line "Checking Downstream Repo:" +if [[ -n "$(ls -A ${PKGS_DIR})" ]];then + mixer repo set-url content file://${PKGS_DIR} > /dev/null + log_line "Content found. Adding it to the mix!" 1 +else + log_line "Content not found. Skipping it." 1 fi section "Building" diff --git a/release/prologue.sh b/release/prologue.sh index 70dc398..7f3dfff 100755 --- a/release/prologue.sh +++ b/release/prologue.sh @@ -16,7 +16,8 @@ LOG_INDENT=1 fetch_config_repo . ./config/config.sh rm -rf ${WORK_DIR} -mkdir -p ${WORK_DIR}/release/{config,images,rpms} +mkdir -p ${WORK_DIR}/release/{config,images} +mkdir -p ${PKGS_DIR} mkdir -p ${BUILD_DIR} rm -rf ${BUILD_DIR}/local-rpms ${BUILD_DIR}/local-yum @@ -60,6 +61,10 @@ Work dir: ${WORK_DIR} Variables dir: ${VARS_DIR} +Repository dir: + ${REPO_DIR} +Packages dir: + ${PKGS_DIR} Build dir: ${BUILD_DIR} Stage dir: diff --git a/release/stage.sh b/release/stage.sh index e69ad66..b91fa4c 100755 --- a/release/stage.sh +++ b/release/stage.sh @@ -18,7 +18,7 @@ RELEASE_DIR="${WORK_DIR}/release" stage "Staging Release" assert_dir ${BUILD_DIR}/local-bundles -assert_dir ${BUILD_DIR}/local-rpms +assert_dir ${REPO_DIR} assert_dir ${RELEASE_DIR} assert_dir ${STAGING_DIR} @@ -26,8 +26,8 @@ log_line "Finishing 'release' folder" mv ${WORK_DIR}/${BUILD_FILE} ${RELEASE_DIR}/${BUILD_FILE}-${MIX_VERSION}.txt mv ${WORK_DIR}/${PKG_LIST_FILE} ${RELEASE_DIR}/${PKG_LIST_FILE}-${MIX_VERSION}.txt mv ${WORK_DIR}/${RELEASE_NOTES} ${RELEASE_DIR}/${RELEASE_NOTES}-${MIX_VERSION}.txt +mv ${REPO_DIR}/ ${RELEASE_DIR}/repo/ cp -a ${BUILD_DIR}/Swupd_Root.pem ${RELEASE_DIR}/config/ -rsync -ah ${BUILD_DIR}/local-rpms/ ${RELEASE_DIR}/rpms/ log_line "OK!" 1 log_line "Staging 'update'"