Recientemente he estado trabajando en un emocionante proyecto, un proveedor de capacidades wasmCloud para Couchbase. Lo estamos construyendo en abierto con la buena gente de Cosmónico. Puede consultar el código en nuestro repositorio.
Y al principio de cada proyecto surge el tema del ciclo de vida de desarrollo y su infraestructura. ¿Cómo ejecutamos automáticamente las pruebas de nuestro proyecto en el que interviene un servidor Couchbase? GitHub proporciona Acciones que nos permite ejecutar código en varios momentos.
Para crear una acción, puede hacer clic en la pestaña Acción de su repositorio o añadir un archivo en .github/workflows. Hay un montón de maneras diferentes para desencadenar la ejecución de la acción. Como en cada git push. Sólo quiero algo simple que se asegure de que mi Cluster Couchbase sigue aquí y accesible a través de secretos específicos o variables de entorno. Así que aquí sólo voy a elegir una expresión cron básica. La acción se ejecutará todos los lunes a medianoche.
|
1 2 3 4 |
nombre: prueba Couchbase Credencial en: horario: - cron: '0 0 * * 1' |
Ahora, sobre secretos y variables de entorno. Por supuesto, algunos de ellos son, bueno, secretos. Y deben ser gestionados como tales. Afortunadamente GitHub pensó en todo y nos da una manera de configurar secretos o variables de entorno por repositorio u organización. Si vas a Configuración/Secretos y variables/acciones, deberías ver la siguiente página:
Esto le permite definir cualquier secreto o variable de entorno que pueda necesitar para sus acciones, y mucho más. Aquí puedes ver que he configurado:
-
- CUBO_CAMA - El nombre del Cubo que quiero utilizar
- COUCHBASE_CONNECTION_STRING - La cadena de conexión Couchbase completa, tal y como se indica en el archivo conecte Ficha de Capella, por ejemplo
- COUCHBASE_USERNAME - El nombre de usuario utilizado para conectarse al clúster
- COUCHBASE_PASSWORD - La contraseña utilizada para conectarse al clúster
Ahora llega el momento de escribir la prueba. Todo lo que quiero hacer es asegurarme de que tengo una conexión a un cluster que funciona, para poder mostrar a mis colaboradores cómo se pueden usar los secretos/variables inv. Una forma sencilla de probar una conexión es utilizar el método Shell de Couchbase también conocido como cbsh. Se puede instalar fácilmente en Ubuntu. Todo lo que necesitas es descargarlo y descomprimirlo. Esto se puede hacer en un par de pasos:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
puestos de trabajo: credencial_de_prueba: corre-en: ubuntu-última nombre: Prueba que dado env variable funciona pasos: concha: bash env: COUCHBASE_CONNECTION_STRING: ${{ secretos.COUCHBASE_CONNECTION_CADENA }} COUCHBASE_USERNAME: ${{ secretos.SOPORTE_NOMBRE }} COUCHBASE_PASSWORD: ${{ secretos.SOPORTE_CONTRASEÑA }} - ejecute: wget https://github.com/couchbaselabs/couchbase-shell/releases/download/v0.75.1/cbsh-x86_64-unknown-linux-gnu.tar.gz - ejecute: alquitrán -xvzf cbsh-x86_64-desconocido-linux-gnu.alquitrán.gz |
A partir de ahí, el intérprete de comandos está disponible simplemente ejecutando ./cbsh. Obsérvese que funciona en nos indica qué contenedor utilizar para ejecutar la acción, concha se establece en bash y env hace que los secretos estén disponibles como variables de entorno.
Dado que este caparazón se basa en nushell y se pedirá una contraseña, no he podido canalizarla directamente después de la invocación de esta manera:
|
1 |
echo $COUCHBASE_PASSWORD | ./cbsh --nombre de usuario $COUCHBASE_USERNAME--conexión $COUCHASE_CONNECTION_STRING |
Como esto no funciona, tuve que utilizar un cbsh en su lugar. Y, lamentablemente, la sintaxis es un poco complicado para el formato de texto de varias líneas y tuberías. Aquí, estoy creando una nueva variable llamada CONFIGque contiene los valores de las variables de entorno, poniendo el resultado en $GITHUB_ENVlo que me permite pasarlo al siguiente paso, que se hace eco en el archivo de configuración:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
- ejecute: | CONFIG=$(cat << EOF versión = 1 [[grupo]] identificador = "local" conexión = "$COUCHBASE_CONNECTION_STRING" nombre de usuario = "$COUCHBASE_USERNAME" contraseña = "$COUCHBASE_PASSWORD" EOF ) echo "CONFIG<<EOF" >> $GITHUB_ENV echo "$CONFIG" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV - ejecute: echo "$CONFIG" >> config |
Una vez que el archivo de configuración está todo listo, cbsh puede invocarse así:
|
1 |
- ejecute: ./cbsh --config-dir . -c cb-env |
El ejemplo completo está disponible en nuestro repositorio como archivo YML. Y esto es lo que parece una carrera exitosa:
Así que ya está, ya sabes cómo conectarte a Couchbase en una acción de GitHub. Y también te has familiarizado con Couchbase Shell - pruébalo para hacer más cosas divertidas como migrar todas las colecciones, excepto la Por defecto colección:
|
1 |
colecciones --racimos "On-Prem-Cluster --cubo "viaje-muestra" | seleccione alcance colección | donde $it.alcance != "_por defecto" | donde $it.colección != "_por defecto" | cada { |it| colecciones crear $it.colección --racimos "Capella-Cluster" --cubo "viaje-muestra-importación" --alcance $it.alcance |
Y tenemos más características amigables con la IA en camino para Couchbase Shell, ¡estén atentos!