Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
49bec15
adding temp pipeline
kristapratico Mar 12, 2024
8cb98b9
try send built docs to artifact staging directory
kristapratico Mar 14, 2024
c106a22
test with just one library to start
kristapratico Mar 14, 2024
6689871
try steps
kristapratico Mar 14, 2024
962597f
try fix
kristapratico Mar 14, 2024
54d932b
add script paths
kristapratico Mar 14, 2024
9ec9183
add main to eng file
kristapratico Mar 14, 2024
bdf81cd
test older pkg
kristapratico Mar 14, 2024
71ef3f9
try different template
kristapratico Mar 14, 2024
65093d1
try updating path
kristapratico Mar 14, 2024
00d988c
simplify
kristapratico Mar 18, 2024
2f54a9e
try publish again
kristapratico Mar 18, 2024
503b9b4
try multiple libraries
kristapratico Mar 18, 2024
cf9b80f
Merge branch 'main' into temp-mgmt-doc
kristapratico Mar 18, 2024
b1bf368
add all mgmt packages
kristapratico Mar 18, 2024
9a92c72
update list of packages
kristapratico Mar 18, 2024
eb8927e
remove pkgs that released after the fix
kristapratico Mar 18, 2024
e1070be
move test timeout
kristapratico Mar 18, 2024
6735509
try
kristapratico Mar 18, 2024
799907c
remove timeout
kristapratico Mar 18, 2024
2ede060
remove changeanalysis, broken and will be deprecated
kristapratico Mar 18, 2024
6946a19
remove edgegateway, broken and will be deprecated
kristapratico Mar 18, 2024
37321cd
removing more problematic, soon to be deprecated packages
kristapratico Mar 18, 2024
c74d546
small fix for storage mgmt
kristapratico Mar 18, 2024
da1906e
fix another storage
kristapratico Mar 19, 2024
546670d
try again to set a timeout
kristapratico Mar 19, 2024
361ec25
Fix indentation
kristapratico Mar 19, 2024
3ff4dab
ran out of space? run the next chunk
kristapratico Mar 19, 2024
a7e9778
deleting nspkg
kristapratico Mar 19, 2024
14c85e9
delete azure-mgmt
kristapratico Mar 19, 2024
d911628
next set of packages test
kristapratico Mar 20, 2024
f4f72c8
fix loadtestservice dir
kristapratico Mar 20, 2024
4d3a5b1
remove deprecated azure-mgmt-app
kristapratico Mar 20, 2024
3c70c90
remove videoanalyzer, deprecated
kristapratico Mar 20, 2024
2efdaf8
fix for network
kristapratico Mar 20, 2024
ed40cc7
try output artifacts for one lib
kristapratico Mar 21, 2024
6816691
remove env
kristapratico Mar 21, 2024
227771e
update
kristapratico Mar 21, 2024
279392d
try
kristapratico Mar 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion doc/sphinx/generate_doc.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

_LOGGER = logging.getLogger(__name__)

MULTIAPI_SLIM_PACKAGES = ["azure.mgmt.network"]

def make_title(title):
"""Create a underlined title with the correct number of =."""
Expand Down Expand Up @@ -160,7 +161,7 @@ def generate_doc(output_directory: str = "./ref/", package_root: str = None) ->

for namespace, multi_api_versions in namespaces.items():
_LOGGER.info("Working on %s", namespace)
if not multi_api_versions:
if not multi_api_versions or namespace in MULTIAPI_SLIM_PACKAGES:
write_rst(namespace, rst_path_template, rst_namespace_template, package_list_path)
continue

Expand Down
72 changes: 72 additions & 0 deletions doc/sphinx/temp_mgmt/checkout_eng.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import os
import shutil
import shlex
import stat
import subprocess
from subprocess import check_call, CalledProcessError



def invoke_command(command: str, working_directory: str) -> None:
try:
command = shlex.split(command)
wd = working_directory.replace("\\", "/")
check_call(command, stderr=subprocess.STDOUT, cwd=wd)
except CalledProcessError as e:
print(e)
raise


def prep_directory(path: str) -> str:
cleanup_directory(path)

