Merge branch 'auto-update' into 'main'

Create auto-updater

See merge request greg/mingw-sword-build!3
This commit is contained in:
Greg Hellings
2025-08-08 21:19:39 +00:00
3 changed files with 96 additions and 0 deletions
+58
View File
@@ -1,10 +1,63 @@
stages: stages:
- check - check
- update
- build - build
- release - release
version_update:
stage: update
tags:
- nix
rules:
- if: '$CI_PIPELINE_SOURCE == "manual"'
artifacts:
reports:
dotenv: update.env
script:
- nix run ".#update" > update.env
- |-
if git diff --quiet; then
echo "Found changes to make"
git checkout -b "sword-rev/$CI_PIPELINE_IID"
echo "BRANCH=sword-rev/$CI_PIPELINE_IID" >> update.env
git stage .
git commit -m "Automatic update #$CI_PIPELINE_IID"
git push "https://${GITLAB_USER_LOGIN}:${CI_GIT_TOKEN}@${CI_REPOSITORY_URL#*@}" HEAD
fi
create_pr:
stage: update
needs:
- version_update
dependencies:
- version_update
variables:
GIT_STRATEGY: none
GITLAB_PRIVATE_TOKEN: $CI_GIT_TOKEN
rules:
- if: '$CI_PIPELINE_SOURCE == "manual"'
script:
- test -z ${DO_UPDATE} && { echo "No updates required. Not crating PR"; exit 0; }
- >-
CREATE_MR=$(gitlab project-merge-request create
--remove-source-branch true
--project-id ${CI_PROJECT_ID}
--source-branch "${BRANCfh}"
--target-branch "main"
--title "Update sword to r$NEW_REV")
- IID=${CREATE_MR#* }
- >-
gitlab project-merge-request merge \
--project-id ${CI_PROJECT_ID} \
--iid ${IID} \
--merge-when-pipeline-succeeds true
- echo "PR set to auto-merge if build succeeds"
check: check:
stage: check stage: check
rules:
- if: '$CI_PIPELINE_SOURCE == "manual"'
when: never
tags: tags:
- nix - nix
script: script:
@@ -25,6 +78,9 @@ build:
- ARCH: [x86, ucrt] - ARCH: [x86, ucrt]
tags: tags:
- nix - nix
rules:
- if: '$CI_PIPELINE_SOURCE == "manual"'
when: never
script: script:
- nix run -L ".#${ARCH}" - nix run -L ".#${ARCH}"
- ls -l - ls -l
@@ -46,6 +102,8 @@ build:
rules: rules:
- if: $CI_COMMIT_BRANCH == "main" - if: $CI_COMMIT_BRANCH == "main"
when: always when: always
- if: '$CI_PIPELINE_SOURCE == "manual"'
when: never
needs: needs:
- job: check - job: check
artifacts: true artifacts: true
+1
View File
@@ -105,6 +105,7 @@
x86 = tar mingwW64; x86 = tar mingwW64;
ucrt = tar ucrt64; ucrt = tar ucrt64;
ucrtAarch = tar arm.pkgsCross.ucrtAarch64; ucrtAarch = tar arm.pkgsCross.ucrtAarch64;
update = pkgs.callPackage ./update.nix { };
}; };
}; };
}; };
+37
View File
@@ -0,0 +1,37 @@
{
writeShellApplication,
gnugrep,
nix-prefetch,
subversion,
}:
writeShellApplication {
name = "sword-updater";
runtimeInputs = [
gnugrep
nix-prefetch
subversion
];
text = ''
url="https://www.crosswire.org/svn/sword/trunk"
old_rev="$(grep "${./flake.nix}" -e "rev = " | sed -E -e 's/.*"(.*)".*/\1/')"
echo "OLD_REV=$old_rev"
new_rev="$(svn info "$url" --show-item revision)"
echo "NEW_REV=$new_rev"
if [ "$new_rev" == "$old_rev" ]; then
#exit 0
else
echo "DO_UPDATE=1"
fi
hash="$(nix-prefetch \
--check-store \
--option extra-experimental-features flakes \
fetchsvn \
--url "$url" \
--rev "$new_rev" \
)"
echo "HASH=$hash"
sed -i flake.nix \
-e "s/rev = \"$old_rev\"/rev = \"$new_rev\"/"
'';
}