superset-showtime 0.2.7__tar.gz → 0.2.8__tar.gz
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.
Potentially problematic release.
This version of superset-showtime might be problematic. Click here for more details.
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/.claude/settings.local.json +3 -1
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/PKG-INFO +1 -1
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/__init__.py +1 -1
- superset_showtime-0.2.8/showtime/core/github_messages.py +227 -0
- superset_showtime-0.2.7/showtime/core/github_messages.py +0 -198
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/.gitignore +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/.pre-commit-config.yaml +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/CLAUDE.md +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/Makefile +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/README.md +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/dev-setup.sh +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/pypi-push.sh +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/pyproject.toml +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/requirements-dev.txt +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/requirements.txt +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/__main__.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/cli.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/commands/__init__.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/commands/start.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/core/__init__.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/core/aws.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/core/circus.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/core/emojis.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/core/github.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/core/label_colors.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/showtime/data/ecs-task-definition.json +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/tests/__init__.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/tests/unit/__init__.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/tests/unit/test_circus.py +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/uv.lock +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/workflows-reference/showtime-cleanup.yml +0 -0
- {superset_showtime-0.2.7 → superset_showtime-0.2.8}/workflows-reference/showtime-trigger.yml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: superset-showtime
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.8
|
|
4
4
|
Summary: 🎪 Apache Superset ephemeral environment management with circus tent emoji state tracking
|
|
5
5
|
Project-URL: Homepage, https://github.com/apache/superset-showtime
|
|
6
6
|
Project-URL: Documentation, https://superset-showtime.readthedocs.io/
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"""
|
|
2
|
+
🎪 GitHub PR comment templates and messaging utilities
|
|
3
|
+
|
|
4
|
+
Centralized PR comment functions with type hints and clean formatting.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import textwrap
|
|
9
|
+
from typing import Dict, List, Optional
|
|
10
|
+
|
|
11
|
+
from .circus import Show
|
|
12
|
+
|
|
13
|
+
# AWS Console URL constants
|
|
14
|
+
BASE_AWS_URL = "https://us-west-2.console.aws.amazon.com/ecs/v2/clusters/superset-ci/services"
|
|
15
|
+
AWS_REGION = "us-west-2"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def get_github_actor() -> str:
|
|
19
|
+
"""Get current GitHub actor with fallback"""
|
|
20
|
+
return os.getenv("GITHUB_ACTOR", "unknown")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def get_github_workflow_url() -> str:
|
|
24
|
+
"""Get current GitHub Actions workflow URL"""
|
|
25
|
+
return (
|
|
26
|
+
os.getenv("GITHUB_SERVER_URL", "https://github.com")
|
|
27
|
+
+ f"/{os.getenv('GITHUB_REPOSITORY', 'repo')}/actions/runs/{os.getenv('GITHUB_RUN_ID', 'run')}"
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def get_showtime_footer() -> str:
|
|
32
|
+
"""Get consistent Showtime footer for PR comments"""
|
|
33
|
+
return "*Powered by [Superset Showtime](https://github.com/mistercrunch/superset-showtime)*"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _create_header_links(sha: str) -> Dict[str, str]:
|
|
37
|
+
"""Create standard header links for comments
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
sha: Commit SHA for the environment
|
|
41
|
+
|
|
42
|
+
Returns:
|
|
43
|
+
Dict with showtime_link, gha_link, commit_link
|
|
44
|
+
"""
|
|
45
|
+
from .circus import short_sha
|
|
46
|
+
|
|
47
|
+
repo_path = get_repo_path()
|
|
48
|
+
return {
|
|
49
|
+
"showtime_link": "[Showtime](https://github.com/mistercrunch/superset-showtime)",
|
|
50
|
+
"gha_link": f"[GHA]({get_github_workflow_url()})",
|
|
51
|
+
"commit_link": f"[{short_sha(sha)}]({get_commit_url(repo_path, sha)})",
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _format_comment(header: str, bullets: List[str]) -> str:
|
|
56
|
+
"""Format comment with header and bullet points
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
header: Comment header text
|
|
60
|
+
bullets: List of bullet point strings (without •)
|
|
61
|
+
"""
|
|
62
|
+
bullet_text = "\n".join(f"• {bullet}" for bullet in bullets)
|
|
63
|
+
return textwrap.dedent(
|
|
64
|
+
f"""
|
|
65
|
+
{header}
|
|
66
|
+
|
|
67
|
+
{bullet_text}
|
|
68
|
+
"""
|
|
69
|
+
).strip()
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def get_commit_url(repo_path: str, sha: str) -> str:
|
|
73
|
+
"""Get GitHub commit URL
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
repo_path: Repository path like 'apache/superset'
|
|
77
|
+
sha: Full or short commit SHA
|
|
78
|
+
"""
|
|
79
|
+
return f"https://github.com/{repo_path}/commit/{sha}"
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def get_repo_path() -> str:
|
|
83
|
+
"""Get current repository path from environment"""
|
|
84
|
+
return os.getenv("GITHUB_REPOSITORY", "apache/superset")
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def get_aws_console_urls(service_name: str) -> Dict[str, str]:
|
|
88
|
+
"""Get AWS Console URLs for a service"""
|
|
89
|
+
return {
|
|
90
|
+
"logs": f"{BASE_AWS_URL}/{service_name}/logs?region={AWS_REGION}",
|
|
91
|
+
"service": f"{BASE_AWS_URL}/{service_name}?region={AWS_REGION}",
|
|
92
|
+
"health": f"{BASE_AWS_URL}/{service_name}/health?region={AWS_REGION}",
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
# Typed comment functions with clear parameter requirements
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def start_comment(show: Show) -> str:
|
|
100
|
+
"""Create environment start comment
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
show: Show object with SHA and other metadata
|
|
104
|
+
"""
|
|
105
|
+
links = _create_header_links(show.sha)
|
|
106
|
+
return f"🎪 {links['showtime_link']} is building environment on {links['gha_link']} for {links['commit_link']}"
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def success_comment(show: Show, feature_count: Optional[int] = None) -> str:
|
|
110
|
+
"""Environment success comment
|
|
111
|
+
|
|
112
|
+
Args:
|
|
113
|
+
show: Show object with SHA, IP, TTL, etc.
|
|
114
|
+
feature_count: Number of enabled feature flags (optional)
|
|
115
|
+
"""
|
|
116
|
+
links = _create_header_links(show.sha)
|
|
117
|
+
header = f"🎪 {links['showtime_link']} deployed environment on {links['gha_link']} for {links['commit_link']}"
|
|
118
|
+
|
|
119
|
+
bullets = [
|
|
120
|
+
f"**Environment:** http://{show.ip}:8080 (admin/admin)",
|
|
121
|
+
f"**Lifetime:** {show.ttl} auto-cleanup",
|
|
122
|
+
]
|
|
123
|
+
|
|
124
|
+
if feature_count:
|
|
125
|
+
bullets.insert(-1, f"**Features:** {feature_count} enabled")
|
|
126
|
+
|
|
127
|
+
bullets.append("**Updates:** New commits create fresh environments automatically")
|
|
128
|
+
|
|
129
|
+
return _format_comment(header, bullets)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def failure_comment(show: Show, error: str) -> str:
|
|
133
|
+
"""Environment failure comment
|
|
134
|
+
|
|
135
|
+
Args:
|
|
136
|
+
show: Show object with SHA and metadata
|
|
137
|
+
error: Error message describing what went wrong
|
|
138
|
+
"""
|
|
139
|
+
links = _create_header_links(show.sha)
|
|
140
|
+
header = f"🎪 {links['showtime_link']} failed building environment on {links['gha_link']} for {links['commit_link']}"
|
|
141
|
+
|
|
142
|
+
bullets = [
|
|
143
|
+
f"**Error:** {error}",
|
|
144
|
+
"**Action:** Check logs and try again with `🎪 ⚡ showtime-trigger-start`",
|
|
145
|
+
]
|
|
146
|
+
|
|
147
|
+
return _format_comment(header, bullets)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def cleanup_comment(show: Show) -> str:
|
|
151
|
+
"""Environment cleanup comment
|
|
152
|
+
|
|
153
|
+
Args:
|
|
154
|
+
show: Show object with SHA and metadata
|
|
155
|
+
"""
|
|
156
|
+
links = _create_header_links(show.sha)
|
|
157
|
+
header = f"🎪 {links['showtime_link']} cleaned up environment on {links['gha_link']} for {links['commit_link']}"
|
|
158
|
+
|
|
159
|
+
bullets = [
|
|
160
|
+
"**Resources:** ECS service and ECR image deleted",
|
|
161
|
+
"**Cost:** No further charges",
|
|
162
|
+
"**Action:** Add `🎪 ⚡ showtime-trigger-start` to create new environment",
|
|
163
|
+
]
|
|
164
|
+
|
|
165
|
+
return _format_comment(header, bullets)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def rolling_start_comment(current_show: Show, new_sha: str) -> str:
|
|
169
|
+
"""Rolling update start comment
|
|
170
|
+
|
|
171
|
+
Args:
|
|
172
|
+
current_show: Current Show object with SHA and IP
|
|
173
|
+
new_sha: New environment SHA (full SHA, will be truncated)
|
|
174
|
+
"""
|
|
175
|
+
from .circus import short_sha
|
|
176
|
+
|
|
177
|
+
links = _create_header_links(new_sha)
|
|
178
|
+
header = f"🎪 {links['showtime_link']} is updating {current_show.short_sha}→{short_sha(new_sha)} on {links['gha_link']} for {links['commit_link']}"
|
|
179
|
+
|
|
180
|
+
bullets = [
|
|
181
|
+
f"**Current:** http://{current_show.ip}:8080 (still active)",
|
|
182
|
+
"**Update:** Zero-downtime blue-green deployment",
|
|
183
|
+
]
|
|
184
|
+
|
|
185
|
+
return _format_comment(header, bullets)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def rolling_success_comment(old_show: Show, new_show: Show) -> str:
|
|
189
|
+
"""Rolling update success comment
|
|
190
|
+
|
|
191
|
+
Args:
|
|
192
|
+
old_show: Previous Show object
|
|
193
|
+
new_show: New Show object with updated IP, SHA, TTL
|
|
194
|
+
"""
|
|
195
|
+
links = _create_header_links(new_show.sha)
|
|
196
|
+
header = f"🎪 {links['showtime_link']} updated environment {old_show.short_sha}→{new_show.short_sha} on {links['gha_link']} for {links['commit_link']}"
|
|
197
|
+
|
|
198
|
+
bullets = [
|
|
199
|
+
f"**Environment:** http://{new_show.ip}:8080 (admin/admin)",
|
|
200
|
+
f"**Lifetime:** {new_show.ttl} auto-cleanup",
|
|
201
|
+
"**Deployment:** Zero-downtime blue-green",
|
|
202
|
+
"**Updates:** New commits create fresh environments automatically",
|
|
203
|
+
]
|
|
204
|
+
|
|
205
|
+
return _format_comment(header, bullets)
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def rolling_failure_comment(current_show: Show, new_sha: str, error: str) -> str:
|
|
209
|
+
"""Rolling update failure comment
|
|
210
|
+
|
|
211
|
+
Args:
|
|
212
|
+
current_show: Current Show object (still active)
|
|
213
|
+
new_sha: Failed new environment SHA (full SHA, will be truncated)
|
|
214
|
+
error: Error message describing what went wrong
|
|
215
|
+
"""
|
|
216
|
+
from .circus import short_sha
|
|
217
|
+
|
|
218
|
+
links = _create_header_links(new_sha)
|
|
219
|
+
header = f"🎪 {links['showtime_link']} failed updating to {short_sha(new_sha)} on {links['gha_link']} for {links['commit_link']}"
|
|
220
|
+
|
|
221
|
+
bullets = [
|
|
222
|
+
f"**Error:** {error}",
|
|
223
|
+
f"**Current:** http://{current_show.ip}:8080 (still active)",
|
|
224
|
+
"**Action:** Check logs and try again with `🎪 ⚡ showtime-trigger-start`",
|
|
225
|
+
]
|
|
226
|
+
|
|
227
|
+
return _format_comment(header, bullets)
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
🎪 GitHub PR comment templates and messaging utilities
|
|
3
|
-
|
|
4
|
-
Centralized PR comment functions with type hints and clean formatting.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
import os
|
|
8
|
-
import textwrap
|
|
9
|
-
from typing import Dict, Optional
|
|
10
|
-
|
|
11
|
-
# AWS Console URL constants
|
|
12
|
-
BASE_AWS_URL = "https://us-west-2.console.aws.amazon.com/ecs/v2/clusters/superset-ci/services"
|
|
13
|
-
AWS_REGION = "us-west-2"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def get_github_actor() -> str:
|
|
17
|
-
"""Get current GitHub actor with fallback"""
|
|
18
|
-
return os.getenv("GITHUB_ACTOR", "unknown")
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def get_github_workflow_url() -> str:
|
|
22
|
-
"""Get current GitHub Actions workflow URL"""
|
|
23
|
-
return (
|
|
24
|
-
os.getenv("GITHUB_SERVER_URL", "https://github.com")
|
|
25
|
-
+ f"/{os.getenv('GITHUB_REPOSITORY', 'repo')}/actions/runs/{os.getenv('GITHUB_RUN_ID', 'run')}"
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def get_showtime_footer() -> str:
|
|
30
|
-
"""Get consistent Showtime footer for PR comments"""
|
|
31
|
-
return "*Powered by [Superset Showtime](https://github.com/mistercrunch/superset-showtime)*"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
def get_aws_console_urls(service_name: str) -> Dict[str, str]:
|
|
35
|
-
"""Get AWS Console URLs for a service"""
|
|
36
|
-
return {
|
|
37
|
-
"logs": f"{BASE_AWS_URL}/{service_name}/logs?region={AWS_REGION}",
|
|
38
|
-
"service": f"{BASE_AWS_URL}/{service_name}?region={AWS_REGION}",
|
|
39
|
-
"health": f"{BASE_AWS_URL}/{service_name}/health?region={AWS_REGION}",
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
# Typed comment functions with clear parameter requirements
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def start_comment(show) -> str:
|
|
47
|
-
"""Create environment start comment
|
|
48
|
-
|
|
49
|
-
Args:
|
|
50
|
-
show: Show object with SHA and other metadata
|
|
51
|
-
"""
|
|
52
|
-
return textwrap.dedent(
|
|
53
|
-
f"""
|
|
54
|
-
🎪 @{get_github_actor()} Creating ephemeral environment for commit `{show.short_sha}`
|
|
55
|
-
|
|
56
|
-
**Action:** [View workflow]({get_github_workflow_url()})
|
|
57
|
-
**Environment:** `{show.short_sha}`
|
|
58
|
-
**Powered by:** [Superset Showtime](https://github.com/mistercrunch/superset-showtime)
|
|
59
|
-
|
|
60
|
-
*Building and deploying... Watch the labels for progress updates.*
|
|
61
|
-
"""
|
|
62
|
-
).strip()
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def success_comment(show, feature_count: Optional[int] = None) -> str:
|
|
66
|
-
"""Environment success comment
|
|
67
|
-
|
|
68
|
-
Args:
|
|
69
|
-
show: Show object with SHA, IP, TTL, etc.
|
|
70
|
-
feature_count: Number of enabled feature flags (optional)
|
|
71
|
-
"""
|
|
72
|
-
feature_line = f"**Feature flags:** {feature_count} enabled\n" if feature_count else ""
|
|
73
|
-
|
|
74
|
-
return textwrap.dedent(
|
|
75
|
-
f"""
|
|
76
|
-
🎪 @{get_github_actor()} Environment ready at **http://{show.ip}:8080**
|
|
77
|
-
|
|
78
|
-
**Environment:** `{show.short_sha}`
|
|
79
|
-
**Credentials:** admin / admin
|
|
80
|
-
**TTL:** {show.ttl} (auto-cleanup)
|
|
81
|
-
{feature_line}
|
|
82
|
-
**Configuration:** Modify feature flags in your PR code for new SHA
|
|
83
|
-
**Updates:** Environment updates automatically on new commits
|
|
84
|
-
|
|
85
|
-
{get_showtime_footer()}
|
|
86
|
-
"""
|
|
87
|
-
).strip()
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def failure_comment(show, error: str) -> str:
|
|
91
|
-
"""Environment failure comment
|
|
92
|
-
|
|
93
|
-
Args:
|
|
94
|
-
show: Show object with SHA and metadata
|
|
95
|
-
error: Error message describing what went wrong
|
|
96
|
-
"""
|
|
97
|
-
return textwrap.dedent(
|
|
98
|
-
f"""
|
|
99
|
-
🎪 @{get_github_actor()} Environment creation failed.
|
|
100
|
-
|
|
101
|
-
**Error:** {error}
|
|
102
|
-
**Environment:** `{show.short_sha}`
|
|
103
|
-
|
|
104
|
-
Please check the logs and try again.
|
|
105
|
-
|
|
106
|
-
{get_showtime_footer()}
|
|
107
|
-
"""
|
|
108
|
-
).strip()
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
def cleanup_comment(show) -> str:
|
|
112
|
-
"""Environment cleanup comment
|
|
113
|
-
|
|
114
|
-
Args:
|
|
115
|
-
show: Show object with SHA and metadata
|
|
116
|
-
"""
|
|
117
|
-
return textwrap.dedent(
|
|
118
|
-
f"""
|
|
119
|
-
🎪 @{get_github_actor()} Environment `{show.short_sha}` cleaned up
|
|
120
|
-
|
|
121
|
-
**AWS Resources:** ECS service and ECR image deleted
|
|
122
|
-
**Cost Impact:** No further charges
|
|
123
|
-
|
|
124
|
-
Add `🎪 ⚡ showtime-trigger-start` to create a new environment.
|
|
125
|
-
|
|
126
|
-
{get_showtime_footer()}
|
|
127
|
-
"""
|
|
128
|
-
).strip()
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
def rolling_start_comment(current_show, new_sha: str) -> str:
|
|
132
|
-
"""Rolling update start comment
|
|
133
|
-
|
|
134
|
-
Args:
|
|
135
|
-
current_show: Current Show object with SHA and IP
|
|
136
|
-
new_sha: New environment SHA (full SHA, will be truncated)
|
|
137
|
-
"""
|
|
138
|
-
from .circus import short_sha
|
|
139
|
-
|
|
140
|
-
return textwrap.dedent(
|
|
141
|
-
f"""
|
|
142
|
-
🎪 @{get_github_actor()} Detected new commit - starting rolling update `{current_show.short_sha}` → `{short_sha(new_sha)}`
|
|
143
|
-
|
|
144
|
-
**Action:** Zero-downtime blue-green deployment
|
|
145
|
-
**Progress:** [View workflow]({get_github_workflow_url()})
|
|
146
|
-
**Current:** `{current_show.short_sha}` at http://{current_show.ip}:8080
|
|
147
|
-
**New:** `{short_sha(new_sha)}` (building...)
|
|
148
|
-
|
|
149
|
-
*New environment will replace current one automatically.*
|
|
150
|
-
"""
|
|
151
|
-
).strip()
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
def rolling_success_comment(old_show, new_show) -> str:
|
|
155
|
-
"""Rolling update success comment
|
|
156
|
-
|
|
157
|
-
Args:
|
|
158
|
-
old_show: Previous Show object
|
|
159
|
-
new_show: New Show object with updated IP, SHA, TTL
|
|
160
|
-
"""
|
|
161
|
-
return textwrap.dedent(
|
|
162
|
-
f"""
|
|
163
|
-
🎪 @{get_github_actor()} Rolling update complete! `{old_show.short_sha}` → `{new_show.short_sha}`
|
|
164
|
-
|
|
165
|
-
**New Environment:** **http://{new_show.ip}:8080**
|
|
166
|
-
**Deployment:** Zero-downtime blue-green deployment
|
|
167
|
-
**Credentials:** admin / admin
|
|
168
|
-
**TTL:** {new_show.ttl} (auto-cleanup)
|
|
169
|
-
|
|
170
|
-
Your latest changes are now live.
|
|
171
|
-
|
|
172
|
-
{get_showtime_footer()}
|
|
173
|
-
"""
|
|
174
|
-
).strip()
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
def rolling_failure_comment(current_show, new_sha: str, error: str) -> str:
|
|
178
|
-
"""Rolling update failure comment
|
|
179
|
-
|
|
180
|
-
Args:
|
|
181
|
-
current_show: Current Show object (still active)
|
|
182
|
-
new_sha: Failed new environment SHA (full SHA, will be truncated)
|
|
183
|
-
error: Error message describing what went wrong
|
|
184
|
-
"""
|
|
185
|
-
from .circus import short_sha
|
|
186
|
-
|
|
187
|
-
return textwrap.dedent(
|
|
188
|
-
f"""
|
|
189
|
-
🎪 @{get_github_actor()} Rolling update failed `{current_show.short_sha}` → `{short_sha(new_sha)}`
|
|
190
|
-
|
|
191
|
-
**Error:** {error}
|
|
192
|
-
**Current:** Environment `{current_show.short_sha}` remains active at http://{current_show.ip}:8080
|
|
193
|
-
|
|
194
|
-
Please check the logs and try again with `🎪 ⚡ showtime-trigger-start`.
|
|
195
|
-
|
|
196
|
-
{get_showtime_footer()}
|
|
197
|
-
"""
|
|
198
|
-
).strip()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{superset_showtime-0.2.7 → superset_showtime-0.2.8}/workflows-reference/showtime-cleanup.yml
RENAMED
|
File without changes
|
{superset_showtime-0.2.7 → superset_showtime-0.2.8}/workflows-reference/showtime-trigger.yml
RENAMED
|
File without changes
|