CI/CD
17785 단어 azuredevopssharepointsharegate
프로세스는 automated using PowerShell일 수도 있는데, 이는 프로세스에서 컨텐츠 변환을 실행해야 하는 경우 특히 중요합니다.
한 단계 더 나아가 Azure Pipelines를 사용하여 자동화하기로 결정했습니다.
전제 조건
ShareGate는 Marketplace 확장으로 사용할 수 없으며 Microsoft 호스팅 파이프라인에서 쉽게 사용할 수 없습니다. 소프트웨어는 워크스테이션마다 사용자별로 할당된 라이센스 키로 설치하고 활성화해야 합니다.
마이그레이션 프로세스를 자동화하기 위해 ShareGate가 설치되고 적절한 라이센스가 부여된 가상 머신에 구성된 self-hosted agent을 사용하고 있습니다.
이 프로세스는 Schedule your SharePoint migration using PowerShell and ShareGate에 제시된 개념을 사용하고 있으며 유일한 차이점은 트리거입니다.
파이프라인
추출 및 변환
마이그레이션 프로세스의 첫 번째 단계에서는 SharePoint 목록에서 콘텐츠를 내보내고 변환을 수행합니다.
ShareGate_ExportToExcel.yml
작업은 Sharegate가 설치된 자체 호스팅 에이전트를 사용하는 반면 TransformData.yml
작업은 Microsoft 호스팅 에이전트에서 실행됩니다.jobs:
- job: ${{parameters.jobName}}
displayName: 'ShareGate Export to Excel'
dependsOn: ${{ parameters.dependsOn }}
timeoutInMinutes: 360
pool: ShareGate # IMPORTANT
variables:
- group: ${{parameters.groupKeyVaultName}}
- name: scriptsLocation
value: "$(Build.SourcesDirectory)/Pipelines/scripts"
steps:
- checkout: self
persistCredentials: true
- task: powershell@2
name: SGMigration
inputs:
filePath: $(scriptsLocation)/SG-ExportToExcel.ps1
arguments: '-userName_SP ''$(SP-SvcAcct-Name)'' -userPassword_SP (ConvertTo-SecureString -AsPlainText $(SP-SvcAcct-Pswd) -Force) `
-listNames ''Portfolio'', ''Schedule'', ''Archive'' '
displayName: Export to Excel
다운스트림 환경에 로드
다음 단계에서는 선택한 다운스트림 환경으로 콘텐츠 마이그레이션을 실행합니다.
테스트 마이그레이션 중에는 데이터가 약간 오래된 경우에도 이전에 내보내고 변환된 Excel을 재사용하고 있습니다. 동일한 Excel 파일을 사용할 수 있다는 것은 많은 시간을 절약해 줍니다. 그것을 생성하는 데 1,5 시간이 걸렸습니다.
가져오기 프로세스는 여러 단계로 구성됩니다.
jobs:
# set the list configuration: required columns, fillIn choices etc
- template: jobs_SG_PreMigration.yml
parameters:
environment: ${{parameters.environment}}
groupVariablesName: ${{parameters.groupVariablesName}}
groupKeyVaultName: ${{parameters.groupKeyVaultName}}
jobName: SPOPreMigration
# import with ShareGate
- template: jobs_SG_Migration.yml
parameters:
environment: ${{parameters.environment}}
groupVariablesName: ${{parameters.groupVariablesName}}
groupKeyVaultName: ${{parameters.groupKeyVaultName}}
jobName: Import
dependsOn: SPOPreMigration
# set the list configuration back: required columns, fillIn choices etc
- template: jobs_SG_PostMigration.yml
parameters:
environment: ${{parameters.environment}}
groupVariablesName: ${{parameters.groupVariablesName}}
groupKeyVaultName: ${{parameters.groupKeyVaultName}}
jobName: SPOPostMigration
dependsOn: Import
# run list validation
- template: jobs_SPO_Validate.yml
parameters:
environment: ${{parameters.environment}}
groupVariablesName: ${{parameters.groupVariablesName}}
groupKeyVaultName: ${{parameters.groupKeyVaultName}}
jobName: SPOValidate
searchOrphanedUsers: true
dependsOn: SPOPostMigration
다시 한 번 자체 호스팅 에이전트에서 가져오기만 실행하면 됩니다.
jobs:
- deployment: ${{parameters.jobName}}
displayName: 'ShareGate Migration'
environment: ${{ parameters.environment }}
dependsOn: ${{ parameters.dependsOn }}
timeoutInMinutes: 360
pool: ShareGate # IMPORTANT
strategy:
runOnce:
deploy:
steps:
- checkout: self
persistCredentials: true
# Copy results
- task: CopyFiles@2
condition: always()
displayName: 'Copy SG mapping files'
inputs:
contents: |
$(Build.SourcesDirectory)\SPO_Migration\ShareGateConfig\*
targetFolder: 'D:\ShareGateConfig'
flattenFolders: true
overWrite: true
- task: powershell@2
name: SGMigration
inputs:
filePath: $(scriptsLocation)/SG-Migrate.ps1
arguments: '-tenantName ''$(Az_TenantName)'' -siteName ''$(SPO_SiteName)'' `
-userName_SPO ''$(SPO-SvcAcct-Name)'' -userPassword_SPO (ConvertTo-SecureString -AsPlainText $(SPO-SvcAcct-Pswd) -Force) `
-userName_SP ''$(SP-SvcAcct-Name)'' -userPassword_SP (ConvertTo-SecureString -AsPlainText $(SP-SvcAcct-Pswd) -Force) `
-resultsFolder ''$(System.DefaultWorkingDirectory)\results'' `
-sourceFolder ''$(filesLocation)'' `
-environment ''${{ parameters.environment }}'' -buildId ''${{ parameters.environment }} $(Build.BuildNumber)'' '
displayName: ShareGate Migration
# Copy results
- task: CopyFiles@2
condition: always()
displayName: 'Archiving migration results'
inputs:
contents: |
$(System.DefaultWorkingDirectory)\results\*
targetFolder: '$(Build.ArtifactStagingDirectory)'
flattenFolders: true
- task: PublishBuildArtifacts@1
inputs:
artifactName: '${{ parameters.environment }} ShareGate'
condition: always()
displayName: 'Publish Artifact: ShareGate'
파이프라인의 변수를 사용하여 ShareGate 작업 이름을 설정하는 것도 가능합니다.
-buildId ''${{ parameters.environment }} $(Build.BuildNumber)'' '
매개변수는 PowerShell에서 사용됩니다.Copy-Content -TaskName "$srcListName to $dstListName ($buildId)"
ShareGate 응용 프로그램을 사용하여 작업 진행 상황을 편안하게 검토할 수 있습니다.
Reference
이 문제에 관하여(CI/CD), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kkazala/cicd-48f0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)