Skip to main content

Update Fabric Workspace From Git Repo using A user with Email And Password

Project description

UpdateFromGit PyPI and TestPyPI

Update From Git

This package is built on top of this repository.I have enhanced it to be more suitable for Azure Pipelines.

Description

This package is designed to be used within an Azure DevOps Pipeline to update a Fabric Workspace from a Git repository using a user with an email and password. It supports both public client and confidential client applications. For more information about the differences, click here

Note This is currently the only available method because Microsoft does not support service principals for these operations. Once it becomes available, please use it. For more information, check Microsoft Entra supported identities here.

Another method is to schedule a notebook on Fabric running under the authority of a user who is a contributor or higher in an administration workspace using this libirary.

Install

To install the package, use the following command:

pip install updatefromgit

Usage

First, import the required functions. This example uses a confidential App but you can use a public one and omit the client secret

import logging
import os
import sys
import time
from azlog import AzLogger

from updatefromgit import (
    acquire_token_user_id_password_confidential,
    commit_all_items_to_git,
    get_git_status,
    update_workspace_from_git,
)

logger = AzLogger(__name__)
logger.setLevel(logging.INFO)

Next, create your constants:

FABRIC_API_URL = "https://api.fabric.microsoft.com/v1"
CLIENT_ID = ""
TENANT_ID = ""
USERNAME = ""
PASSWORD = ""
WORKSPACE_ID = ""

Then, you can call the functions:

access_token = acquire_token_user_id_password_confidential(
    TENANT_ID, CLIENT_ID, USERNAME, PASSWORD, CLIENT_SECRET
)
update_workspace_from_git(WORKSPACE_ID, access_token)
time.sleep(600) #adjust it per your need
workspace_head = get_git_status(WORKSPACE_ID, access_token)
commit_all_items_to_git(WORKSPACE_ID, workspace_head, access_token)
logger.command("Program Completed")

To edit pipeline connection while migrating the code between dev --> Uat --> Prod

you can use update_linked_services the following refer to the full code of update from git

trigger:
  branches:
    include:
      - dev  # Change this to your development branch if different

pr:
  branches:
    include:
      - uat  # Trigger on PRs to UAT

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: AzureKeyVault@2
  displayName: 'Azure Key Vault: da-dev-uaen-01-kv'
  inputs:
    azureSubscription: FabricSPNConnection
    KeyVaultName: 'da-dev-uaen-01-kv'
    SecretsFilter: 'CLIENTID, TENANTID, email, password, CLIENTSECRET'
    RunAsPreJob: true

- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    addToPath: true

- bash: 'python -m pip install updatefromgit --no-cache-dir --upgrade'
  displayName: 'Bash Script'

- script: |
    python3 -c "from update import update_linked_services; update_linked_services('$(Build.SourcesDirectory)/linkedservice-config.json', '$(Build.SourcesDirectory)')"
  displayName: 'Run Python Script to Modify JSON Files'

- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |
      # Set up Git configuration for committing changes
      git config --global user.email "your-email@example.com"
      git config --global user.name "Your Name"

      # Checkout the UAT branch
      git checkout uat

      # Stage all changes
      git add "$BUILD_SOURCESDIRECTORY/**/*.json"  # Adjust this pattern to your needs

      # Commit changes
      git commit -m "Automated update of pipeline-content.json files from PR"

      # Push changes to the UAT branch
      git push https://$(System.AccessToken)@dev.azure.com/your_org/your_project/_git/your_repo uat

- task: PythonScript@0
  displayName: 'Run a Python script'
  inputs:
    scriptSource: 'filePath'
    scriptPath: '$(Build.SourcesDirectory)/update.py' #look to examples
    arguments: '--WORKSPACE_ID $(WORKSPACE_ID) --CLIENT_ID $(CLIENTID) --TENANT_ID $(TENANTID) --USER_NAME $(email) --PASSWORD $(password) --CLIENT_SECRET $(CLIENTSECRET)'
    workingDirectory: '$(Build.SourcesDirectory)'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

updatefromgit-2.0.4.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

updatefromgit-2.0.4-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file updatefromgit-2.0.4.tar.gz.

File metadata

  • Download URL: updatefromgit-2.0.4.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for updatefromgit-2.0.4.tar.gz
Algorithm Hash digest
SHA256 7b504805f49e1eb3f2eb7b5cbdcd9dfa8a9407626f450f659628e1aab5949c38
MD5 589a44447a18546bfcae3ad168b9a94c
BLAKE2b-256 5f00f4ae84a2d8d350101e4cac0e84eccecf6559776342dfc66c04ac341210da

See more details on using hashes here.

File details

Details for the file updatefromgit-2.0.4-py3-none-any.whl.

File metadata

  • Download URL: updatefromgit-2.0.4-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for updatefromgit-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2a43b9402715f820f6cfa005a1e36791e208143af70a430aff8bbcb6473184a2
MD5 02598e78a294eb7dbffddea5a886c376
BLAKE2b-256 0a69dfc5aed3348fe5d7709535968073591a2331185b1d740e7881e21f4beac6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page