Last active
November 11, 2017 18:42
-
-
Save vrutkovs/6090117f614eb48426ff80669f46d0ae to your computer and use it in GitHub Desktop.
A script to test Fedora specs PRs in docker: builds RPM in a container
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| set -e | |
| PKG=${PWD##*/} | |
| #Detect which version should be used based on upstream branch | |
| TRACKING=$(git rev-parse --abbrev-ref --symbolic-full-name @{u}) | |
| BRANCH=$(basename $TRACKING) | |
| if [[ "$BRANCH" == "master" ]]; then | |
| DEST=rawhide | |
| else | |
| DEST=${BRANCH:1:3} | |
| fi | |
| echo "Converted tracking branch $BRANCH to $DEST" | |
| CONTAINER="${PKG}-${DEST}" | |
| run() { | |
| echo -e "\nRunning $1" | |
| sudo docker exec -ti ${CONTAINER} sh -c "$1" | |
| } | |
| # Optionally cleanup the container | |
| if [ "$1" == "--cleanup" ]; then | |
| sudo docker rm -v -f ${CONTAINER} > /dev/null || true | |
| fi | |
| # Check if a new container needs to be created | |
| found=$(sudo docker container ls -q -f "name=${DEST}" | wc -l) | |
| if [ $found == 0 ]; then | |
| echo "Pulling latest fedora:${DEST} image" | |
| sudo docker pull registry.fedoraproject.org/fedora:${DEST} | |
| echo "\nStarting ${CONTAINER}" | |
| sudo docker run -d --name $CONTAINER -v ${PWD}:/code -ti registry.fedoraproject.org/fedora:${DEST} sleep infinity | |
| else | |
| echo "Reusing existing container for ${DEST} build" | |
| fi | |
| run "dnf install -y rpmdevtools dnf-plugins-core gcc" | |
| run "rm -rf /root/rpmbuild && mkdir -p /root/rpmbuild/SOURCES" | |
| echo "Updating /code in container" | |
| git ls-files | xargs -n1 -i sudo docker cp {} $CONTAINER:/code | |
| echo "----" | |
| echo "Building RPM" | |
| run "spectool -g -R /code/*.spec -D" | |
| run "cp -rf /code/*.patch /root/rpmbuild/SOURCES" | |
| run "dnf builddep -y /code/*.spec" | |
| run "rpmbuild -ba /code/*.spec" | |
| echo "----" | |
| # Copy RPMS and SRPMs back | |
| LOCAL_RPMS="/tmp/rpm_build" | |
| echo "Copying rpms back to $LOCAL_RPMS" | |
| sudo rm -rf $LOCAL_RPMS && mkdir -p $LOCAL_RPMS | |
| sudo docker cp $CONTAINER:/root/rpmbuild/RPMS $LOCAL_RPMS | |
| sudo docker cp $CONTAINER:/root/rpmbuild/SRPMS $LOCAL_RPMS | |
| tree $LOCAL_RPMS |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment