- [Docs]: Added a separate examples page (WIP) #1299
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- 'master' | |
pull_request: | |
branches: | |
- 'master' | |
workflow_dispatch: | |
env: | |
IMAGE_VERSION: "0.3" | |
jobs: | |
python-lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: 3.11 | |
- name: Run isort | |
uses: isort/isort-action@master | |
with: | |
isort-version: 5.12.0 | |
configuration: "--settings-file pyconfig.toml --check-only --diff" | |
sort-paths: "cli" | |
- name: Run black | |
uses: psf/black@stable | |
with: | |
options: "--config pyconfig.toml --check --verbose" | |
src: "./cli" | |
version: "~= 22.0" | |
cli-test-master: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ macos-latest, ubuntu-latest, windows-latest ] | |
python-version: [ 3.7, 3.8, 3.9, "3.10", 3.11 ] | |
defaults: | |
run: | |
working-directory: cli | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
pip install -r requirements_dev.txt | |
- name: Run pytest | |
run: | | |
mkdir -p dstack/_internal/hub/statics | |
pytest tests/ --ignore=tests/integration/ | |
build-hub-master: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: hub | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Node 18 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Install packages | |
run: npm install | |
- name: Build dist | |
run: npm run build | |
- name: Upload dist | |
uses: actions/upload-artifact@v1 | |
with: | |
name: hub-dist | |
path: hub/build | |
cli-upload-master: | |
runs-on: ubuntu-latest | |
needs: | |
- cli-test-master | |
- build-hub-master | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python 3.9 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.9 | |
- name: Download hub dist | |
uses: actions/download-artifact@v1 | |
with: | |
name: hub-dist | |
- name: Copy hub dist | |
run: | | |
mkdir -p cli/dstack/_internal/hub/statics | |
cp -a hub-dist/** cli/dstack/_internal/hub/statics | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r cli/requirements.txt | |
pip install wheel twine | |
- name: Upload pip package | |
run: | | |
VERSION=$((${{ github.run_number }} + 150)) | |
echo "__version__ = \"$VERSION\"" > cli/dstack/version.py | |
echo "__is_release__ = False" >> cli/dstack/version.py | |
echo "miniforge_image = \"${{ env.IMAGE_VERSION }}\"" >> cli/dstack/version.py | |
cp README.md cli | |
python setup.py sdist bdist_wheel | |
python -m twine upload --repository testpypi --username ${{ secrets.TESTPYPI_USERNAME }} --password ${{ secrets.TESTPYPI_PASSWORD }} dist/* | |
update-get-dstack-master: | |
runs-on: ubuntu-latest | |
needs: | |
- cli-upload-master | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
steps: | |
- name: Install AWS | |
run: pip install awscli | |
- run: | | |
VERSION=$((${{ github.run_number }} + 150)) | |
echo $VERSION | aws s3 cp - s3://get-dstack/stgn-cli/latest-version --acl public-read | |
runner-test-master: | |
defaults: | |
run: | |
working-directory: runner | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: 1.19 | |
- name: golangci-lint | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
version: v1.51.2 | |
args: --issues-exit-code=0 --timeout=20m | |
working-directory: runner | |
- name: Test | |
run: | | |
go version | |
go fmt $(go list ./... | grep -v /vendor/) | |
go vet $(go list ./... | grep -v /vendor/) | |
go test -race $(go list ./... | grep -v /vendor/) | |
runner-compile-master: | |
defaults: | |
run: | |
working-directory: runner | |
env: | |
REPO_NAME: github.com/dstackai/dstack | |
strategy: | |
matrix: | |
include: | |
- {goos: "linux", goarch: "386", runson: "ubuntu-latest"} | |
- {goos: "linux", goarch: "amd64", runson: "ubuntu-latest"} | |
- {goos: "windows", goarch: "amd64", runson: "ubuntu-latest"} | |
- {goos: "darwin", goarch: "amd64", runson: "macos-latest"} | |
- {goos: "darwin", goarch: "arm64", runson: "macos-latest"} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: 1.19 | |
- name: build | |
env: | |
GOOS: ${{ matrix.goos }} | |
GOARCH: ${{ matrix.goarch }} | |
ACTIONSOS: ${{ matrix.runson }} | |
run: | | |
VERSION=$((${{ github.run_number }} + 150)) | |
go build -ldflags "-X '$REPO_NAME/runner/version.Version=$VERSION' -X '$REPO_NAME/runner/pkg/log.CloudLog=true' -extldflags '-static'" -o dstack-runner-${{ matrix.goos }}-${{ matrix.goarch }} | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: dstack-runner-${{ matrix.goos }}-${{ matrix.goarch }} | |
path: runner/dstack-runner-${{ matrix.goos }}-${{ matrix.goarch }} | |
runner-upload-master: | |
defaults: | |
run: | |
working-directory: runner | |
needs: [ runner-compile-master ] | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
strategy: | |
matrix: | |
include: | |
- {goos: "linux", goarch: "386", runson: "ubuntu-latest", platform: "x86", extension: ""} | |
- {goos: "linux", goarch: "amd64", runson: "ubuntu-latest", platform: "amd64", extension: ""} | |
- {goos: "windows", goarch: "amd64", runson: "ubuntu-latest", platform: "amd64", extension: ".exe"} | |
- {goos: "darwin", goarch: "amd64", runson: "macos-latest", platform: "amd64", extension: ""} | |
- {goos: "darwin", goarch: "arm64", runson: "macos-latest", platform: "arm64", extension: ""} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: install AWS | |
run: pip install awscli | |
- name: Download Runner | |
uses: actions/download-artifact@v1 | |
with: | |
name: dstack-runner-${{ matrix.goos }}-${{ matrix.goarch }} | |
path: runner | |
- name: Upload to S3 | |
run: | | |
VERSION=$((${{ github.run_number }} + 150)) | |
aws s3 cp dstack-runner-${{ matrix.goos }}-${{ matrix.goarch }} "s3://dstack-runner-downloads-stgn/$VERSION/binaries/dstack-runner-${{ matrix.goos }}-${{ matrix.platform }}${{ matrix.extension }}" --acl public-read | |
aws s3 cp dstack-runner-${{ matrix.goos }}-${{ matrix.goarch }} "s3://dstack-runner-downloads-stgn/latest/binaries/dstack-runner-${{ matrix.goos }}-${{ matrix.platform }}${{ matrix.extension }}" --acl public-read | |
generate-json-schema: | |
needs: [ cli-test-master ] | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install AWS | |
run: pip install awscli | |
- name: Install dstack | |
run: pip install . | |
- name: Generate json schema | |
run: python -c "from dstack._internal.core.configuration import DstackConfiguration; print(DstackConfiguration.schema_json(indent=2))" > configuration.json | |
- name: Upload json schema to S3 | |
run: | | |
VERSION=$((${{ github.run_number }} + 150)) | |
aws s3 cp configuration.json "s3://dstack-runner-downloads-stgn/$VERSION/schemas/configuration.json" --acl public-read | |
aws s3 cp configuration.json "s3://dstack-runner-downloads-stgn/latest/schemas/configuration.json" --acl public-read | |
# cli-integration-tests: | |
# needs: [ runner-upload-master ] | |
# runs-on: ${{ matrix.os }} | |
# strategy: | |
# matrix: | |
# os: [ ubuntu-latest ] | |
# python-version: [ 3.7, 3.8, 3.9, "3.10", 3.11 ] | |
# steps: | |
# - uses: actions/checkout@v2 | |
# - name: Set up Python ${{ matrix.python-version }} | |
# uses: actions/setup-python@v2 | |
# with: | |
# python-version: ${{ matrix.python-version }} | |
# - name: Install dependencies | |
# run: | | |
# python -m pip install --upgrade pip | |
# pip install -e . | |
# pip install -r cli/requirements_dev.txt | |
# - name: Prepare hub | |
# run: | | |
# mkdir -p cli/dstack/_internal/hub/statics | |
# touch cli/dstack/_internal/hub/statics/index.html | |
# - name: Run pytest | |
# run: | | |
# pytest cli/tests/integration/ |