mirror of
https://gitlab.com/TECHNOFAB/nix-gitlab-ci.git
synced 2025-12-11 17:50:08 +01:00
46 lines
1.9 KiB
Nix
46 lines
1.9 KiB
Nix
{
|
|
mkUtils = {pkgs, ...}: {
|
|
commitAndPushFiles = {
|
|
message,
|
|
files ? [],
|
|
}: jobArgs:
|
|
jobArgs
|
|
// {
|
|
before_script =
|
|
(jobArgs.before_script or [])
|
|
++ [
|
|
''
|
|
echo -e "\\e[0Ksection_start:`date +%s`:commit_setup[collapsed=true]\\r\\e[0KSetting up commitAndPushFiles"
|
|
eval "$(ssh-agent -s)" >/dev/null;
|
|
mkdir -p ~/.ssh; touch ~/.ssh/known_hosts;
|
|
ssh-keyscan -t rsa $CI_SERVER_HOST >> ~/.ssh/known_hosts;
|
|
echo "$GIT_SSH_PRIV_KEY" | tr -d '\r' | ssh-add - >/dev/null;
|
|
git config --global user.email "$GIT_EMAIL" >/dev/null;
|
|
git config --global user.name "$GIT_NAME" >/dev/null;
|
|
export CI_PUSH_REPO=`echo $CI_REPOSITORY_URL | sed -e "s|.*@\(.*\)|git@\1|" -e "s|/|:|"`;
|
|
git remote rm origin && git remote add origin ''${CI_PUSH_REPO}
|
|
echo -e "\\e[0Ksection_end:`date +%s`:commit_setup\\r\\e[0K"
|
|
''
|
|
];
|
|
script = let
|
|
addScript =
|
|
if builtins.length files == 0
|
|
then ""
|
|
else "git add ${builtins.concatStringsSep " " files}";
|
|
in
|
|
(jobArgs.script or [])
|
|
++ [
|
|
''
|
|
echo -e "\\e[0Ksection_start:`date +%s`:commit[collapsed=true]\\r\\e[0KCommiting & pushing changes if necessary"
|
|
${addScript}
|
|
git diff --cached --exit-code >/dev/null &&
|
|
echo "Nothing to commit" ||
|
|
git commit -m "${message}" --no-verify;
|
|
git push --tags origin ''${GIT_SOURCE_REF:-HEAD}:''${GIT_TARGET_REF:-$CI_COMMIT_REF_NAME} -o ci.skip
|
|
echo -e "\\e[0Ksection_end:`date +%s`:commit\\r\\e[0K"
|
|
''
|
|
];
|
|
nix.deps = (jobArgs.nix.deps or []) ++ [pkgs.openssh pkgs.gitMinimal pkgs.gnused];
|
|
};
|
|
};
|
|
}
|