Skip to content

media

media #117

Workflow file for this run

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."