Implement working on a array of spec files
All checks were successful
Build docker image / build-and-publish (push) Successful in 3m46s
All checks were successful
Build docker image / build-and-publish (push) Successful in 3m46s
Forgejo Runner doesn't support dynamic matrix jobs (where the input comes from output of another job). To work around this, accept a list of spec files to process and run the same thing over and over. Might still have to fix the output.
This commit is contained in:
parent
058cfccd52
commit
8841a1df54
2 changed files with 44 additions and 36 deletions
|
@ -2,8 +2,8 @@ name: "RPM Build"
|
||||||
description: "Builds RPMs for a target system from a spec file"
|
description: "Builds RPMs for a target system from a spec file"
|
||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
spec:
|
specs:
|
||||||
description: "Path to the spec file"
|
description: "Paths to the spec files"
|
||||||
required: true
|
required: true
|
||||||
system:
|
system:
|
||||||
description: "System target to build the package"
|
description: "System target to build the package"
|
||||||
|
|
|
@ -1,48 +1,56 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
SPEC=${INPUT_SPEC}
|
# SPECS should be a JSON array of all the to-process spec files
|
||||||
|
# Forgejo runner doesn't support dynamic matrix jobs so, this has to be made this way
|
||||||
|
# Convert the JSON array to a bash array and iterate over it
|
||||||
|
readarray -t SPECS < <(echo ${INPUT_SPECS} | jq -c .[] | tr -d '"')
|
||||||
|
echo "::debug::specs: ${SPECS}"
|
||||||
SYSTEM=${INPUT_SYSTEM}
|
SYSTEM=${INPUT_SYSTEM}
|
||||||
ARCH=${INPUT_ARCH}
|
ARCH=${INPUT_ARCH}
|
||||||
NOCHECK=${INPUT_NOCHECK}
|
NOCHECK=${INPUT_NOCHECK}
|
||||||
|
|
||||||
SPEC_NAME=$(basename ${SPEC})
|
|
||||||
CONFIGURATION="${SYSTEM}-${ARCH}"
|
|
||||||
|
|
||||||
echo "::debug::spec file: ${INPUT_SPEC}"
|
for SPEC in ${SPECS[@]}; do
|
||||||
echo "::debug::target: ${INPUT_SYSTEM}-${INPUT_ARCH}"
|
SPEC_NAME=$(basename ${SPEC})
|
||||||
echo "::debug::nocheck: ${INPUT_NOCHECK}"
|
CONFIGURATION="${SYSTEM}-${ARCH}"
|
||||||
|
|
||||||
echo "Building ${SPEC_NAME} for ${CONFIGURATION}"
|
echo "::debug::spec file: ${INPUT_SPEC}"
|
||||||
|
echo "::debug::target: ${INPUT_SYSTEM}-${INPUT_ARCH}"
|
||||||
|
echo "::debug::nocheck: ${INPUT_NOCHECK}"
|
||||||
|
|
||||||
echo "::group::Building SRPM"
|
echo "Building ${SPEC_NAME} for ${CONFIGURATION}"
|
||||||
cd $(dirname ${SPEC})
|
|
||||||
|
|
||||||
spectool -g ${SPEC}
|
echo "::group::Building SRPM"
|
||||||
if [ $? -ne 0 ]; then
|
cd $(dirname ${SPEC})
|
||||||
echo "::error::Failed to download sources"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
mock -r "${SYSTEM}-${ARCH}" --buildsrpm --spec ${SPEC_NAME} --sources . --resultdir result
|
spectool -g ${SPEC}
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "::error::Failed to build SRPM"
|
echo "::error::Failed to download sources"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
SRPM=$(grep Wrote result/build.log | cut -d" " -f 2)
|
mock -r "${SYSTEM}-${ARCH}" --buildsrpm --spec ${SPEC_NAME} --sources . --resultdir result
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "::error::Failed to build SRPM"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "::endgroup::"
|
||||||
|
|
||||||
echo "::group::Building RPM"
|
SRPM=$(grep Wrote result/build.log | cut -d" " -f 2)
|
||||||
OPTS=""
|
|
||||||
if [ ${NOCHECK,,} == "true"]; then
|
|
||||||
OPTS="${OPTS} --nocheck"
|
|
||||||
fi
|
|
||||||
mock -r "${SYSTEM}-${ARCH}" --resultdir result ${OPTS} ${SRPM}
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "::error::Failed to build RPM"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
RPM=i$(grep Wrote result/build.log | grep "/RPMS/" | cut -d" " -f 2)
|
echo "::group::Building RPM"
|
||||||
echo "rpm=${RPM}" >> ${GITHUB_OUTPUT}
|
OPTS=""
|
||||||
|
if [ ${NOCHECK,,} == "true"]; then
|
||||||
|
OPTS="${OPTS} --nocheck"
|
||||||
|
fi
|
||||||
|
mock -r "${SYSTEM}-${ARCH}" --resultdir result ${OPTS} ${SRPM}
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "::error::Failed to build RPM"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "::endgroup::"
|
||||||
|
|
||||||
|
RPMS=i$(grep Wrote result/build.log | grep "/RPMS/" | cut -d" " -f 2)
|
||||||
|
echo "::debug::rpms: ${RPMS}"
|
||||||
|
echo "rpms=${RPMS}" >> ${GITHUB_OUTPUT}
|
||||||
|
done
|
||||||
|
|
Loading…
Reference in a new issue