Skip to content

Commit e0feeea

Browse files
authored
Add more docker metadata (#3996)
1 parent 617210c commit e0feeea

File tree

4 files changed

+51
-23
lines changed

4 files changed

+51
-23
lines changed
Lines changed: 44 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
1-
name: Publish Docker image
2-
run-name: Publish branch ${{ github.ref_name }} to tag ${{ inputs.dockerTag }}
1+
name: Publish Docker image to GHCR
2+
run-name: Publish branch ${{ github.ref_name }} to tags ${{ inputs.dockerTags }}
33

44
on:
55
workflow_dispatch:
66
inputs:
7-
dockerTag:
8-
description: 'Docker tag'
7+
dockerTags:
8+
description: 'Docker tags'
99
required: true
10-
type: string
1110
baseImage:
1211
description: 'Base image'
1312
required: true
1413
default: 'eclipse-temurin:21-jre-noble'
15-
type: string
1614

1715
env:
1816
IMAGE_NAME: ghcr.io/${{ github.repository }}
@@ -27,15 +25,38 @@ jobs:
2725
id-token: write
2826
steps:
2927
- uses: actions/checkout@v4
28+
- uses: regclient/actions/regctl-installer@4d6888fcc4842c9630f60ebc91715a45dd9bd7a3
3029
- uses: proudust/gh-describe@70f72d4f6304ea053cf5a3d71c36211d5acc0c73
3130
id: ghd
31+
- run: |
32+
echo "base-image-digest=$(regctl manifest digest ${{ inputs.baseImage }})" >> "$GITHUB_OUTPUT"
33+
echo "node-version=$(echo ${{ steps.ghd.outputs.describe }} | cut -c 2-)" >> "$GITHUB_OUTPUT"
34+
id: versions
3235
- uses: actions/setup-java@v4
3336
with:
3437
distribution: 'temurin'
3538
java-version: '11'
3639
cache: 'sbt'
3740
- uses: sbt/setup-sbt@v1
38-
- run: sbt --batch -Dproject.version=$(echo ${{ steps.ghd.outputs.describe }} | cut -c 2-) buildTarballsForDocker
41+
- run: sbt --batch -Dproject.version=${{ steps.versions.outputs.node-version }} buildTarballsForDocker
42+
- run: |
43+
{
44+
echo 'tags<<EOF'
45+
echo ${{ inputs.dockerTags }} | tr ',' '\n' | sed -e 's/^/type=raw,value=/'
46+
echo type=sha
47+
echo EOF
48+
} >> "$GITHUB_OUTPUT"
49+
{
50+
echo 'annotations<<EOF'
51+
echo org.opencontainers.image.source=https://github.com/${{ github.repository }}/tree/${{ github.sha }}/docker
52+
echo org.opencontainers.image.licenses=MIT
53+
echo org.opencontainers.image.description=Unit Zero Node
54+
echo org.opencontainers.image.base.name=${{ inputs.baseImage }}
55+
echo org.opencontainers.image.base.digest=${{ steps.versions.outputs.base-image-digest }}
56+
echo org.opencontainers.image.version=${{ steps.versions.outputs.node-version }}
57+
echo EOF
58+
} >> "$GITHUB_OUTPUT"
59+
id: tag-list
3960
- uses: docker/login-action@v3
4061
with:
4162
registry: ghcr.io
@@ -44,25 +65,30 @@ jobs:
4465
- uses: docker/setup-buildx-action@v3
4566
- uses: docker/metadata-action@v5
4667
id: meta
68+
env:
69+
DOCKER_METADATA_ANNOTATIONS_LEVELS: index,manifest-descriptor,index-descriptor
4770
with:
4871
images: ${{ env.IMAGE_NAME }}
49-
flavor: latest=false
50-
tags: |
51-
type=sha
52-
type=raw,value=${{ inputs.dockerTag }}
53-
labels: |
54-
org.opencontainers.image.source=https://github.com/${{ github.repository }}
55-
org.opencontainers.image.licenses=MIT
56-
org.opencontainers.image.description="Waves Node"
57-
- uses: docker/build-push-action@v5
72+
flavor: latest=${{ contains(inputs.dockerTags, 'latest') }}
73+
tags: ${{ steps.tag-list.outputs.tags }}
74+
labels: ${{ steps.tag-list.outputs.annotations }}
75+
annotations: ${{ steps.tag-list.outputs.annotations }}
76+
- uses: docker/build-push-action@v6
5877
id: push
5978
with:
6079
context: ./docker
6180
platforms: linux/amd64,linux/arm64
6281
push: true
63-
pull: true
64-
build-args: baseImage=${{ inputs.baseImage }}
82+
build-args: baseImage=${{ inputs.baseImage }}@${{ steps.versions.outputs.base-image-digest }}
6583
tags: ${{ steps.meta.outputs.tags }}
6684
labels: ${{ steps.meta.outputs.labels }}
85+
annotations: ${{ steps.meta.outputs.annotations }}
6786
cache-from: type=gha
6887
cache-to: type=gha,mode=max
88+
- run: |
89+
{
90+
echo '## Image Info'
91+
echo '- This image: `${{ env.IMAGE_NAME }}@${{ steps.push.outputs.digest }}`'
92+
echo '- Base image: `${{ inputs.baseImage }}@${{ steps.versions.outputs.base-image-digest }}`'
93+
echo '- Version: `${{ steps.versions.outputs.node-version }}`'
94+
} >> $GITHUB_STEP_SUMMARY

build.sbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ lazy val `waves-node` = (project in file("."))
144144
`node-testkit`,
145145
`node-tests`,
146146
`node-generator`,
147+
`grpc-server`,
147148
benchmark,
148149
`ride-runner`
149150
)

grpc-server/src/main/scala/com/wavesplatform/api/grpc/package.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ package object grpc {
6868
}
6969

7070
implicit class FutureExt[T](val f: Future[T]) extends AnyVal {
71-
def wrapErrors(implicit ec: ExecutionContext): Future[T] = f.recoverWith {
72-
case err => Future.failed(GRPCErrors.toStatusException(err))
71+
def wrapErrors(implicit ec: ExecutionContext): Future[T] = f.recoverWith { case err =>
72+
Future.failed(GRPCErrors.toStatusException(err))
7373
}
7474
}
7575

@@ -102,7 +102,8 @@ package object grpc {
102102
p.future
103103
} else Future.failed(new IllegalStateException(s"An element ${nextItem()} is pending"))
104104
},
105-
err => cso.onError(err), { () =>
105+
err => cso.onError(err),
106+
{ () =>
106107
logger.debug("Source observer completed")
107108
cso.onCompleted()
108109
}

grpc-server/src/main/scala/com/wavesplatform/events/Handler.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import monix.reactive.subjects.PublishToOneSubject
77
import scala.collection.mutable.ArrayBuffer
88
import scala.util.{Failure, Success}
99

10-
class Handler(id: String, maybeLiquidState: Option[LiquidState], subject: PublishToOneSubject[BlockchainUpdated], maxQueueSize: Int)(
11-
implicit s: Scheduler
10+
class Handler(id: String, maybeLiquidState: Option[LiquidState], subject: PublishToOneSubject[BlockchainUpdated], maxQueueSize: Int)(implicit
11+
s: Scheduler
1212
) extends ScorexLogging {
1313

1414
private val queue = maybeLiquidState.fold(ArrayBuffer.empty[BlockchainUpdated])(ls => ArrayBuffer.from(ls.keyBlock +: ls.microBlocks))

0 commit comments

Comments
 (0)