os.makedirs(path)
return path


def error_handler_git_access(func, path, exc):
"""
This function exists because the git idx file is written with strange permissions that prevent it from being
deleted. Due to this, we need to register an error handler that attempts to fix the file permissions before
re-attempting the delete operations.
"""

if not os.access(path, os.W_OK):
os.chmod(path, stat.S_IWUSR)
func(path)
else:
raise

def cleanup_directory(target_directory: str) -> None:
"""Invokes a directory delete. Specifically handles the case where bad permissions on a git .idx file
prevent cleanup of the directory with a generic error.
"""
if os.path.exists(target_directory):
shutil.rmtree(target_directory, ignore_errors=False, onerror=error_handler_git_access)



def get_eng_from_main(assembly_area):
clone_folder = prep_directory(os.path.join(assembly_area, "tmp"))
invoke_command(
f"git clone --no-checkout --filter=tree:0 https://github.com/Azure/azure-sdk-for-python .", clone_folder
)
invoke_command(f"git config gc.auto 0", clone_folder)
invoke_command(f"git sparse-checkout init", clone_folder)
invoke_command(f"git sparse-checkout set --no-cone '/eng' '/tools' '/doc' '/scripts'", clone_folder)
invoke_command(f"git -c advice.detachedHead=false checkout main", clone_folder)


def move_dirs(path):
shutil.move(os.path.join(path, "tmp", "eng"), os.path.join(path, "eng"))
shutil.move(os.path.join(path, "tmp", "tools"), os.path.join(path, "tools"))
shutil.move(os.path.join(path, "tmp", "doc"), os.path.join(path, "doc"))
shutil.move(os.path.join(path, "tmp", "scripts"), os.path.join(path, "scripts"))


if __name__ == "__main__":

get_eng_from_main(
assembly_area=os.getcwd(),
)
move_dirs(os.getcwd())
61 changes: 61 additions & 0 deletions doc/sphinx/temp_mgmt/checkout_tag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import os
import argparse
import shutil
import pathlib
from checkout_eng import prep_directory, invoke_command, cleanup_directory
root = pathlib.Path(__file__).resolve().parent.parent.parent.parent

def rewrite_dev_reqs(path: str) -> None:
with open(f"{path}/dev_requirements.txt", "w") as file:
file.writelines("-e ../../../tools/azure-sdk-tools\n")
file.writelines("-e ../../../tools/azure-devtools")

def get_release_tag(
assembly_area: str,
target_package: str,
service_directory: str,
target_version: str,
) -> None:
clone_folder = prep_directory(os.path.join(assembly_area, "python-sdk"))
checkout_path = os.path.join("sdk", service_directory, target_package)
invoke_command(
f"git clone --no-checkout --filter=tree:0 https://github.com/Azure/azure-sdk-for-python .", clone_folder
)
invoke_command(f"git config gc.auto 0", clone_folder)
invoke_command(f"git sparse-checkout init", clone_folder)
invoke_command(f'git sparse-checkout add "{checkout_path}"', clone_folder)
invoke_command(f"git -c advice.detachedHead=false checkout {target_package}_{target_version}", clone_folder)
if target_package in ["azure-mgmt-storage", "azure-mgmt-storagesync"]:
# rewrite dev reqs for problematic tagged package test deps like tools/vcrpy
rewrite_dev_reqs(os.path.join(clone_folder, checkout_path))

cleanup_directory(os.path.join(root, "sdk", service_directory, target_package))
shutil.move(
os.path.join(assembly_area, "python-sdk", "sdk", service_directory, target_package),
os.path.join(root, "sdk", service_directory)
)


if __name__ == "__main__":
parser = argparse.ArgumentParser()

parser.add_argument(
"--package"
)

parser.add_argument(
"--service",
)

parser.add_argument(
"--version"
)

args = parser.parse_args()

get_release_tag(
assembly_area=os.getcwd(),
target_package=args.package,
service_directory=args.service,
target_version=args.version
)
36 changes: 36 additions & 0 deletions doc/sphinx/temp_mgmt/get_all_mgmt.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import glob
import pathlib
import datetime
from pypi_tools.pypi import PyPIClient

