Skip to content

Commit 15d9872

Browse files
committed
Merge branch 'master' into issue_2724_enums_as_strings
2 parents b3cec13 + 5c8450f commit 15d9872

72 files changed

Lines changed: 2155 additions & 298 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ jobs:
126126
runs-on: ${{ matrix.os }}
127127
strategy:
128128
matrix:
129-
os: [ubuntu-latest, macos-latest]
129+
os: [ubuntu-latest]
130130
steps:
131131
- uses: actions/checkout@v4
132132
- name: Set up Go
@@ -167,9 +167,9 @@ jobs:
167167
strategy:
168168
matrix:
169169
include:
170-
- { goos: "linux", goarch: "amd64" }
171-
- { goos: "linux", goarch: "arm64" }
172-
runs-on: ubuntu-latest
170+
- { runs-on: "ubuntu-24.04", goos: "linux", goarch: "amd64" }
171+
- { runs-on: "ubuntu-24.04-arm", goos: "linux", goarch: "arm64" }
172+
runs-on: ${{ matrix.runs-on }}
173173
steps:
174174
- uses: actions/checkout@v4
175175
- name: Set up Go
@@ -181,11 +181,10 @@ jobs:
181181
env:
182182
GOOS: ${{ matrix.goos }}
183183
GOARCH: ${{ matrix.goarch }}
184-
CGO_ENABLED: 0
185184
run: |
186185
VERSION=$((${{ github.run_number }} + ${{ env.BUILD_INCREMENT }}))
187-
go build -ldflags "-X 'main.Version=$VERSION' -extldflags '-static'" -o dstack-runner-$GOOS-$GOARCH $REPO_NAME/runner/cmd/runner
188-
go build -ldflags "-X 'main.Version=$VERSION' -extldflags '-static'" -o dstack-shim-$GOOS-$GOARCH $REPO_NAME/runner/cmd/shim
186+
CGO_ENABLED=0 go build -ldflags "-X 'main.Version=$VERSION' -extldflags '-static'" -o dstack-runner-$GOOS-$GOARCH $REPO_NAME/runner/cmd/runner
187+
CGO_ENABLED=1 go build -ldflags "-X 'main.Version=$VERSION'" -o dstack-shim-$GOOS-$GOARCH $REPO_NAME/runner/cmd/shim
189188
echo $VERSION
190189
- uses: actions/upload-artifact@v4
191190
with:

.github/workflows/release.yml

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ env:
1515
PIP_PROGRESS_BAR: off
1616

1717
jobs:
18-
python-lint:
18+
code-lint:
1919
runs-on: ubuntu-latest
2020
steps:
2121
- uses: actions/checkout@v4
@@ -48,7 +48,7 @@ jobs:
4848
path: frontend/build
4949

