Release 0.3.41
publish: the iris step retries on a fresh clone when its push loses a race against a push to iris main. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L4jrCgLiKKHAEFuZUJjckH
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
44d5ef3683
commit
7106543089
@@ -77,30 +77,46 @@ jobs:
|
|||||||
tag="${{ github.ref_name }}"
|
tag="${{ github.ref_name }}"
|
||||||
ver="${tag#v}"
|
ver="${tag#v}"
|
||||||
host="${{ github.server_url }}"
|
host="${{ github.server_url }}"
|
||||||
rm -rf iris-src
|
remote="https://${IRIS_PUSH_USER}:${IRIS_PUSH_TOKEN}@${host#https://}/uhhm/iris.git"
|
||||||
git clone -q "$host/uhhm/iris.git" iris-src
|
# Re-pin, version, changelog: idempotent, so a retry on a fresh
|
||||||
cd iris-src
|
# clone redoes exactly the same edits.
|
||||||
if git rev-parse -q --verify "refs/tags/$tag" >/dev/null; then
|
match() {
|
||||||
echo "iris $tag already exists, building it"
|
|
||||||
git checkout -q "$tag"
|
|
||||||
else
|
|
||||||
sed -i -E "s|^(portal = \{ git = \"[^\"]+\", tag = \")[^\"]+(\")|\1$tag\2|" Cargo.toml
|
sed -i -E "s|^(portal = \{ git = \"[^\"]+\", tag = \")[^\"]+(\")|\1$tag\2|" Cargo.toml
|
||||||
sed -i -E "0,/^version = \"[^\"]+\"/s//version = \"$ver\"/" Cargo.toml
|
sed -i -E "0,/^version = \"[^\"]+\"/s//version = \"$ver\"/" Cargo.toml
|
||||||
cargo update -q -p portal
|
cargo update -q -p portal
|
||||||
awk -v h="## $ver ($(date -u +%F)) - portal $tag" -v l="- Matches portal $tag (released by portal's publish job)." \
|
awk -v h="## $ver ($(date -u +%F)) - portal $tag" -v l="- Matches portal $tag (released by portal's publish job)." \
|
||||||
'done==0 && /^## /{print h; print ""; print l; print ""; done=1} {print}' CHANGELOG.md > CHANGELOG.new
|
'done==0 && /^## /{print h; print ""; print l; print ""; done=1} {print}' CHANGELOG.md > CHANGELOG.new
|
||||||
mv CHANGELOG.new CHANGELOG.md
|
mv CHANGELOG.new CHANGELOG.md
|
||||||
fi
|
|
||||||
cargo build --release
|
|
||||||
cargo test
|
|
||||||
if ! git rev-parse -q --verify "refs/tags/$tag" >/dev/null; then
|
|
||||||
git config user.name "portal release"
|
git config user.name "portal release"
|
||||||
git config user.email "portal@uhhm.no"
|
git config user.email "portal@uhhm.no"
|
||||||
git commit -qam "Match portal $tag"
|
git commit -qam "Match portal $tag"
|
||||||
git tag "$tag"
|
git tag "$tag"
|
||||||
git push -q "https://${IRIS_PUSH_USER}:${IRIS_PUSH_TOKEN}@${host#https://}/uhhm/iris.git" main "$tag"
|
}
|
||||||
echo "pushed iris $tag"
|
# Someone may push to iris main while this job builds; a push
|
||||||
fi
|
# then fails as non-fast-forward, and the answer is to start
|
||||||
|
# over on a fresh clone, once.
|
||||||
|
for attempt in 1 2; do
|
||||||
|
cd "$GITHUB_WORKSPACE"
|
||||||
|
rm -rf iris-src
|
||||||
|
git clone -q "$host/uhhm/iris.git" iris-src
|
||||||
|
cd iris-src
|
||||||
|
if git rev-parse -q --verify "refs/tags/$tag" >/dev/null; then
|
||||||
|
echo "iris $tag already exists, building it"
|
||||||
|
git checkout -q "$tag"
|
||||||
|
cargo build --release
|
||||||
|
cargo test
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
match
|
||||||
|
cargo build --release
|
||||||
|
cargo test
|
||||||
|
if git push -q "$remote" main "$tag"; then
|
||||||
|
echo "pushed iris $tag"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo "push rejected on attempt $attempt (iris main moved), retrying on a fresh clone"
|
||||||
|
[ "$attempt" = 2 ] && exit 1
|
||||||
|
done
|
||||||
|
|
||||||
- name: Package
|
- name: Package
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
Generated
+1
-1
@@ -3265,7 +3265,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "portal"
|
name = "portal"
|
||||||
version = "0.3.40"
|
version = "0.3.41"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"arc-swap",
|
"arc-swap",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "portal"
|
name = "portal"
|
||||||
version = "0.3.40"
|
version = "0.3.41"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
|
|||||||
Reference in New Issue
Block a user