root = file_path = pathlib.Path(__file__).resolve().parent.parent.parent.parent
mgmt_docs_fix = datetime.datetime(2024, 3, 6, 12, 0, 0)

def mgmt():
client = PyPIClient()
service_directories = glob.glob(f"{root}/sdk/*/", recursive = True)
mgmt = {}
for service in service_directories:
packages = glob.glob(f"{service}*/", recursive = True)
for package in packages:
package_path = pathlib.Path(package)
package_name = package_path.name
service_directory = package_path.parent.name
if "mgmt" in package_name:
mgmt[package_name] = {}
mgmt[package_name].update({"service_directory": service_directory})
latest = client.get_ordered_versions(package_name)[-1]
release = client.project_release(package_name, str(latest))
release_date = release["urls"][0]["upload_time"]
dt = datetime.datetime.strptime(release_date, '%Y-%m-%dT%H:%M:%S')
if dt < mgmt_docs_fix:
mgmt[package_name].update({"version": str(latest)})
else:
del mgmt[package_name]
return mgmt


packages = mgmt()
with open("mgmt.txt", "w+") as fd:
for pkg, details in packages.items():
fd.write(f" {pkg}:\n ServiceDirectory: {details['service_directory']}\n Version: '{details['version']}'\n")
70 changes: 70 additions & 0 deletions doc/sphinx/temp_mgmt/publish_all_mgmt_docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
parameters:
- name: MgmtPackages
type: object
default:
azure-mgmt-advisor:
ServiceDirectory: advisor
Version: '10.0.0b1'


jobs:
- job: 'PublishAllMgmtDocs'
timeoutInMinutes: 240
steps:
- task: UsePythonVersion@0
displayName: 'Use Python 3.11'
inputs:
versionSpec: '3.11'

- script: |
python -m pip install setuptools==58.3.0
python -m pip install -r eng/ci_tools.txt
displayName: 'Prep Environment'
- ${{ each pkg in parameters.MgmtPackages }}:
- task: PythonScript@0
displayName: 'checkout library tag'
inputs:
scriptPath: 'doc/sphinx/temp_mgmt/checkout_tag.py'
arguments: >-
--package=${{ pkg.key }}
--service=${{ pkg.value.ServiceDirectory }}
--version=${{ pkg.value.Version }}
- task: PythonScript@0
displayName: 'Generate Docs'
inputs:
scriptPath: 'scripts/devops_tasks/dispatch_tox.py'
arguments: >-
${{ pkg.key }}
--service=${{ pkg.value.ServiceDirectory }}
--toxenv=sphinx
- template: /eng/common/pipelines/templates/steps/publish-artifact.yml
parameters:
ArtifactPath: '$(Build.SourcesDirectory)/_docs'
ArtifactName: 'documentation'

- ${{ each pkg in parameters.MgmtPackages }}:
- job: PublishGitHubIODocs
displayName: Publish Docs to GitHubIO Blob Storage

pool:
name: azsdk-pool-mms-win-2022-general
image: azsdk-pool-mms-win-2022-1espt
os: windows

steps:
- checkout: self

- pwsh: |
Get-ChildItem -Recurse $(Pipeline.Workspace)/${{parameters.DocArtifact}}/${{pkg.key}}
workingDirectory: $(Pipeline.Workspace)
displayName: Output Visible Artifacts

# - template: /eng/common/pipelines/templates/steps/publish-blobs.yml
# parameters:
# FolderForUpload: '$(Pipeline.Workspace)/${{parameters.DocArtifact}}/${{artifact.name}}'
# BlobSASKey: '$(azure-sdk-docs-prod-sas)'
# BlobName: '$(azure-sdk-docs-prod-blob-name)'
# TargetLanguage: 'python'
# ArtifactLocation: '$(Pipeline.Workspace)/${{parameters.ArtifactName}}/${{artifact.name}}'
# # we override the regular script path because we have cloned the build tools repo as a separate artifact.
# ScriptPath: 'doc/sphinx/temp_mgmt/copydocs.ps1'