Esta página foi traduzida automaticamente. Em caso de divergência, prevalece o original em inglês.
Este diretório contém scripts para enviar conteúdo ao bucket do Cloudflare R2 que sustenta o 256t.org.
O bucket 256t-cids hospeda:
- Arquivos de CID: arquivos de armazenamento endereçável por conteúdo (enviados por r2_upload.py)
- Arquivos do site estático: arquivos gerados do site (enviados por r2_static_upload.py)
Os dois scripts usam a CLI Wrangler, da Cloudflare, para todas as operações no R2.
Implementa armazenamento endereçável por conteúdo usando CIDs (identificadores de conteúdo) como chaves de objeto no R2.
Envia todos os arquivos do site estático do diretório dist/ para o R2, com os tipos de conteúdo e cabeçalhos de cache adequados.
O script requer a CLI Wrangler (instalada via npm):
npm install -g wrangler
# ou use npx wrangler para uma execução avulsa
python .github/scripts/r2_upload.py examples/hello.txt
python .github/scripts/r2_upload.py examples/hello.txt --verify-only
python .github/scripts/r2_static_upload.py dist
O nome do bucket 256t-cids está fixo no código dos dois scripts.
O script usa o Wrangler para se autenticar no Cloudflare R2. Você vai precisar de:
- CLOUDFLARE_ACCOUNT_ID: o ID da sua conta Cloudflare
- CLOUDFLARE_API_TOKEN: um token de API da Cloudflare com permissões de leitura e escrita no R2
Eles podem ser definidos como variáveis de ambiente; caso contrário, o Wrangler solicitará a autenticação.
Ao enviar um arquivo, o script:
wrangler r2 object put 256t-cids/{cid} \
--file {filepath} \
--cache-control "public, max-age=31536000, immutable" \
--content-type "application/octet-stream"
O script verifica os objetos da seguinte forma:
bash
wrangler r2 object get 256t-cids/{cid} --file /tmp/downloadedSe forem iguais, o objeto é válido. Caso contrário, há uma violação de integridade.
Todos os objetos enviados usam as seguintes configurações de cache:
Cache-Control: public, max-age=31536000, immutable
Isso instrui os clientes a manter o conteúdo em cache indefinidamente, já que o conteúdo endereçado por CID é imutável.
Para usar este script no GitHub Actions, você precisa configurar os seguintes segredos no seu repositório:
O workflow r2-upload.yml usa esses segredos para se autenticar na Cloudflare:
- name: Upload to R2
env:
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
run: |
npm install -g wrangler
python .github/scripts/r2_upload.py examples/hello.txt
Ao validar objetos de CID:
O script trata várias condições de erro:
Indica um problema sério de integridade: existe um objeto com uma chave de CID, mas seu conteúdo não corresponde ao CID esperado. Isso nunca deve acontecer em operação normal.
Verifique se suas credenciais da Cloudflare estão configuradas corretamente:
- Confira a variável de ambiente CLOUDFLARE_ACCOUNT_ID
- Confira a variável de ambiente CLOUDFLARE_API_TOKEN
- Verifique se o token de API tem permissões de leitura e escrita no R2
- Verifique se o token não expirou
Para testar o script localmente:
npm install -g wranglerwrangler loginexport CLOUDFLARE_ACCOUNT_ID=your-account-idpython .github/scripts/r2_upload.py examples/hello.txtObservação: o Wrangler também oferece desenvolvimento local do R2 com a opção --local, mas este script foi feito para buckets R2 remotos.