Import a job to release projects
This commit is contained in:
parent
aab4bba52e
commit
c5d80f4db6
|
@ -41,6 +41,7 @@ IRC_SERVER=
|
||||||
JOBS_BRANCH_MASTER="$PREFIX/libexec/deforaos-jobs/deforaos-job-git-mirror
|
JOBS_BRANCH_MASTER="$PREFIX/libexec/deforaos-jobs/deforaos-job-git-mirror
|
||||||
$PREFIX/libexec/deforaos-jobs/deforaos-job-git-doc
|
$PREFIX/libexec/deforaos-jobs/deforaos-job-git-doc
|
||||||
$PREFIX/libexec/deforaos-jobs/deforaos-job-git-tests"
|
$PREFIX/libexec/deforaos-jobs/deforaos-job-git-tests"
|
||||||
|
JOBS_TAG_RELEASE="$PREFIX/libexec/deforaos-jobs/deforaos-job-git-tag-release"
|
||||||
PROGNAME="deforaos-git-hook"
|
PROGNAME="deforaos-git-hook"
|
||||||
SYSCONFDIR="$PREFIX/etc"
|
SYSCONFDIR="$PREFIX/etc"
|
||||||
#load local settings
|
#load local settings
|
||||||
|
@ -62,6 +63,10 @@ _hook_jobs()
|
||||||
_jobs_branch "${refname#refs/heads/}" \
|
_jobs_branch "${refname#refs/heads/}" \
|
||||||
"$GL_REPO" || res=2
|
"$GL_REPO" || res=2
|
||||||
;;
|
;;
|
||||||
|
refs/tags/*)
|
||||||
|
_jobs_tag "${refname#refs/tags/}" \
|
||||||
|
"$GL_REPO" || res=2
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
return $res
|
return $res
|
||||||
|
@ -86,6 +91,29 @@ _jobs_branch()
|
||||||
return $res
|
return $res
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
_jobs_tag()
|
||||||
|
{(
|
||||||
|
tag="$1"
|
||||||
|
repository="$2"
|
||||||
|
res=0
|
||||||
|
|
||||||
|
[ -z "$JOBS_TAG_RELEASE" ] && return 0
|
||||||
|
case "$tag" in
|
||||||
|
${repository}_*-*-*)
|
||||||
|
for job in $JOBS_TAG_RELEASE; do
|
||||||
|
#warn if the job is not available
|
||||||
|
if [ ! -x "$job" ]; then
|
||||||
|
_error "$job: Job not available"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
$DEFORAOS_JOBS add "$job $repository $tag" \
|
||||||
|
|| res=2
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
return $res
|
||||||
|
)}
|
||||||
|
|
||||||
|
|
||||||
#hook_irc
|
#hook_irc
|
||||||
_hook_irc()
|
_hook_irc()
|
||||||
|
|
159
src/deforaos-job-git-tag-release
Normal file
159
src/deforaos-job-git-tag-release
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#$Id$
|
||||||
|
#Copyright (c) 2022 Pierre Pronchery <khorben@defora.org>
|
||||||
|
#This file is part of DeforaOS Devel scripts
|
||||||
|
#
|
||||||
|
#Redistribution and use in source and binary forms, with or without
|
||||||
|
#modification, are permitted provided that the following conditions
|
||||||
|
#are met:
|
||||||
|
#1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
#2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
#THIS SOFTWARE IS PROVIDED BY THE EDGEBSD PROJECT AND CONTRIBUTORS
|
||||||
|
#``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
#TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
#PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
#BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
#INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
#CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
#ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
#POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#variables
|
||||||
|
PREFIX="/usr/local"
|
||||||
|
#executables
|
||||||
|
CONFIGURE="configure -O NetBSD"
|
||||||
|
GIT="git"
|
||||||
|
GIT_CLONE="$GIT clone -q"
|
||||||
|
GIT_SUBMODULE="$GIT submodule -q"
|
||||||
|
MAKE="make"
|
||||||
|
MKTEMP="mktemp"
|
||||||
|
RM="/bin/rm -f"
|
||||||
|
RSYNC="rsync -a"
|
||||||
|
TR="tr"
|
||||||
|
#settings
|
||||||
|
GIT_TAG=
|
||||||
|
GIT_REMOTE=
|
||||||
|
MAKE_TARGET="dist"
|
||||||
|
MIRROR="ftp:pub"
|
||||||
|
PROGNAME="deforaos-job-git-tag-release"
|
||||||
|
SYSCONFDIR="$PREFIX/etc"
|
||||||
|
#load local settings
|
||||||
|
[ -f "$SYSCONFDIR/DeforaOS/$PROGNAME.conf" ] &&
|
||||||
|
. "$SYSCONFDIR/DeforaOS/$PROGNAME.conf"
|
||||||
|
[ -f "$HOME/.config/DeforaOS/$PROGNAME.conf" ] &&
|
||||||
|
. "$HOME/.config/DeforaOS/$PROGNAME.conf"
|
||||||
|
|
||||||
|
|
||||||
|
#functions
|
||||||
|
#git_tag_release
|
||||||
|
_git_tag_release()
|
||||||
|
{
|
||||||
|
ret=0
|
||||||
|
repository="$1"
|
||||||
|
tag="$2"
|
||||||
|
|
||||||
|
#create a temporary directory
|
||||||
|
tmpdir=$($MKTEMP -d)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
#clone the repository
|
||||||
|
$GIT_CLONE --single-branch -b "$tag" \
|
||||||
|
"$GIT_REMOTE${repository}.git" "$tmpdir/repository"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "$repository: Could not clone" 1>&2
|
||||||
|
else
|
||||||
|
_tag_release_do "$repository" "$tag"
|
||||||
|
fi
|
||||||
|
#cleanup
|
||||||
|
$RM -r "$tmpdir"
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|
||||||
|
_tag_release_do()
|
||||||
|
{
|
||||||
|
repository="$1"
|
||||||
|
tag="$2"
|
||||||
|
version="$(echo "$tag" | $TR "_-" "-.")"
|
||||||
|
|
||||||
|
#update submodules if any
|
||||||
|
if [ -f "$tmpdir/repository/.gitmodules" ]; then
|
||||||
|
(cd "$tmpdir/repository" &&
|
||||||
|
$GIT_SUBMODULE init &&
|
||||||
|
$GIT_SUBMODULE update)
|
||||||
|
[ $? -eq 0 ] || return 2
|
||||||
|
fi
|
||||||
|
#generate Makefiles if relevant
|
||||||
|
if [ -f "$tmpdir/repository/project.conf" ]; then
|
||||||
|
(cd "$tmpdir/repository" && $CONFIGURE)
|
||||||
|
elif [ -x "$tmpdir/repository/autogen.sh" ]; then
|
||||||
|
(cd "$tmpdir/repository" && ./autogen.sh)
|
||||||
|
elif [ -x "$tmpdir/repository/configure" ]; then
|
||||||
|
(cd "$tmpdir/repository" && ./configure)
|
||||||
|
fi
|
||||||
|
#generate the archive
|
||||||
|
if [ $? -ne 0 -o ! -f "$tmpdir/repository/Makefile" ]; then
|
||||||
|
_error "Unable to generate the archive"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
(cd "$tmpdir/repository" && $MAKE "$MAKE_TARGET")
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
_error "Could not generate the archive"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
#locate the archive
|
||||||
|
if [ ! -f "$tmpdir/repository/$repository-$version.tar.gz" ]; then
|
||||||
|
_error "Could not locate the archive"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
#upload the archive
|
||||||
|
$RSYNC "$tmpdir/destdir$DATADIR/gtk-doc" "$MIRROR"
|
||||||
|
if [ ! -f "$tmpdir/repository/$repository-$version.tar.gz" ]; then
|
||||||
|
_error "Could not upload the archive"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#error
|
||||||
|
_error()
|
||||||
|
{
|
||||||
|
echo "$PROGNAME: $@" 1>&2
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#usage
|
||||||
|
_usage()
|
||||||
|
{
|
||||||
|
echo "Usage: $PROGNAME repository tag" 1>&2
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#main
|
||||||
|
while getopts "O:" name; do
|
||||||
|
case "$name" in
|
||||||
|
O)
|
||||||
|
export "${OPTARG%%=*}"="${OPTARG#*=}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
_usage
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND - 1))
|
||||||
|
if [ $# -ne 2 ]; then
|
||||||
|
_usage
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
_git_tag_release "$1" "$2"
|
|
@ -1,4 +1,4 @@
|
||||||
dist=Makefile,deforaos-build,deforaos-document,deforaos-git-hook,deforaos-git-message,deforaos-irc,deforaos-job-git-doc,deforaos-job-git-mirror,deforaos-job-git-tests,deforaos-jobs,deforaos-lock,deforaos-package,deforaos-release,deforaos-update
|
dist=Makefile,deforaos-build,deforaos-document,deforaos-git-hook,deforaos-git-message,deforaos-irc,deforaos-job-git-doc,deforaos-job-git-mirror,deforaos-job-git-tag-release,deforaos-job-git-tests,deforaos-jobs,deforaos-lock,deforaos-package,deforaos-release,deforaos-update
|
||||||
|
|
||||||
[deforaos-build]
|
[deforaos-build]
|
||||||
install=$(PREFIX)/bin
|
install=$(PREFIX)/bin
|
||||||
|
@ -28,6 +28,10 @@ mode=0755
|
||||||
install=$(PREFIX)/libexec/deforaos-jobs
|
install=$(PREFIX)/libexec/deforaos-jobs
|
||||||
mode=0755
|
mode=0755
|
||||||
|
|
||||||
|
[deforaos-job-git-tag-release]
|
||||||
|
install=$(PREFIX)/libexec/deforaos-jobs
|
||||||
|
mode=0755
|
||||||
|
|
||||||
[deforaos-job-git-tests]
|
[deforaos-job-git-tests]
|
||||||
install=$(PREFIX)/libexec/deforaos-jobs
|
install=$(PREFIX)/libexec/deforaos-jobs
|
||||||
mode=0755
|
mode=0755
|
||||||
|
|
Loading…
Reference in New Issue
Block a user