This blog will guide you to setup CI/CD pipeline for jitsi meet frontend customization. You can use the same procedure for your other projects as well without Jitsi meet.
Note that you should have permission to run the pipeline on Gitlab.
Step 1 - Add the customized repository to the gitlab
Step 2 - Setting up protected tags
Go to Settings > Repository > Protected tags
Add ' v* ' as the Tag and select the role to allow creating tags.
When you are creating tags, create them as v1.0, v1.1.

Step 3 - Setting up variables
Pipeline will work for both production and staging processes. You need to add the below variables according to your instances. And make sure to tick the Protect variable while creating the variables below.

SSH_HOST is the IPv4 address of the instances while SSH_USER is the user name of the instances.
PRODUCTION_SSH_HOST_1 x.x.x.x
PRODUCTION_SSH_HOST_2 x.x.x.x
PRODUCTION_SSH_USER_1 ubuntu
PRODUCTION_SSH_USER_2 ubuntu
STAGING_SSH_HOST x.x.x.x
STAGING_SSH_USER ubuntu
If you wish to use this pipeline for production purposes adding Production_SSH_HOST1 and PRODUCTION_SSH_USER_1 is enough. Adding two production hosts is not mandatory.

Step 4 - Setup access keys for instance
To access your instance from the gitlab, you need to add a private-public key pair to both the gitlab and the instance.
- Open terminal
- Run command
ssh-keygen -b 2048 -t rsa
- Give a path to generate the key pair. Then you will have a private key and public key in separate files in the given path
- Then go to gitlab repository and Settings > CI/CD > variables
- Add a variable named
SSH_PRIVATE_KEY
. Value of this variable is the private key you generated above. (To copy these keys, first open the generated files with notepad and then copy) . Set flags as protected variables. Keep 'Environment scope' asAll (Default)
and 'Type' asVariable
- Then log into the instances that you wish to deploy.
- Copy the generated public key (tip: generated public key starts with ssh-rsa) and Run the below command in two instances.
sudo vim .ssh/authorized_keys
- Paste the key and save.
Step 5 - Setup .gitlab-ci file
In your gitlab repository go to CI/CD > Editor
Then add below code accordingly.

- Beginning : Add below code to the beginning of the .gitlab-ci file.
make_and_package:
stage: build
image: meetrix/debian-build-container
script:
- npm install
- make
- rm -rf node_modules
- '[[ -d /dependencies ]] && dpkg -i /dependencies/*.deb || apt-get -f install -y --no-install-recommends'
- mkdir /build
- cp -a . /build/source
- pushd /build/source
- mk-build-deps -ir -t "apt-get -o Debug::pkgProblemResolver=yes -y --no-install-recommends"
- debuild -b -uc -us
- popd
- mkdir output
- cp -a /build/*.deb ./output/
- ls -la output
artifacts:
paths:
- output
only:
- master
- tags
before_script:
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- Staging : Add this code if you wish to use this pipeline for the staging process. Note that the last line of this code (
- master
) indicates that the staging pipeline process will be done every time when you push code into the master branch.
staging_deploy:
stage: deploy
image: kroniak/ssh-client
environment:
name: staging
script:
- scp -o StrictHostKeyChecking=no ./output/jitsi-meet-web_1.0.1-1_all.deb $STAGING_SSH_USER@$STAGING_SSH_HOST:/home/$STAGING_SSH_USER/
- ssh $STAGING_SSH_USER@$STAGING_SSH_HOST "cd /home/$STAGING_SSH_USER/ && sudo dpkg -i jitsi-meet-web_1.0.1-1_all.deb"
only:
- master
- Deploy : Add this code at the bottom of .gitlab-ci editor, if you wish to use this pipeline for the production process. Note that the last line of this code (
- tags
) indicates that the production pipeline process will be done every time when you create a tag.
production_deploy:
stage: deploy
image: kroniak/ssh-client
environment:
name: production
script:
- scp -o StrictHostKeyChecking=no ./output/jitsi-meet-web_1.0.1-1_all.deb $PRODUCTION_SSH_USER_1@$PRODUCTION_SSH_HOST_1:/home/$PRODUCTION_SSH_USER_1/
- ssh $PRODUCTION_SSH_USER_1@$PRODUCTION_SSH_HOST_1 "cd /home/$PRODUCTION_SSH_USER_1/ && sudo dpkg -i jitsi-meet-web_1.0.1-1_all.deb"
only:
- tags
If you wish to use two production hosts, add below lines before the only:
line in the above code. (You should define $PRODUCTION_SSH_USER_2
and $PRODUCTION_SSH_HOST_2
variables in step 3 in order to run the below code)
- scp -o StrictHostKeyChecking=no ./output/jitsi-meet-web_1.0.1-1_all.deb $PRODUCTION_SSH_USER_2@$PRODUCTION_SSH_HOST_2:/home/$PRODUCTION_SSH_USER_2/
- ssh $PRODUCTION_SSH_USER_2@$PRODUCTION_SSH_HOST_2 "cd /home/$PRODUCTION_SSH_USER_2/ && sudo dpkg -i jitsi-meet-web_1.0.1-1_all.deb"
Leave a Comment