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 |
name: test Couchbase Credential on: schedule: - 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 |
jobs: test_credential: runs-on: ubuntu-latest name: Test that given env variable works steps: shell: bash env: COUCHBASE_CONNECTION_STRING: ${{ secrets.COUCHBASE_CONNECTION_STRING }} COUCHBASE_USERNAME: ${{ secrets.COUCHBASE_USERNAME }} COUCHBASE_PASSWORD: ${{ secrets.COUCHBASE_PASSWORD }} - run: wget https://github.com/couchbaselabs/couchbase-shell/releases/download/v0.75.1/cbsh-x86_64-unknown-linux-gnu.tar.gz - run: tar -xvzf cbsh-x86_64-unknown-linux-gnu.tar.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 |
echo $COUCHBASE_PASSWORD | ./cbsh --username $COUCHBASE_USERNAME--connstr $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 |
- run: | CONFIG=$(cat << EOF version = 1 [[cluster]] identifier = "local" connstr = "$COUCHBASE_CONNECTION_STRING" username = "$COUCHBASE_USERNAME" password = "$COUCHBASE_PASSWORD" EOF ) echo "CONFIG<<EOF" >> $GITHUB_ENV echo "$CONFIG" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV - run: echo "$CONFIG" >> config |
Quando o arquivo de configuração estiver pronto, cbsh pode ser invocado dessa forma:
|
1 |
- run: ./cbsh --config-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 |
collections --clusters "On-Prem-Cluster" --bucket "travel-sample" | select scope collection | where $it.scope != "_default" | where $it.collection != "_default" | each { |it| collections create $it.collection --clusters "Capella-Cluster" --bucket "travel-sample-import" --scope $it.scope |
E temos mais recursos compatíveis com IA chegando ao Couchbase Shell, fique ligado!