Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Depois de configurar um registro personalizado de portas vcpkg, convém adicionar a Integração Contínua (CI) para validar que todas as suas dependências podem ser criadas com êxito.
O registro vcpkg principal na Microsoft/vcpkg é testado pela equipe vcpkg usando o Azure DevOps Pipelines. Isso garante que a adição de novos pacotes ou a atualização dos existentes não quebre os consumidores.
Neste artigo, mostramos como configurar um ambiente de CI para testar as portas vcpkg em seu próprio registro.
Neste artigo, você aprenderá a configurar um fluxo de trabalho de CI para seu registro em execução no GitHub Actions:
- Configurar um cache binário e um cache de ativos para seus fluxos de trabalho do GitHub Actions
- Configurar um fluxo de trabalho para testar as portas do Registro
Pré-requisitos
- Uma conta do GitHub
- Um registo Git do vcpkg
- Leia o tutorial de cache binário
- Leia o tutorial de cache de ativos
Configurar um cache binário e um cache de ativos para seus fluxos de trabalho do GitHub Actions
Testar uma grande coleção de portas é uma tarefa cara, tanto em termos de tempo quanto de poder de computação. É altamente recomendável que, antes de usar o CI para os seus ports, invista na configuração de um cache binário e um cache de ativos para os seus fluxos de trabalho do GitHub Actions.
Um cache binário fornece o maior benefício para cenários de CI, garantindo que pacotes não modificados não sejam reconstruídos em cada execução de CI. Um cache de ativos espelha artefatos baixados para seus pacotes durante uma execução e usa os artefatos armazenados em cache em execuções subsequentes. Ele também pode ajudar a mitigar problemas em que o repositório upstream não é confiável: por exemplo, um URL de download quebrado.
Para obter instruções detalhadas sobre como configurar esses caches, leia nossos artigos sobre cache binário e cache de ativos .
Exemplo: habilitar o cache binário e de ativos em um fluxo de trabalho do GitHub Actions
env:
FEED_URL: https://nuget.pkg.github.com/<OWNER>/index.json
steps:
- name: Install vcpkg ports
run: "${{ github.workspace }}/vcpkg/vcpkg install"
env:
X_VCPKG_ASSET_SOURCES: "clear;x-azurl,https://my.domain.com/container,{{ secrets.SAS }},readwrite"
VCPKG_BINARY_SOURCES: "clear;nuget,https://nuget.pkg.github.com/<OWNER>/index.json,readwrite"
Este exemplo mostra como configurar um cache binário e um cache de ativos em um fluxo de trabalho de Ações do GitHub. Você deve adaptar esse trecho para usar no arquivo YAML do seu próprio fluxo de trabalho.
Detalhando este trecho:
X_VCPKG_ASSET_SOURCES
é a variável de ambiente usada para configurar caches de ativos no VCPKG. Neste exemplo, ele é definido como x-azurl,https://my.domain.com/container,{{secrets.SAS}},readwrite
.
O x-azurl
backend instrui o vcpkg a usar um contentor de Armazenamento do Azure como o fornecedor de armazenamento. O x-azurl
é seguido por três parâmetros separados por vírgulas (,
).
-
https://my.domain.com/container
é um URL de contêiner de armazenamento. -
{{secrets.SAS}}
é uma variável secreta de Ações do GitHub que contém um token SAS para autenticação no contêiner de armazenamento. -
readwrite
Define permissões de leitura e gravação para o cache de ativos. Isso significa que esse cache de ativos é usado para armazenar artefatos, bem como para restaurar artefatos a partir dele.
VCPKG_BINARY_SOURCES
é a variável de ambiente usada para configurar caches binários em vcpkg. Neste exemplo, ele é definido como clear;x-gha,readwrite
. Isso habilita o back-end do Cache de Ações do GitHub para o cache binário. Uma etapa extra é necessária em seu fluxo de trabalho para habilitar esse back-end com êxito.
A etapa a seguir deve ser incluída nas etapas do fluxo de trabalho do GitHub Actions as-is. Esta etapa exporta duas variáveis de ambiente exigidas pelo back-end para funcionar e deve ser executada antes de qualquer tarefa que envolva x-gha
vcpkg.
- name: Enable GitHub Actions Cache backend
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
Saiba mais sobre como tudo isso funciona lendo a documentação sobre o cache de ativos e os recursos de cache binário .
Configurar um fluxo de trabalho para testar as portas do Registro
Depois de configurar um cache binário e um cache de ativos para seu ambiente de CI, a próxima etapa é configurar um fluxo de trabalho para testar todas as portas do seu registro. Você pode decidir se este fluxo de trabalho é executado em um horário programado ou se é acionado por novos commits ou pull requests.
O registro vcpkg principal usa o vcpkg ci
comando, que foi adaptado às necessidades do projeto vcpkg e não se destina a permanecer estável ou ser usado por consumidores de vcpkg. Como tal, não é adequado para testar os seus próprios registos vcpkg. Em vez disso, recomendamos seguir as etapas descritas neste artigo.
Use um arquivo de manifesto para incluir todas as suas portas
Em vez de usar o vcpkg ci
comando, sugerimos usar um arquivo de manifesto para criar uma compilação que depende de todos os pacotes em seu registro.
O exemplo a seguir cria um arquivo de manifesto para testar todas as portas em um registro vcpkg hipotético. Substitua a lista de dependências para incluir todas as portas no registro e coloque-a na raiz do repositório.
vcpkg.json
{
"dependencies": [
"beicode",
"beison"
]
}
Suas próprias portas podem ter dependências no registro vcpkg principal ou outros registros de terceiros, nesse caso, você precisa adicionar esses registros em um vcpkg-configuration.json
arquivo. Embora o vcpkg possa resolver pacotes do registro principal sem configuração adicional, é altamente recomendável adicioná-lo explicitamente à lista de registros para fins de controle de versão.
Isso garante que você tenha controle do conjunto de versões de porta subjacentes. Confira o vcpkg x-update-baseline
comando para ajudar a gerenciar a linha de base de seus registros.
vcpkg-configuration.json
{
"default-registry": null,
"registries": [
{
"kind": "git",
"repository": "https://github.com/Microsoft/vcpkg",
"baseline": "42bb0d9e8d4cf33485afb9ee2229150f79f61a1f",
"packages": ["*"]
}
]
}
Leia os artigos de referência vcpkg.json
e vcpkg-configuration.json
para saber mais. Consulte a documentação do modo manifesto para saber como eles funcionam juntos.
Adquira vcpkg em seu fluxo de trabalho de Ações do GitHub
Em seguida, você precisa adquirir vcpkg para usá-lo em seu fluxo de trabalho. Adicione as seguintes etapas para instalar o vcpkg.
steps:
- uses: actions/checkout@v4
with:
repository: "https://github.com/Microsoft/vcpkg"
path: "vcpkg"
- name: Bootstrap vcpkg
run: "${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh"
shell: bash
Uma vez concluídas estas etapas, deverá ter um ficheiro executável vcpkg com o qual trabalhar.
Execute vcpkg install para construir suas portas
O último passo é dizer ao vcpkg para construir todas as suas portas. Você pode ter notado que seu próprio registro está ausente do vcpkg-configuration.json
criado alguns passos acima. O motivo é que você deseja testar a versão das portas atualmente no diretório de trabalho, em oposição às versões publicadas no repositório.
Para esse objetivo, você precisa adicionar as portas do Registro como portas de sobreposição , definindo a VCPKG_OVERLAY_PORTS
variável de ambiente para o diretório do ports
Registro.
O trecho abaixo mostra como configurar as portas do registro como portas 'overlay' e executar vcpkg install
no modo de manifesto para instalar todas as suas portas personalizadas.
- name: some vcpkg task
run: "${{ github.workspace }}/vcpkg/vcpkg install"
env:
X_VCPKG_ASSET_SOURCES: "clear;x-azurl,https://my.domain.com/container,{{ secrets.SAS }},readwrite"
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
VCPKG_OVERLAY_PORTS: "${{ github.workspace }}/ports"
Neste exemplo, assumimos que o vcpkg.json
arquivo é criado na raiz do repositório do seu registro.
Juntando tudo, o arquivo YAML do seu fluxo de trabalho deve ser semelhante a este:
.github/workflows/test-ports.yml
name: Test vcpkg ports
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Acquire vcpkg
uses: actions/checkout@v4
with:
repository: "Microsoft/vcpkg"
path: vcpkg
- name: Bootstrap vcpkg
run: "${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh"
shell: bash
- name: Enable GitHub Actions Cache backend
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: Build ports
run: ${{ github.workspace }}/vcpkg/vcpkg install
env:
X_VCPKG_ASSET_SOURCES: "clear;x-azurl,https://your.domain.com/container,${{ secrets.SAS }},readwrite"
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
VCPKG_OVERLAY_PORTS: "${{ github.workspace }}/ports"
shell: bash
Esta é a estrutura básica para um fluxo de trabalho de CI para testar as portas do seu registro. Você pode precisar de algum trabalho extra para autenticar em repositórios privados ou no seu feed do NuGet.
Você também pode adicionar etapas para automatizar a geração do arquivo ou uma etapa que verifique se as portas recém-adicionadas vcpkg.json
ao seu registro não são deixadas de fora dos testes.
Próximos passos
Os artigos a seguir podem ser úteis para você ao configurar um ambiente de CI.