Update Fabric Workspace From Git Repo using A user with Email And Password
Project description
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b504805f49e1eb3f2eb7b5cbdcd9dfa8a9407626f450f659628e1aab5949c38
|
|
| MD5 |
589a44447a18546bfcae3ad168b9a94c
|
|
| BLAKE2b-256 |
5f00f4ae84a2d8d350101e4cac0e84eccecf6559776342dfc66c04ac341210da
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a43b9402715f820f6cfa005a1e36791e208143af70a430aff8bbcb6473184a2
|
|
| MD5 |
02598e78a294eb7dbffddea5a886c376
|
|
| BLAKE2b-256 |
0a69dfc5aed3348fe5d7709535968073591a2331185b1d740e7881e21f4beac6
|