Recentemente, estive trabalhando em um projeto interessante, um provedor de recursos do wasmCloud para o Couchbase. Estamos construindo isso de forma aberta com o pessoal da Cosmônico. Você pode verificar o código em nosso repositório.
E no início de cada projeto surge o tópico do ciclo de vida de desenvolvimento e sua infraestrutura. Como podemos executar automaticamente os testes de nosso projeto que envolve um servidor Couchbase? O GitHub fornece Ações que nos permite executar o código em vários momentos.
Para criar uma ação, você pode clicar na guia Ação do seu repositório ou adicionar um arquivo em .github/workflows
. Há muitas maneiras diferentes de acionar a execução da ação. Como em cada git push
. Eu só quero algo simples que garanta que meu cluster do Couchbase ainda esteja aqui e acessível por meio de segredos específicos ou variáveis de ambiente. Portanto, aqui escolherei apenas uma expressão cron básica. A ação será executada toda segunda-feira à meia-noite.
1 2 3 4 |
nome: teste Couchbase Credencial em: cronograma: - cron: '0 0 * * 1' |
Agora, sobre segredos e variáveis de ambiente. É claro que alguns deles são, bem, segredos. E devem ser gerenciados como tal. Felizmente, o GitHub pensou em tudo e nos oferece uma maneira de configurar segredos ou variáveis de ambiente por repositório ou organização. Se você acessar Settings/Secrets and variables/actions (Configurações/Segredos e variáveis/ações), verá a seguinte página:
Isso permite que você defina qualquer segredo ou variável de ambiente que possa precisar para suas ações e muito mais. Aqui você pode ver que eu configurei:
-
- COUCHBASE_BUCKET - O nome do Bucket que quero usar
- COUCHBASE_CONNECTION_STRING - A string de conexão completa do Couchbase, conforme fornecido no conectar Guia Capella, por exemplo
- NOME DE USUÁRIO DO COUCHBASE - O nome de usuário usado para se conectar ao cluster
- COUCHBASE_PASSWORD - A senha usada para se conectar ao cluster
Agora chegou a hora de escrever o teste. Tudo o que quero fazer é ter certeza de que tenho uma conexão funcional com um cluster, para mostrar aos meus colaboradores como as variáveis de segredos/env podem ser usadas. Uma maneira simples de testar uma conexão é usar a função Shell do Couchbase também conhecido como cbsh. Ele pode ser instalado facilmente no Ubuntu. Tudo o que você precisa é fazer o download e descompactá-lo. Isso pode ser feito em algumas etapas:
1 2 3 4 5 6 7 8 9 10 11 12 |
empregos: credencial_teste: corridas-em: ubuntu-mais recente nome: Teste que dado env variável trabalhos etapas: casca: bash env: COUCHBASE_CONNECTION_STRING: ${{ segredos.CONEXÃO COUCHBASE_STRING }} NOME DE USUÁRIO DO COUCHBASE: ${{ segredos.BASE DE SOFÁ_NOME DE USUÁRIO }} COUCHBASE_PASSWORD: ${{ segredos.BASE DE SOFÁ_SENHA }} - executar: wget https://github.com/couchbaselabs/couchbase-shell/releases/download/v0.75.1/cbsh-x86_64-unknown-linux-gnu.tar.gz - executar: alcatrão -xvzf cbsh-x86_64-desconhecido-linux-gnu.alcatrão.gz |
A partir daí, o shell está disponível simplesmente executando ./cbsh
. Observe aqui que o em execução
nos dá o contêiner a ser usado para executar a ação, casca
é definido como bash e env
torna os segredos disponíveis como variáveis de ambiente.
Como esse shell é baseado em nushell e uma senha será solicitada, mas não pude canalizá-la diretamente após a invocação dessa forma:
1 |
eco $COUCHBASE_PASSWORD | ./cbsh --nome de usuário $NOME DE USUÁRIO DO COUCHBASE--conector $COUCHASE_CONNECTION_STRING |
Como isso não funciona, tive que usar um cbsh em vez disso. E, infelizmente, a sintaxe é um pouco complicada para a formatação de texto com várias linhas e tubulações. Aqui, estou criando uma nova variável chamada CONFIGque contém os valores das variáveis de ambiente, colocando o resultado em $GITHUB_ENVo que me permite passá-lo para a próxima etapa, que o repete no arquivo de configuração:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
- executar: | CONFIG=$(gato << EOF versão = 1 [[agrupamento]] identificador = "local" conector = "$COUCHBASE_CONNECTION_STRING" nome de usuário = "$COUCHBASE_USERNAME" senha = "$COUCHBASE_PASSWORD" EOF ) eco "CONFIG<<EOF" >> $GITHUB_ENV eco "$CONFIG" >> $GITHUB_ENV eco "EOF" >> $GITHUB_ENV - executar: eco "$CONFIG" >> configuração |
Quando o arquivo de configuração estiver pronto, cbsh pode ser invocado dessa forma:
1 |
- executar: ./cbsh --configuração-dir . -c cb-env |
O exemplo completo está disponível em nosso repositório como um arquivo YML. E é assim que uma corrida bem-sucedida se parece:
Pronto, agora você já sabe como se conectar ao Couchbase em um GitHub Action. E você também se familiarizou com o Couchbase Shell - experimente fazer mais coisas divertidas como migrar todas as coleções, exceto a Padrão coleção:
1 |
coleções --agrupamentos "Cluster no local" --balde "amostra de viagem" | selecionar escopo coleção | onde $ele.escopo != "_default" | onde $ele.coleção != "_default" | cada { |ele| coleções criar $ele.coleção --agrupamentos "Grupo Capella" --balde "travel-sample-import" --escopo $ele.escopo |
E temos mais recursos compatíveis com IA chegando ao Couchbase Shell, fique ligado!