Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Pipeline parallel steps that aren't self-contained. Or running background processes/jobs.

Tom May 4, 2023

I'm trying to run firebase emulators in a Bitbucket pipeline and simultaneously run commands that would interact with them.

Whilst the emulators are running, new commands cannot be ran. I haven't been able to find a method to run the emulators in the background.

I've tried:

  • Starting processes in the background using '&'
  • Terminal multiplexers like tmux

Bitbucket offers parallel steps (Parallel step options), but these are self-contained. There is no way to pass information between the two containers.

How can I run two processes at the same time? If this is by design, how can I pass information between parallel steps? And if this is intended behaviour, what is the justification?

1 answer

1 accepted

0 votes
Answer accepted
Tom May 5, 2023

I solved this another way.

I created a new docker image and ran it as a service like so: https://support.atlassian.com/bitbucket-cloud/docs/databases-and-service-containers/

 

Dockerfile:

FROM node:bullseye

COPY .firebaserc /.firebaserc
COPY entrypoint.sh /entrypoint.sh
COPY firebase.json /firebase.json
RUN apt update
RUN apt install -y openjdk-17-jdk-headless
ENTRYPOINT ["/entrypoint.sh"]

 entrypoint.sh

#!/bin/bash

npm i -g firebase-tools
npx firebase-tools emulators:start --token "$TOKEN"

Note: TOKEN is stored as a repository variable and generated using:

firebase login:ci

 

Then modify your bitbucket-pipelines.yml to include:

definitions:
  services:
    emu:
      image: <username>/<image name>
      variables:
        TOKEN: $TOKEN

and the emu service under step:

- step:
script:
...
services:
- emu

 

I hope that helps someone!

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
TAGS
AUG Leaders

Atlassian Community Events