77 push :
88 tags :
99 - v*
10+ workflow_dispatch :
11+ inputs :
12+ dry_run :
13+ description : " Enable dry run mode (builds artifacts but skips uploads and release creation)"
14+ type : boolean
15+ default : false
1016
1117env :
1218 REPO_NAME : ${{ github.repository_owner }}/reth
13- OP_IMAGE_NAME : ${{ github.repository_owner }}/op-reth
1419 IMAGE_NAME : ${{ github.repository_owner }}/reth
20+ OP_IMAGE_NAME : ${{ github.repository_owner }}/op-reth
21+ REPRODUCIBLE_IMAGE_NAME : ${{ github.repository_owner }}/reth-reproducible
1522 CARGO_TERM_COLOR : always
16- DOCKER_IMAGE_NAME : ghcr.io/${{ github.repository_owner }}/reth
17- DOCKER_REPRODUCIBLE_IMAGE_NAME : ghcr.io/${{ github.repository_owner }}/reth-reproducible
23+ DOCKER_IMAGE_NAME_URL : ghcr.io/${{ github.repository_owner }}/reth
24+ DOCKER_OP_IMAGE_NAME_URL : ghcr.io/${{ github.repository_owner }}/op-reth
1825
1926jobs :
27+ dry-run :
28+ name : check dry run
29+ runs-on : ubuntu-latest
30+ steps :
31+ - run : |
32+ echo "Dry run value: ${{ github.event.inputs.dry_run }}"
33+ echo "Dry run enabled: ${{ github.event.inputs.dry_run == 'true'}}"
34+ echo "Dry run disabled: ${{ github.event.inputs.dry_run != 'true'}}"
35+
2036 extract-version :
2137 name : extract version
2238 runs-on : ubuntu-latest
2339 steps :
2440 - name : Extract version
25- run : echo "VERSION=$(echo ${GITHUB_REF#refs/tags/}) " >> $GITHUB_OUTPUT
41+ run : echo "VERSION=${GITHUB_REF_NAME} " >> $GITHUB_OUTPUT
2642 id : extract_version
2743 outputs :
2844 VERSION : ${{ steps.extract_version.outputs.VERSION }}
@@ -96,55 +112,24 @@ jobs:
96112 shell : bash
97113
98114 - name : Upload artifact
115+ if : ${{ github.event.inputs.dry_run != 'true' }}
99116 uses : actions/upload-artifact@v4
100117 with :
101118 name : ${{ matrix.build.binary }}-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}.tar.gz
102119 path : ${{ matrix.build.binary }}-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}.tar.gz
103120
104121 - name : Upload signature
122+ if : ${{ github.event.inputs.dry_run != 'true' }}
105123 uses : actions/upload-artifact@v4
106124 with :
107125 name : ${{ matrix.build.binary }}-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}.tar.gz.asc
108126 path : ${{ matrix.build.binary }}-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}.tar.gz.asc
109127
110- build-reproducible :
111- name : build and push reproducible image
112- runs-on : ubuntu-latest
113- needs : extract-version
114- permissions :
115- packages : write
116- contents : read
117- steps :
118- - uses : actions/checkout@v4
119- - name : Set up Docker Buildx
120- uses : docker/setup-buildx-action@v3
121-
122- - name : Log in to GitHub Container Registry
123- uses : docker/login-action@v3
124- with :
125- registry : ghcr.io
126- username : ${{ github.actor }}
127- password : ${{ secrets.GITHUB_TOKEN }}
128-
129- - name : Build and push reproducible image
130- uses : docker/build-push-action@v6
131- with :
132- context : .
133- file : ./Dockerfile.reproducible
134- push : true
135- tags : |
136- ${{ env.DOCKER_REPRODUCIBLE_IMAGE_NAME }}:${{ needs.extract-version.outputs.VERSION }}
137- ${{ env.DOCKER_REPRODUCIBLE_IMAGE_NAME }}:latest
138- cache-from : type=gha
139- cache-to : type=gha,mode=max
140- provenance : false
141- env :
142- DOCKER_BUILD_RECORD_UPLOAD : false
143-
144128 draft-release :
145129 name : draft release
146- needs : [build, build-reproducible, extract-version]
130+ needs : [build, extract-version]
147131 runs-on : ubuntu-latest
132+ if : ${{ github.event.inputs.dry_run != 'true' }}
148133 env :
149134 VERSION : ${{ needs.extract-version.outputs.VERSION }}
150135 permissions :
@@ -158,12 +143,6 @@ jobs:
158143 fetch-depth : 0
159144 - name : Download artifacts
160145 uses : actions/download-artifact@v4
161- - name : Generate full changelog
162- id : changelog
163- run : |
164- echo "CHANGELOG<<EOF" >> $GITHUB_OUTPUT
165- echo "$(git log --pretty=format:"- %s" $(git describe --tags --abbrev=0 ${{ env.VERSION }}^)..${{ env.VERSION }})" >> $GITHUB_OUTPUT
166- echo "EOF" >> $GITHUB_OUTPUT
167146 - name : Create release draft
168147 env :
169148 GITHUB_USER : ${{ github.repository_owner }}
@@ -207,27 +186,33 @@ jobs:
207186
208187 *See [Update Priorities](https://paradigmxyz.github.io/reth/installation/priorities.html) for more information about this table.*
209188
210- ## All Changes
211-
212- ${{ steps.changelog.outputs.CHANGELOG }}
213-
214189 ## Binaries
215190
216191 [See pre-built binaries documentation.](https://paradigmxyz.github.io/reth/installation/binaries.html)
217192
218193 The binaries are signed with the PGP key: `50FB 7CC5 5B2E 8AFA 59FE 03B7 AA5E D56A 7FBF 253E`
219194
195+ ### Reth
196+
220197 | System | Architecture | Binary | PGP Signature |
221198 |:---:|:---:|:---:|:---|
222- | <img src="https://simpleicons.org/icons/linux.svg" style="width: 32px;"/> | x86_64 | [reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz.asc) |
223- | <img src="https://simpleicons.org/icons/linux.svg" style="width: 32px;"/> | aarch64 | [reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz.asc) |
224- | <img src="https://simpleicons.org/icons/windows.svg" style="width: 32px;"/> | x86_64 | [reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz.asc) |
225- | <img src="https://simpleicons.org/icons/apple.svg" style="width: 32px;"/> | x86_64 | [reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz.asc) |
226- | <img src="https://simpleicons.org/icons/apple.svg" style="width: 32px;"/> | aarch64 | [reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz.asc) |
227- | | | | |
228- | **System** | **Option** | - | **Resource** |
229- | <img src="https://simpleicons.org/icons/docker.svg" style="width: 32px;"/> | Docker | | [${{ env.IMAGE_NAME }}](https://github.com/paradigmxyz/reth/pkgs/container/reth) |
230- | <img src="https://simpleicons.org/icons/docker.svg" style="width: 32px;"/> | Docker (Reproducible) | | [${{ env.IMAGE_NAME }}-reproducible](https://github.com/paradigmxyz/reth/pkgs/container/reth-reproducible) |
199+ | <img src="https://www.svgrepo.com/download/473700/linux.svg" width="50"/> | x86_64 | [reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz.asc) |
200+ | <img src="https://www.svgrepo.com/download/473700/linux.svg" width="50"/> | aarch64 | [reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz.asc) |
201+ | <img src="https://www.svgrepo.com/download/513083/windows-174.svg" width="50"/> | x86_64 | [reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz.asc) |
202+ | <img src="https://www.svgrepo.com/download/511330/apple-173.svg" width="50"/> | x86_64 | [reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz.asc) |
203+ | <img src="https://www.svgrepo.com/download/511330/apple-173.svg" width="50"/> | aarch64 | [reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz.asc) |
204+ | <img src="https://www.svgrepo.com/download/473589/docker.svg" width="50"/> | Docker | [${{ env.IMAGE_NAME }}](${{ env.DOCKER_IMAGE_NAME_URL }}) | - |
205+
206+ ### OP-Reth
207+
208+ | System | Architecture | Binary | PGP Signature |
209+ |:---:|:---:|:---:|:---|
210+ | <img src="https://www.svgrepo.com/download/473700/linux.svg" width="50"/> | x86_64 | [op-reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz.asc) |
211+ | <img src="https://www.svgrepo.com/download/473700/linux.svg" width="50"/> | aarch64 | [op-reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz.asc) |
212+ | <img src="https://www.svgrepo.com/download/513083/windows-174.svg" width="50"/> | x86_64 | [op-reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz.asc) |
213+ | <img src="https://www.svgrepo.com/download/511330/apple-173.svg" width="50"/> | x86_64 | [op-reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz.asc) |
214+ | <img src="https://www.svgrepo.com/download/511330/apple-173.svg" width="50"/> | aarch64 | [op-reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz.asc) |
215+ | <img src="https://www.svgrepo.com/download/473589/docker.svg" width="50"/> | Docker | [${{ env.OP_IMAGE_NAME }}](${{ env.DOCKER_OP_IMAGE_NAME_URL }}) | - |
231216 ENDBODY
232217 )
233218 assets=()
@@ -236,3 +221,25 @@ jobs:
236221 done
237222 tag_name="${{ env.VERSION }}"
238223 echo "$body" | gh release create --draft -t "Reth $tag_name" -F "-" "$tag_name" "${assets[@]}"
224+
225+ dry-run-summary :
226+ name : dry run summary
227+ needs : [build, extract-version]
228+ runs-on : ubuntu-latest
229+ if : ${{ github.event.inputs.dry_run == 'true' }}
230+ env :
231+ VERSION : ${{ needs.extract-version.outputs.VERSION }}
232+ steps :
233+ - name : Summarize dry run
234+ run : |
235+ echo "## 🧪 Release Dry Run Summary"
236+ echo ""
237+ echo "✅ Successfully completed dry run for commit ${{ github.sha }}"
238+ echo ""
239+ echo "### What would happen in a real release:"
240+ echo "- Binary artifacts would be uploaded to GitHub"
241+ echo "- Docker images would be pushed to registry"
242+ echo "- A draft release would be created"
243+ echo ""
244+ echo "### Next Steps"
245+ echo "To perform a real release, push a git tag."
0 commit comments