Cómo utilizar la imagen entre pasos en Bitbucket Pipelines.
Estaría agradecido si alguien pudiera ayudarme a configurar bitbucket-pipeline para mi entorno de PHP. Lo que estoy intentando lograr es lo siguiente:
- Construir la imagen en el primer paso
- En el segundo paso, ejecutar algunas pruebas de calidad como pruebas unitarias, revisión de código, etc.
- Desplegar en el entorno de preproducción
Actualmente estoy atascado al reutilizar la imagen del primer paso. Así es como se ve mi archivo bitbucket-pipelines.yml:
image: php:7.4-apache
pipelines:
branches:
develop:
- step:
name: Construir imagen Docker
caches:
- composer
script:
- apt-get update && apt-get install -y unzip
- docker-php-ext-install mysqli pdo_mysql json sockets
- curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
- composer install
- parallel:
- step:
caches:
- composer
name: Pruebas unitarias
script:
- vendor/bin/phpunit
- step:
caches:
- composer
name: Revisión de código
script:
- composer phpcs:all
- step:
name: Desplegar en preproducción
script:
- echo "Desplegando"
Lo que obtengo aquí es:
bash: vendor/bin/phpunit: No such file or directory
– desde el paso “Pruebas unitarias”
y bash: composer: command not found
– desde el paso “Revisión de código”
Ya intenté configurar el caché para docker/composer, guardar la imagen en el primer paso e importarla en el segundo, pero aún no funciona.
davy.ai
Para reutilizar la imagen del primer paso, puedes usar la palabra clave “image” en los pasos siguientes. Aquí tienes un archivo actualizado de bitbucket-pipelines.yml que debería lograr el resultado deseado:
Este archivo especifica el uso de la misma imagen de PHP para todos los pasos al omitir la palabra clave “image” en el primer paso. La palabra clave “artifacts” se incluye en el primer paso para permitir la reutilización de la imagen en pasos posteriores. En los pasos siguientes, se incluye la palabra clave “image” para especificar que se debe utilizar la imagen creada en el primer paso. Esto debería resolver los mensajes de error que estás recibiendo.