5050
python-test:
51-
needs: [python-lint, frontend-build]
51+
needs: [code-lint, frontend-build]
5252
runs-on: ${{ matrix.os }}
5353
strategy:
5454
matrix:
@@ -118,9 +118,9 @@ jobs:
118118
strategy:
119119
matrix:
120120
include:
121-
- { goos: "linux", goarch: "amd64" }
122-
- { goos: "linux", goarch: "arm64" }
123-
runs-on: ubuntu-latest
121+
- { runs-on: "ubuntu-24.04", goos: "linux", goarch: "amd64" }
122+
- { runs-on: "ubuntu-24.04-arm", goos: "linux", goarch: "arm64" }
123+
runs-on: ${{ matrix.runs-on }}
124124
steps:
125125
- uses: actions/checkout@v4
126126
- name: Set up Go
@@ -132,11 +132,10 @@ jobs:
132132
env:
133133
GOOS: ${{ matrix.goos }}
134134
GOARCH: ${{ matrix.goarch }}
135-
CGO_ENABLED: 0
136135
run: |
137136
VERSION=${GITHUB_REF#refs/tags/}
138-
go build -ldflags "-X 'main.Version=$VERSION' -extldflags '-static'" -o dstack-runner-$GOOS-$GOARCH $REPO_NAME/runner/cmd/runner
139-
go build -ldflags "-X 'main.Version=$VERSION' -extldflags '-static'" -o dstack-shim-$GOOS-$GOARCH $REPO_NAME/runner/cmd/shim
137+
CGO_ENABLED=0 go build -ldflags "-X 'main.Version=$VERSION' -extldflags '-static'" -o dstack-runner-$GOOS-$GOARCH $REPO_NAME/runner/cmd/runner
138+
CGO_ENABLED=1 go build -ldflags "-X 'main.Version=$VERSION'" -o dstack-shim-$GOOS-$GOARCH $REPO_NAME/runner/cmd/shim
140139
- uses: actions/upload-artifact@v4
141140
with:
142141
name: dstack-runner-${{ matrix.goos }}-${{ matrix.goarch }}

docs/assets/stylesheets/landing.css

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,8 @@
241241
.md-typeset .md-button {
242242
margin-top: 1.2rem;
243243
margin-bottom: 1.5rem;
244-
font-size: 20px;
245-
font-weight: 400 !important;
244+
font-size: 19px;
245+
font-weight: 300 !important;
246246
text-align: center;
247247
border-radius: 3px;
248248
border-color: transparent;
@@ -298,7 +298,7 @@
298298
background: rgba(0, 0, 0, 0.87);
299299
border: 1.5px solid rgba(0, 0, 0, 0.87);
300300
border-radius: 3px;
301-
font-weight: 400 !important;
301+
font-weight: 300 !important;
302302
/*margin-right: 10px;*/
303303
}
304304

@@ -337,11 +337,11 @@
337337
}
338338

339339
.md-button--primary.external:after, .md-button--primary.sky.external:after {
340-
content: url('data:image/svg+xml,<svg fill="white" xmlns="http://www.w3.org/2000/svg" width="21px" height="21px" viewBox="0 0 16 16"><polygon points="5 4.31 5 5.69 9.33 5.69 2.51 12.51 3.49 13.49 10.31 6.67 10.31 11 11.69 11 11.69 4.31 5 4.31" data-v-e1bdab2c=""></polygon></svg>');
340+
content: url('data:image/svg+xml,<svg fill="white" xmlns="http://www.w3.org/2000/svg" width="19px" height="19px" viewBox="0 0 16 16"><polygon points="5 4.31 5 5.69 9.33 5.69 2.51 12.51 3.49 13.49 10.31 6.67 10.31 11 11.69 11 11.69 4.31 5 4.31" data-v-e1bdab2c=""></polygon></svg>');
341341
line-height: 14px;
342342
margin-left: 5px;
343343
position: relative;
344-
top: 2px;
344+
top: 2.5px;
345345
margin-right: -7px;
346346
}
347347

@@ -817,6 +817,10 @@
817817
color: #e37cff;
818818
}
819819

820+
#get-started-code-snippet[data-termynal] {
821+
font-size: 14px !important;
822+
}
823+
820824
/*.tx-landing__trusted_by*/ [data-termynal] {
821825
font-size: 15px;
822826
}

