{"id":27437287,"url":"https://github.com/armhil/azure-blobs-content-uploader","last_synced_at":"2026-04-20T09:03:40.848Z","repository":{"id":56774792,"uuid":"524957698","full_name":"armhil/azure-blobs-content-uploader","owner":"armhil","description":"Azure Blobs Content Uploader is designed as a github action, to help developers upload their build artifacts to multiple az-storage accounts, taking into account the absolute paths / relative paths / recursive structure from your file system.  It's especially meant to help with SPA developers (ex: artifacts of create-react-app) to quickly upload artifacts to a lot of storage accounts for redundancy and performance.","archived":false,"fork":false,"pushed_at":"2025-02-05T19:22:08.000Z","size":17791,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-14T20:19:46.864Z","etag":null,"topics":["azure","azure-blob-storage","create-react-app","css","html","image","javascript","spa","static-content","upload","uploader"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/armhil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-15T11:18:07.000Z","updated_at":"2025-02-05T19:22:12.000Z","dependencies_parsed_at":"2024-06-23T13:00:59.998Z","dependency_job_id":null,"html_url":"https://github.com/armhil/azure-blobs-content-uploader","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armhil%2Fazure-blobs-content-uploader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armhil%2Fazure-blobs-content-uploader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armhil%2Fazure-blobs-content-uploader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armhil%2Fazure-blobs-content-uploader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/armhil","download_url":"https://codeload.github.com/armhil/azure-blobs-content-uploader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248952354,"owners_count":21188427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","azure-blob-storage","create-react-app","css","html","image","javascript","spa","static-content","upload","uploader"],"created_at":"2025-04-14T20:19:55.030Z","updated_at":"2026-04-20T09:03:35.807Z","avatar_url":"https://github.com/armhil.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Azure blobs - content uploader\n\n[![No real build - some simple tests \u0026 executing the action itself](https://github.com/armhil/azure-blobs-content-uploader/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/armhil/azure-blobs-content-uploader/actions/workflows/main.yml) [![codecov](https://codecov.io/gh/armhil/azure-blobs-content-uploader/graph/badge.svg?token=6A2V1F5QK0)](https://codecov.io/gh/armhil/azure-blobs-content-uploader)\n\nAzure Blobs Content Uploader is designed as a github action, to help developers upload their build artifacts to *multiple* az-storage accounts, taking into account the absolute paths / relative paths / recursive structure from your file system.\n\nIt's especially meant to help with SPA developers (ex: artifacts of create-react-app) to quickly upload artifacts to a lot of storage accounts for redundancy and performance. \n\n## Configuration details\n\nTo configure this job, you'll need a few things.\n\n## Create your Entra App (Azure AAD app)\nOnce you create the app, give it write permissions to the storage accounts that you want to upload blobs to.\n\n## Get the Entra App details and add them to GitHub\n\nUsing Action Secrets, add the `clientId`, `clientSecret`, `tenantId` and further configurations below to Actions configuration.\n\n### Your local files\nYou should decide which directory to upload and to where on the storage accounts. This information is passed as parameters to the `*.yaml` file.\nSee the `directoriesToUpload` parameter, which supports passing multiple directories. Note that while you can upload multiple directories, **they will be uploaded to the same location**.\n\n```yaml\n      - name: Upload Static Content\n        uses: armhil/azure-blobs-content-uploader@1.0.9\n        with:\n          # required parameter - your entra (ex: AAD) - application id\n          clientId: ${{ secrets.ENTRA_CLIENTID }}\n\n          # required parameter - your entra (ex: AAD) - application secret\n          clientSecret: ${{ secrets.ENTRA_CLIENTSECRET }}\n\n          # required parameter - your entra (ex: AAD) - tenant id\n          tenantId: ${{ secrets.ENTRA_TENANTID }}\n\n          # required parameter - storage account names that you're uploading to.\n          # if you're providing this value from secrets, use just the array form like [\"account1\", \"account2\"]\n          # if you're passing this value from the yaml file (so directly adding to source) - use quotations like so: '[\"account1\", \"account2\"]'\n          storageAccountList: ${{ secrets.STORAGE_ACCOUNT_LIST }}\n\n          # required parameter - container name, same across all storage accounts, $web is recommended if you're hosting SPAs - see here:\n          # https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website \n          containerName: \"$web\"\n\n          # required parameter - what are you uploading, whether recursively or not. If you want to map the artifacts to a particular location in the container\n          # you can use the \"baseContainerPath\" property of each record.\n          # see an example here: https://github.com/armhil/easy-qrcode-barcode-addin/blob/main/.github/workflows/main.yml\n          directoriesToUpload: '[{\"directoryToUpload\": \"test/integrationtest-directory\", \"shouldRecurse\": \"true\" }]'\n\n          # optional parameter - what file extensions with content-type are you uploading? Others will be omitted.\n          # default value: '{ \".html\": \"text/html\", \".pdf\": \"application/pdf\", \".png\": \"image/png\", \".jpg\": \"image/jpeg\", \".svg\": \"image/svg+xml\", \".css\": \"text/css\", \".js\": \"application/x-javascript\" }'\n          fileTypesToUpload: '{ \".html\": \"text/html\" }'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmhil%2Fazure-blobs-content-uploader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farmhil%2Fazure-blobs-content-uploader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmhil%2Fazure-blobs-content-uploader/lists"}