1- name : Build and Push Node Services Images
1+ name : Build and Push Node Services Image
22
33on :
44 push :
55 branches : [main]
66 paths :
7- - ' typescript/Dockerfile.node-service '
8- - ' typescript/docker-bake.hcl '
7+ - ' typescript/Dockerfile'
8+ - ' typescript/docker-entrypoint.sh '
99 - ' .dockerignore'
1010 - ' .github/workflows/node-services-docker.yml'
1111 - ' pnpm-lock.yaml'
1212 pull_request :
1313 paths :
14- - ' typescript/Dockerfile.node-service '
15- - ' typescript/docker-bake.hcl '
14+ - ' typescript/Dockerfile'
15+ - ' typescript/docker-entrypoint.sh '
1616 - ' .dockerignore'
1717 - ' .github/workflows/node-services-docker.yml'
1818 - ' pnpm-lock.yaml'
@@ -55,28 +55,19 @@ jobs:
5555 - name : Generate tag data
5656 id : taggen
5757 run : |
58- set -euo pipefail
59- TAG_SHA=$(echo '${{ github.event.pull_request.head.sha || github.sha }}' | cut -b 1-7)
60- TAG_DATE=$(date +'%Y%m%d-%H%M%S')
61- echo "TAG_SHA_DATE=${TAG_SHA}-${TAG_DATE}" >> $GITHUB_OUTPUT
62-
63- SANITIZED_REF=$(echo '${{ github.ref_name }}' | tr '/' '-')
64- if [ "${{ github.ref_type }}" = "tag" ]; then
65- echo "TAG=${SANITIZED_REF}" >> $GITHUB_OUTPUT
66- elif [ "${{ github.event_name }}" = "pull_request" ]; then
67- echo "TAG=pr-${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
68- else
69- echo "TAG=${SANITIZED_REF}" >> $GITHUB_OUTPUT
70- fi
58+ echo "TAG_DATE=$(date +'%Y%m%d-%H%M%S')" >> $GITHUB_OUTPUT
59+ echo "TAG_SHA=$(echo '${{ github.event.pull_request.head.sha || github.sha }}' | cut -b 1-7)" >> $GITHUB_OUTPUT
7160
72- if [ "${{ github.event.inputs.include_arm64 }}" == "true" ]; then
73- echo "PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
74- else
75- echo "PLATFORMS=linux/amd64" >> $GITHUB_OUTPUT
76- fi
77-
78- FOUNDRY_VERSION=$(cat solidity/.foundryrc)
79- echo "FOUNDRY_VERSION=$FOUNDRY_VERSION" >> $GITHUB_OUTPUT
61+ - name : Docker meta
62+ id : meta
63+ uses : docker/metadata-action@v5
64+ with :
65+ images : |
66+ ghcr.io/hyperlane-xyz/hyperlane-node-services
67+ tags : |
68+ type=ref,event=branch
69+ type=ref,event=pr
70+ type=raw,value=${{ steps.taggen.outputs.TAG_SHA }}-${{ steps.taggen.outputs.TAG_DATE }}
8071
8172 - name : Set up Depot CLI
8273 uses : depot/setup-action@v1
@@ -88,53 +79,58 @@ jobs:
8879 username : ${{ github.actor }}
8980 password : ${{ secrets.GITHUB_TOKEN }}
9081
91- - name : Build and push all images
82+ - name : Read Foundry version
83+ run : |
84+ FOUNDRY_VERSION=$(cat solidity/.foundryrc)
85+ echo "FOUNDRY_VERSION=$FOUNDRY_VERSION" >> $GITHUB_ENV
86+
87+ - name : Determine platforms
88+ id : determine-platforms
89+ run : |
90+ if [ "${{ github.event.inputs.include_arm64 }}" == "true" ]; then
91+ echo "platforms=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
92+ else
93+ echo "platforms=linux/amd64" >> $GITHUB_OUTPUT
94+ fi
95+
96+ - name : Build and push
9297 id : build
93- uses : depot/bake-action@v1
94- env :
95- TAG : ${{ steps.taggen.outputs.TAG }}
96- TAG_SHA_DATE : ${{ steps.taggen.outputs.TAG_SHA_DATE }}
97- PLATFORMS : ${{ steps.taggen.outputs.PLATFORMS }}
98- FOUNDRY_VERSION : ${{ steps.taggen.outputs.FOUNDRY_VERSION }}
99- SERVICE_VERSION : ${{ steps.taggen.outputs.TAG_SHA_DATE }}
98+ uses : depot/build-push-action@v1
10099 with :
101100 project : 057xstl4t6
102- files : typescript/docker-bake.hcl
101+ context : ./
102+ file : ./typescript/Dockerfile
103103 push : ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}
104104 provenance : false
105+ tags : ${{ steps.meta.outputs.tags }}
106+ labels : ${{ steps.meta.outputs.labels }}
107+ build-args : |
108+ FOUNDRY_VERSION=${{ env.FOUNDRY_VERSION }}
109+ SERVICE_VERSION=${{ steps.taggen.outputs.TAG_SHA }}-${{ steps.taggen.outputs.TAG_DATE }}
110+ platforms : ${{ steps.determine-platforms.outputs.platforms }}
105111
106112 - name : Generate image tags output
107113 id : image-tags
108114 if : always()
109115 run : |
110- TAG="${{ steps.taggen.outputs.TAG }}"
111- TAG_SHA_DATE="${{ steps.taggen.outputs.TAG_SHA_DATE }}"
116+ TAG_SHA_DATE="${{ steps.taggen.outputs.TAG_SHA }}-${{ steps.taggen.outputs.TAG_DATE }}"
112117 REGISTRY="ghcr.io/hyperlane-xyz"
118+ TAGS="${REGISTRY}/hyperlane-node-services:${TAG_SHA_DATE}"
113119
114- TAGS=$(cat << EOF
115- ${REGISTRY}/hyperlane-rebalancer:${TAG_SHA_DATE}
116- ${REGISTRY}/hyperlane-warp-monitor:${TAG_SHA_DATE}
117- ${REGISTRY}/hyperlane-key-funder:${TAG_SHA_DATE}
118- ${REGISTRY}/hyperlane-ts-relayer:${TAG_SHA_DATE}
119- ${REGISTRY}/hyperlane-offchain-lookup-server:${TAG_SHA_DATE}
120- EOF
121- )
122120 echo "tags<<EOF" >> $GITHUB_OUTPUT
123121 echo "$TAGS" >> $GITHUB_OUTPUT
124122 echo "EOF" >> $GITHUB_OUTPUT
125123
126124 cat >> $GITHUB_STEP_SUMMARY << EOF
127- ## ⚙️ Node Service Docker Images
125+ ## Node Services Docker Image
126+
127+ | Image | Tag |
128+ |-------|-----|
129+ | hyperlane-node-services | \`${TAG_SHA_DATE}\` |
128130
129- | Service | Tag |
130- |---------|-----|
131- | ♻️ rebalancer | \`${TAG_SHA_DATE}\` |
132- | 🕵️ warp-monitor | \`${TAG_SHA_DATE}\` |
133- | 🔑 key-funder | \`${TAG_SHA_DATE}\` |
134- | 🚀 ts-relayer | \`${TAG_SHA_DATE}\` |
135- | 🔍 offchain-lookup-server | \`${TAG_SHA_DATE}\` |
131+ **Services included:** rebalancer, warp-monitor, ccip-server, keyfunder, relayer
136132
137- **Full image paths :**
133+ **Full image path :**
138134 \`\`\`
139135 ${TAGS}
140136 \`\`\`
@@ -145,8 +141,8 @@ jobs:
145141 uses : ./.github/actions/docker-image-comment
146142 with :
147143 comment_tag : typescript-docker-images
148- image_name : Node Service Docker Images
149- emoji : ' ⚙️ '
144+ image_name : Node Services Docker Image
145+ emoji : ' '
150146 image_tags : ${{ steps.image-tags.outputs.tags }}
151147 pr_number : ${{ github.event.pull_request.number }}
152148 github_token : ${{ steps.generate-token.outputs.token }}
0 commit comments