docs/docs/concepts/backends.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,34 @@ gcloud projects list --format="json(projectId)"
579579
Using private subnets assumes that both the `dstack` server and users can access the configured VPC's private subnets.
580580
Additionally, [Cloud NAT](https://cloud.google.com/nat/docs/overview) must be configured to provide access to external resources for provisioned instances.
581581

582+
## Hot Aisle
583+
584+
Log in to the SSH TUI as described in the [Hot Aisle Quick Start :material-arrow-top-right-thin:{ .external }](https://hotaisle.xyz/quick-start/).
585+
Create a new team and generate an API key for the member in the team.
586+
587+
Then, go ahead and configure the backend:
588+
589+
<div editor-title="~/.dstack/server/config.yml">
590+
591+
```yaml
592+
projects:
593+
- name: main
594+
backends:
595+
- type: hotaisle
596+
team_handle: hotaisle-team-handle
597+
creds:
598+
type: api_key
599+
api_key: 9c27a4bb7a8e472fae12ab34.3f2e3c1db75b9a0187fd2196c6b3e56d2b912e1c439ba08d89e7b6fcd4ef1d3f
600+
```
601+
602+
</div>
603+
604+
??? info "Required permissions"
605+
The API key must have the following roles assigned:
606+
607+
* **Owner role for the user** - Required for creating and managing SSH keys
608+
* **Operator role for the team** - Required for managing virtual machines within the team
609+
582610
## Lambda
583611
584612
Log into your [Lambda Cloud :material-arrow-top-right-thin:{ .external }](https://lambdalabs.com/service/gpu-cloud) account, click API keys in the sidebar, and then click the `Generate API key`

docs/docs/concepts/services.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,34 @@ $ dstack ps --verbose
230230

231231
If multiple probes are configured for the service, their statuses are displayed in the order in which the probes appear in the configuration.
232232

233-
Probes are executed for each service replica while the replica is `running`. Probe statuses do not affect how `dstack` handles replicas, except during [rolling deployments](#rolling-deployment).
233+
Probes are executed for each service replica while the replica is `running`. A probe execution is considered successful if the replica responds with a `2xx` status code. Probe statuses do not affect how `dstack` handles replicas, except during [rolling deployments](#rolling-deployment).
234+
235+
??? info "HTTP request configuration"
236+
You can configure the HTTP request method, headers, and other properties. To include secret values in probe requests, use environment variable interpolation, which is enabled for the `url`, `headers[i].value`, and `body` properties.
237+
238+
<div editor-title="service.dstack.yml">
239+
240+
```yaml
241+
type: service
242+
name: my-service
243+
port: 80
244+
image: my-app:latest
245+
env:
246+
- PROBES_API_KEY
247+
probes:
248+
- type: http
249+
method: post
250+
url: /check-health
251+
headers:
252+
- name: X-API-Key
253+
value: ${{ env.PROBES_API_KEY }}
254+
- name: Content-Type
255+
value: application/json
256+
body: '{"level": 2}'
257+
timeout: 20s
258+
```
259+
260+
</div>
234261

235262
See the [reference](../reference/dstack.yml/service.md#probes) for more probe configuration options.
236263

docs/docs/reference/dstack.yml/service.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,17 @@ The `service` configuration type allows running [services](../../concepts/servic
116116
type:
117117
required: true
118118

119+
##### `probes[n].headers`
120+
121+
###### `probes[n].headers[m]`
122+
123+
#SCHEMA# dstack._internal.core.models.configurations.HTTPHeaderSpec
124+
overrides:
125+
show_root_heading: false
126+
type:
127+
required: true
128+
129+
119130
### `retry`
120131

121132
#SCHEMA# dstack._internal.core.models.profiles.ProfileRetry

docs/docs/reference/environment-variables.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,10 @@ For more details on the options below, refer to the [server deployment](../guide
126126
- `DSTACK_SERVER_BACKGROUND_PROCESSING_DISABLED`{ #DSTACK_SERVER_BACKGROUND_PROCESSING_DISABLED } - Disables background processing if set to any value. Useful to run only web frontend and API server.
127127
- `DSTACK_SERVER_MAX_PROBES_PER_JOB`{ #DSTACK_SERVER_MAX_PROBES_PER_JOB } - Maximum number of probes allowed in a run configuration. Validated at apply time.
128128
- `DSTACK_SERVER_MAX_PROBE_TIMEOUT`{ #DSTACK_SERVER_MAX_PROBE_TIMEOUT } - Maximum allowed timeout for a probe. Validated at apply time.
129+
- `DSTACK_SERVER_METRICS_RUNNING_TTL_SECONDS`{ #DSTACK_SERVER_METRICS_RUNNING_TTL_SECONDS } – Maximum age of metrics samples for running jobs.
130+
- `DSTACK_SERVER_METRICS_FINISHED_TTL_SECONDS`{ #DSTACK_SERVER_METRICS_FINISHED_TTL_SECONDS } – Maximum age of metrics samples for finished jobs.
131+
- `DSTACK_SERVER_INSTANCE_HEALTH_TTL_SECONDS`{ #DSTACK_SERVER_INSTANCE_HEALTH_TTL_SECONDS } – Maximum age of instance health checks.
132+
- `DSTACK_SERVER_INSTANCE_HEALTH_MIN_COLLECT_INTERVAL_SECONDS`{ #DSTACK_SERVER_INSTANCE_HEALTH_MIN_COLLECT_INTERVAL_SECONDS } – Minimum time interval between consecutive health checks of the same instance.
129133

130134
??? info "Internal environment variables"
131135
The following environment variables are intended for development purposes:

docs/docs/reference/server/config.yml.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ to configure [backends](../../concepts/backends.md) and other [sever-level setti
1515
overrides:
1616
show_root_heading: false
1717
backends:
18-
type: 'Union[AWSBackendConfigWithCreds, AzureBackendConfigWithCreds, GCPBackendConfigWithCreds, LambdaBackendConfigWithCreds, NebiusBackendConfigWithCreds, RunpodBackendConfigWithCreds, VastAIBackendConfigWithCreds, KubernetesConfig]'
18+
type: 'Union[AWSBackendConfigWithCreds, AzureBackendConfigWithCreds, GCPBackendConfigWithCreds, HotAisleBackendConfigWithCreds, LambdaBackendConfigWithCreds, NebiusBackendConfigWithCreds, RunpodBackendConfigWithCreds, VastAIBackendConfigWithCreds, KubernetesConfig]'
1919

2020
#### `projects[n].backends` { #backends data-toc-label="backends" }
2121

@@ -126,6 +126,23 @@ to configure [backends](../../concepts/backends.md) and other [sever-level setti
126126
type:
127127
required: true
128128

129+
##### `projects[n].backends[type=hotaisle]` { #hotaisle data-toc-label="hotaisle" }
130+
131+
#SCHEMA# dstack._internal.core.backends.hotaisle.models.HotAisleBackendConfigWithCreds
132+
overrides:
133+
show_root_heading: false
134+
type:
135+
required: true
136+
item_id_prefix: hotaisle-
137+
138+
###### `projects[n].backends[type=hotaisle].creds` { #hotaisle-creds data-toc-label="creds" }
139+
140+
#SCHEMA# dstack._internal.core.backends.hotaisle.models.HotAisleAPIKeyCreds
141+
overrides:
142+
show_root_heading: false
143+
type:
144+
required: true
145+
129146
##### `projects[n].backends[type=lambda]` { #lambda data-toc-label="lambda" }
130147

131148
#SCHEMA# dstack._internal.core.backends.lambdalabs.models.LambdaBackendConfigWithCreds

docs/overrides/header-2.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@
6161
{% endif %}-->
6262

6363
<div class="md-header__buttons">
64-
<a href="https://github.com/dstackai/dstack" target="_blank" class="md-button md-button--primary github external">GitHub</a>
65-
<!-- <a href="https://discord.gg/u8SmfwPpMd" target="_blank" class="md-button md-button--primary sky discord external">Discord</a> -->
64+
<a href="https://github.com/dstackai/dstack" target="_blank" class="md-button md-button--primary github">GitHub</a>
65+
<a href="https://sky.dstack.ai" target="_blank" class="md-button md-button--primary sky external">Sign up</a>
6666
</div>
6767
</nav>
6868
{% if "navigation.tabs.sticky" in features %}

0 commit comments

Comments
 (0)