gowalk-cicd 1.0.155 → 1.0.156
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/action/.daemux-version +1 -1
- package/android-action/.daemux-version +1 -1
- package/backend-action/.daemux-version +1 -1
- package/backend-action/network_prepare.py +2 -1
- package/backend-action/network_test_fixture.py +2 -1
- package/backend-action/test_network_prepare.py +21 -0
- package/docs/BACKEND_NETWORKS.md +15 -4
- package/package.json +1 -1
package/action/.daemux-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.156
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.156
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.156
|
|
@@ -122,7 +122,8 @@ def prepare(config, app, *, reader=collect, owner_reader=ownership_inventory, co
|
|
|
122
122
|
inventory = reader(command, require_pools=False)
|
|
123
123
|
if inventory.get('pool_failure'):
|
|
124
124
|
raise NetworkFailure(inventory['pool_failure'])
|
|
125
|
-
|
|
125
|
+
# Compose 2 and 5 reuse a project network that carries no config-hash label (docs/BACKEND_NETWORKS.md).
|
|
126
|
+
if not re.fullmatch(r'v?(?:2|5)\.\d+\.\d+', inventory['compose_version']):
|
|
126
127
|
raise NetworkFailure('compose_version_unsupported')
|
|
127
128
|
rows.append(create_one(plan, inventory, reader, command))
|
|
128
129
|
inventory = reader(command, require_pools=False)
|
|
@@ -28,9 +28,10 @@ class Host:
|
|
|
28
28
|
self.calls = []
|
|
29
29
|
self.pool_failure = ''
|
|
30
30
|
self.lose_reply = False
|
|
31
|
+
self.compose_version = '2.39.4'
|
|
31
32
|
|
|
32
33
|
def inventory(self, command, require_pools=True):
|
|
33
|
-
return {'docker_version': '28.0.4', 'compose_version':
|
|
34
|
+
return {'docker_version': '28.0.4', 'compose_version': self.compose_version, 'observed_at': '2026-09-15T00:00:00Z',
|
|
34
35
|
'python_version': '3.8.20', 'pool_source': 'fixture', 'pool_failure': self.pool_failure,
|
|
35
36
|
'pools': [{'base': '172.28.0.0/22', 'size': 16}], 'networks': copy.deepcopy(self.networks),
|
|
36
37
|
'host_excluded': [], 'host_records': [],
|
|
@@ -85,6 +85,27 @@ class PreparationTests(unittest.TestCase):
|
|
|
85
85
|
self.assertEqual(set(values), {'172.28.1.0/24', '172.28.2.0/24'})
|
|
86
86
|
self.assertEqual(len(host.calls), 2)
|
|
87
87
|
|
|
88
|
+
def test_reviewed_compose_majors_allocate_and_others_refuse_before_create(self):
|
|
89
|
+
for version in ('2.39.4', 'v2.40.3', '5.0.0', '5.3.1', 'v5.5.1'):
|
|
90
|
+
host = Host()
|
|
91
|
+
host.compose_version = version
|
|
92
|
+
result = prepare(config('first'), 'first', **host.arguments())
|
|
93
|
+
self.assertTrue(result['ok'])
|
|
94
|
+
self.assertEqual(result['compose_version'], version)
|
|
95
|
+
self.assertEqual(host.networks[-1]['Labels']['com.docker.compose.version'], version)
|
|
96
|
+
self.assertNotIn('com.docker.compose.config-hash', host.networks[-1]['Labels'])
|
|
97
|
+
self.assertEqual(len(host.calls), 1)
|
|
98
|
+
for version in ('1.29.2', '3.0.0', '4.1.0', '6.0.0', '5.3', '25.0.0'):
|
|
99
|
+
host = Host()
|
|
100
|
+
host.compose_version = version
|
|
101
|
+
with self.assertRaisesRegex(NetworkFailure, 'compose_version_unsupported'):
|
|
102
|
+
prepare(config('first'), 'first', **host.arguments())
|
|
103
|
+
self.assertEqual(host.calls, [])
|
|
104
|
+
host.networks.append(network('existing', '172.29.0.0/16'))
|
|
105
|
+
preserved = prepare(config('existing'), 'existing', **host.arguments())
|
|
106
|
+
self.assertEqual(preserved['networks'][0]['state'], 'preserved')
|
|
107
|
+
self.assertEqual(host.calls, [])
|
|
108
|
+
|
|
88
109
|
def test_full_effective_pool_and_unknown_provenance_refuse_expansion(self):
|
|
89
110
|
for unknown in (False, True):
|
|
90
111
|
host = Host()
|
package/docs/BACKEND_NETWORKS.md
CHANGED
|
@@ -28,10 +28,21 @@ fingerprint. A later change to its network contract refuses before Compose rathe
|
|
|
28
28
|
ignoring authored IPAM or replacing a network that may carry active workloads. An app requiring a
|
|
29
29
|
different network must implement that deliberate migration in its own deployment.
|
|
30
30
|
|
|
31
|
-
The helper intentionally does not manufacture `com.docker.compose.config-hash`. Compose 2
|
|
32
|
-
network with the correct project/network labels and no hash. A wrong hash can trigger
|
|
33
|
-
Its own fingerprint protects replay, including configuration changes.
|
|
34
|
-
|
|
31
|
+
The helper intentionally does not manufacture `com.docker.compose.config-hash`. Compose 2 and Compose 5
|
|
32
|
+
accept a network with the correct project/network labels and no hash. A wrong hash can trigger
|
|
33
|
+
replacement. Its own fingerprint protects replay, including configuration changes. New-network
|
|
34
|
+
preparation admits Compose 2.x and 5.x; any other major version refuses with
|
|
35
|
+
`compose_version_unsupported` until it has been reviewed. Existing selected networks are preserved
|
|
36
|
+
under every Compose version because preservation never allocates.
|
|
37
|
+
|
|
38
|
+
Compose 5 review (2026-09-17, docker/compose tags v5.0.0, v5.3.1 and v5.5.1 against v2.40.3):
|
|
39
|
+
`resolveOrCreateNetwork` in `pkg/compose/create.go` at v5.0.0 and v5.3.1 returns the inspected
|
|
40
|
+
network when its `com.docker.compose.network` label matches and its config-hash label is empty or
|
|
41
|
+
equal (`hash == "" || hash == expected`), the same branch as v2.40.3; the remaining differences are
|
|
42
|
+
Docker client types, IPAM parsing and event emission. v5.5.1 moved reuse into `reconcileNetworks`
|
|
43
|
+
in `pkg/compose/reconcile.go`, whose observed state is scoped by the project label and which leaves a
|
|
44
|
+
network with no recorded hash untouched (`observed.ConfigHash == ""`). docker/compose carries no v3 or
|
|
45
|
+
v4 tags, and Compose 1 (`docker-compose`) stays unreviewed.
|
|
35
46
|
|
|
36
47
|
## Address-space proof
|
|
37
48
|
|