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
|
||||
$PREFIX/libexec/deforaos-jobs/deforaos-job-git-doc
|
||||
$PREFIX/libexec/deforaos-jobs/deforaos-job-git-tests"
|
||||
JOBS_TAG_RELEASE="$PREFIX/libexec/deforaos-jobs/deforaos-job-git-tag-release"
|
||||
PROGNAME="deforaos-git-hook"
|
||||
SYSCONFDIR="$PREFIX/etc"
|
||||
#load local settings
|
||||
|
@ -62,6 +63,10 @@ _hook_jobs()
|
|||
_jobs_branch "${refname#refs/heads/}" \
|
||||
"$GL_REPO" || res=2
|
||||
;;
|
||||
refs/tags/*)
|
||||
_jobs_tag "${refname#refs/tags/}" \
|
||||
"$GL_REPO" || res=2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
return $res
|
||||
|
@ -86,6 +91,29 @@ _jobs_branch()
|
|||
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()
|
||||
|
|
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]
|
||||
install=$(PREFIX)/bin
|
||||
|
@ -28,6 +28,10 @@ mode=0755
|
|||
install=$(PREFIX)/libexec/deforaos-jobs
|
||||
mode=0755
|
||||
|
||||
[deforaos-job-git-tag-release]
|
||||
install=$(PREFIX)/libexec/deforaos-jobs
|
||||
mode=0755
|
||||
|
||||
[deforaos-job-git-tests]
|
||||
install=$(PREFIX)/libexec/deforaos-jobs
|
||||
mode=0755
|
||||
|
|
Loading…
Reference in New Issue
Block a user