This file contains hidden or 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: Azure File Share to Blob Sync | |
| on: | |
| workflow_dispatch: | |
| repository_dispatch: | |
| types: [media] | |
| permissions: | |
| id-token: write | |
| contents: read | |
| env: | |
| STORAGE_ACCOUNT_NAME_SOURCE: ${{ vars.STORAGE_ACCOUNT_NAME_SOURCE }} | |
| STORAGE_ACCOUNT_NAME_DESTINATION: ${{ vars.STORAGE_ACCOUNT_NAME_DESTINATION }} | |
| FILE_SHARE_NAME: upload | |
| BLOB_CONTAINER_NAME: media | |
| FILE_SAS_SECRET_NAME: FILE-SAS | |
| BLOB_SAS_SECRET_NAME: BLOB-SAS | |
| jobs: | |
| sync-storage: | |
| runs-on: ubuntu-latest | |
| environment: production | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Azure Login | |
| uses: azure/login@v1 | |
| with: | |
| client-id: ${{ secrets.AZURE_CLIENT_ID }} | |
| tenant-id: ${{ secrets.AZURE_TENANT_ID }} | |
| subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
| - name: Get SAS tokens from Azure Key Vault | |
| id: get-sas-token | |
| run: | | |
| FILE_SAS_TOKEN=$(az keyvault secret show \ | |
| --name ${{ env.FILE_SAS_SECRET_NAME }} \ | |
| --vault-name ${{ secrets.AZURE_KEYVAULT_NAME }} \ | |
| --query value -o tsv) | |
| echo "FILE_SAS_TOKEN=$FILE_SAS_TOKEN" >> $GITHUB_ENV | |
| BLOB_SAS_TOKEN=$(az keyvault secret show \ | |
| --name ${{ env.BLOB_SAS_SECRET_NAME }} \ | |
| --vault-name ${{ secrets.AZURE_KEYVAULT_NAME }} \ | |
| --query value -o tsv) | |
| echo "BLOB_SAS_TOKEN=$BLOB_SAS_TOKEN" >> $GITHUB_ENV | |
| env: | |
| AZURE_KEYVAULT_NAME: ${{ secrets.AZURE_KEYVAULT_NAME }} | |
| - name: Install AzCopy | |
| run: | | |
| wget https://aka.ms/downloadazcopy-v10-linux | |
| tar -xvf downloadazcopy-v10-linux | |
| AZCOPY_DIR=$(find . -maxdepth 1 -type d -name "azcopy_linux_amd64_*" | head -n 1) | |
| if [ -z "$AZCOPY_DIR" ]; then | |
| echo "AzCopy directory not found!" | |
| exit 1 | |
| fi | |
| sudo cp "$AZCOPY_DIR/azcopy" /usr/local/bin/azcopy | |
| sudo chmod +x /usr/local/bin/azcopy | |
| azcopy --version | |
| - name: Run AzCopy Sync | |
| run: | | |
| SOURCE_URL="https://${{ env.STORAGE_ACCOUNT_NAME_SOURCE }}.file.core.windows.net/${{ env.FILE_SHARE_NAME }}?${{ env.FILE_SAS_TOKEN }}" | |
| DESTINATION_URL="https://${{ env.STORAGE_ACCOUNT_NAME_DESTINATION }}.blob.core.windows.net/${{ env.BLOB_CONTAINER_NAME }}?${{ env.BLOB_SAS_TOKEN }}" | |
| echo "Starting AzCopy sync from File Share to Blob Storage..." | |
| echo "Source: ${{ env.STORAGE_ACCOUNT_NAME_SOURCE }}.file.core.windows.net/${{ env.FILE_SHARE_NAME }}" | |
| echo "Destination: ${{ env.STORAGE_ACCOUNT_NAME_DESTINATION }}.blob.core.windows.net/${{ env.BLOB_CONTAINER_NAME }}" | |
| azcopy sync "$SOURCE_URL" "$DESTINATION_URL" --recursive=true | |
| echo "AzCopy sync completed." |