v30.3-roots.1 · Commit 63: [PATCH 63/68] fix(release): restore signed five-platform CI releases
ci/test/test_release_version.py
Before: ci/test/test_release_version.py · After: ci/test/test_release_version.py
File metadata
index 1e193d4f940733835997c0dbe9a24cb2c8bd2292..7322ff97c1d3d9f9f71f79a33e30ce42fdb7f330 100755
Download original patch · Release notes
Diff rows 1–51 of 51. Line numbers refer to the original before/after files.
+ Added− RemovedUnmarked lines are context.
Scroll the code area horizontally to read long lines. The two line-number columns refer to before and after.
ci/test/test_release_version.py
CHANGED
|
@@ -108,22 +108,25 @@ class ReleaseVersionTest(unittest.TestCase):
|
|
|
108
108
|
self.assertEqual(result.returncode, status, result.stderr)
|
|
109
109
|
self.assertEqual(log.read_text().strip(), f"--verify {build}/deploy/Bitcoin-Qt.app")
|
|
110
110
|
|
|
111
|
-
def test_workflow_only_rehearses_explicit_canonical_commits(self):
|
|
111
|
+
def test_workflow_tags_build_signed_drafts_and_dispatch_only_rehearses(self):
|
|
112
112
|
workflow = RELEASE_WORKFLOW.read_text(encoding="utf-8")
|
|
113
113
|
self.assertIn("workflow_dispatch:", workflow)
|
|
114
|
-
self.assertNotIn(" push:", workflow)
|
|
115
|
-
self.assertNotIn("publish-release:", workflow)
|
|
116
|
-
self.assertNotIn("contents: write", workflow)
|
|
117
|
-
self.assertNotIn("gh release", workflow)
|
|
118
|
-
self.assertIn("RELEASE_TAG: ${{ inputs.release_tag }}", workflow)
|
|
119
|
-
self.assertIn("RELEASE_COMMIT: ${{ inputs.release_commit }}", workflow)
|
|
114
|
+
self.assertIn(" push:", workflow)
|
|
115
|
+
self.assertIn("RELEASE_TAG: ${{ github.event_name == 'push' && github.ref_name || inputs.release_tag }}", workflow)
|
|
120
116
|
self.assertIn("ref: ${{ env.RELEASE_SOURCE_REF }}", workflow)
|
|
121
|
-
self.assertEqual(workflow.count("ci/release/prepare-release-source.sh"), 4)
|
|
122
|
-
self.assertNotIn("origin main:refs/remotes/origin/main", workflow)
|
|
117
|
+
self.assertEqual(workflow.count("ci/release/prepare-release-source.sh"), 5)
|
|
118
|
+
publish = workflow.split(" publish-release:", 1)[1]
|
|
119
|
+
self.assertIn("if: github.event_name == 'push'", publish)
|
|
120
|
+
self.assertIn("contents: write", publish)
|
|
121
|
+
self.assertIn("REQUIRE_RELEASE_SIGNATURE: '1'", publish)
|
|
122
|
+
self.assertIn("test -s", publish)
|
|
123
|
+
self.assertNotIn("secrets.", workflow.split(" publish-release:", 1)[0])
|
|
124
|
+
self.assertNotIn("--clobber", workflow)
|
|
123
125
|
for metadata_workflow in (RELEASE_WORKFLOW, ROOT / ".github/workflows/ci.yml"):
|
|
124
126
|
metadata = metadata_workflow.read_text()
|
|
125
|
-
self.assertIn("python3 ci/test/test_release_notices.py", metadata)
|
|
126
|
-
self.assertIn("python3 ci/test/test_create_release_draft.py", metadata)
|
|
127
|
+
for test in ("test_release_notices.py", "test_create_release_draft.py",
|
|
128
|
+
"test_runner_release_notices.py", "test_create_ci_release_draft.py"):
|
|
129
|
+
self.assertIn("python3 ci/test/" + test, metadata)
|
|
127
130
|
|
|
128
131
|
def test_workflow_builds_complete_artifact_matrix_and_patch(self):
|
|
129
132
|
workflow = RELEASE_WORKFLOW.read_text(encoding="utf-8")
|
|
@@ -136,7 +139,7 @@ class ReleaseVersionTest(unittest.TestCase):
|
|
|
136
139
|
]:
|
|
137
140
|
self.assertIn(artifact, workflow)
|
|
138
141
|
self.assertIn("ci/release/create-patch-series.sh", workflow)
|
|
139
|
-
self.assertIn("ci/release/create-draft.py", workflow)
|
|
142
|
+
self.assertIn("ci/release/create-ci-draft.py", workflow)
|
|
140
143
|
|
|
141
144
|
def test_workflow_references_only_present_local_release_files(self):
|
|
142
145
|
workflow = RELEASE_WORKFLOW.read_text(encoding="utf-8")
|
|
@@ -153,6 +156,7 @@ class ReleaseVersionTest(unittest.TestCase):
|
|
|
153
156
|
{
|
|
154
157
|
"actions/checkout@v6",
|
|
155
158
|
"actions/upload-artifact@v4",
|
|
159
|
+
"actions/download-artifact@v5",
|
|
156
160
|
"./.github/actions/configure-docker",
|
|
157
161
|
"./.github/actions/configure-environment",
|
|
158
162
|
},
|