diff --git a/ci/release/build.sh b/ci/release/build.sh index e8148a83e..2335a513e 100755 --- a/ci/release/build.sh +++ b/ci/release/build.sh @@ -58,6 +58,9 @@ Flags: images into the daemon for push later. It's not slow though to use --push-docker after building the image as nearly all artifacts are cached. Automatically set if called from release.sh + +--latest-docker + Mark the built image with the latest tag. Automatically set if called from release.sh EOF } @@ -113,6 +116,10 @@ main() { flag_noarg && shift "$FLAGSHIFT" PUSH_DOCKER=1 ;; + latest-docker) + flag_noarg && shift "$FLAGSHIFT" + LATEST_DOCKER=1 + ;; *) flag_errusage "unrecognized flag $FLAGRAW" ;; @@ -149,7 +156,7 @@ main() { runjob windows/arm64 'OS=windows ARCH=arm64 build' & waitjobs - runjob linux/dockerimage 'OS=linux build_docker_image' & + runjob linux/docker build_docker & runjob windows/amd64/msi 'OS=windows ARCH=amd64 build_windows_msi' & waitjobs } @@ -247,14 +254,20 @@ ARCHIVE=$ARCHIVE \ sh_c rsync --archive --human-readable "$REMOTE_HOST:src/d2/$ARCHIVE" "$ARCHIVE" )} -build_docker_image() { - D2_DOCKER_IMAGE=${D2_DOCKER_IMAGE:-terrastruct/d2} - flags='--load' - if [ -n "${PUSH_DOCKER-}" -o -n "${RELEASE-}" ]; then - flags='--push --platform linux/amd64,linux/arm64' +build_docker() { + if [ -n "${LOCAL-}" ]; then + sh_c ./ci/release/docker/build.sh \ + ${PUSH_DOCKER:+--push} \ + ${LATEST_DOCKER:+--latest} + return 0 fi - sh_c rsync --archive --human-readable ./ci/release/Dockerfile_entrypoint.sh "./ci/release/build/$VERSION" - sh_c docker buildx build $flags -t "$D2_DOCKER_IMAGE:$VERSION" -t "$D2_DOCKER_IMAGE:latest" --build-arg "VERSION=$VERSION" -f ./ci/release/Dockerfile "./ci/release/build/$VERSION" + + sh_c lockfile_ssh "$CI_D2_LINUX_AMD64" .d2-build-lock + sh_c gitsync "$CI_D2_LINUX_AMD64" src/d2 + sh_c ssh "$CI_D2_LINUX_AMD64" "D2_DOCKER_IMAGE=${D2_DOCKER_IMAGE-}" \ + ./src/d2/ci/release/docker/build.sh \ + ${PUSH_DOCKER:+--push} \ + ${LATEST_DOCKER:+--latest} } build_windows_msi() { diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index 532aa4df1..fd95f04a1 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -29,6 +29,7 @@ - `--force-appendix` flag adds an appendix to SVG outputs with tooltips or links. [#761](https://github.com/terrastruct/d2/pull/761) - `d2 themes` subcommand to list themes. [#760](https://github.com/terrastruct/d2/pull/760) - `sql_table` header left-aligned with column [#769](https://github.com/terrastruct/d2/pull/769) +- Sequence diagram edge group labels are clearer [#782](https://github.com/terrastruct/d2/pull/782) #### Bugfixes ⛑️ diff --git a/ci/release/Dockerfile b/ci/release/docker/Dockerfile similarity index 95% rename from ci/release/Dockerfile rename to ci/release/docker/Dockerfile index 3d7f843bc..50f51c21a 100644 --- a/ci/release/Dockerfile +++ b/ci/release/docker/Dockerfile @@ -21,7 +21,7 @@ RUN curl -fsSL "https://github.com/boxboat/fixuid/releases/download/v0.5/fixuid- && printf "user: debian\ngroup: debian\npaths: [/home/debian]\n" > /etc/fixuid/config.yml COPY ./d2-*-linux-$TARGETARCH.tar.gz /tmp -ADD ./Dockerfile_entrypoint.sh /usr/local/bin/entrypoint.sh +ADD ./entrypoint.sh /usr/local/bin/entrypoint.sh RUN mkdir -p /usr/local/lib/d2 \ && tar -C /usr/local/lib/d2 -xzf /tmp/d2-*-linux-"$TARGETARCH".tar.gz \ && /usr/local/lib/d2/d2-*/scripts/install.sh \ diff --git a/ci/release/docker/build.sh b/ci/release/docker/build.sh new file mode 100755 index 000000000..0f7475d4f --- /dev/null +++ b/ci/release/docker/build.sh @@ -0,0 +1,57 @@ +#!/bin/sh +set -eu + +. "$(dirname "$0")/../../../ci/sub/lib.sh" +cd -- "$(dirname "$0")/../../.." + +help() { + cat < a\n", }, + { + name: "cannot create edge between boards", + text: `"" <-> ""`, + }, } for _, tc := range testCases { diff --git a/d2exporter/export.go b/d2exporter/export.go index 418e71370..0237d554a 100644 --- a/d2exporter/export.go +++ b/d2exporter/export.go @@ -147,6 +147,9 @@ func toShape(obj *d2graph.Object, theme *d2themes.Theme) d2target.Shape { shape.LabelHeight = text.Dimensions.Height if obj.LabelPosition != nil { shape.LabelPosition = *obj.LabelPosition + if obj.IsSequenceDiagramGroup() { + shape.LabelFill = shape.Fill + } } shape.Tooltip = obj.Attributes.Tooltip @@ -163,7 +166,6 @@ func toConnection(edge *d2graph.Edge, theme *d2themes.Theme) d2target.Connection connection := d2target.BaseConnection() connection.ID = edge.AbsID() connection.ZIndex = edge.ZIndex - // edge.Edge.ID = go2.StringToIntHash(connection.ID) text := edge.Text() if edge.SrcArrow { diff --git a/d2ir/d2ir.go b/d2ir/d2ir.go index 1a90d8d5c..455a38707 100644 --- a/d2ir/d2ir.go +++ b/d2ir/d2ir.go @@ -233,7 +233,7 @@ func NodeBoardKind(n Node) BoardKind { var f *Field switch n := n.(type) { case *Field: - if n.Name == "" { + if n.parent == nil { return BoardLayer } f = ParentField(n) diff --git a/d2renderers/d2svg/appendix/testdata/diagram_wider_than_tooltip/sketch.exp.svg b/d2renderers/d2svg/appendix/testdata/diagram_wider_than_tooltip/sketch.exp.svg index 41c015af4..f174f6658 100644 --- a/d2renderers/d2svg/appendix/testdata/diagram_wider_than_tooltip/sketch.exp.svg +++ b/d2renderers/d2svg/appendix/testdata/diagram_wider_than_tooltip/sketch.exp.svg @@ -39,7 +39,7 @@ width="1932" height="2282" viewBox="-134 -49 1932 2282">