GitLab runner on Windows with bash shell on windows contianer on Docker

As part of your pipeline, you may need to perform browser testing across different platforms/environments. To minimize testing time, it's best to use a consistent shell scripting language across platforms.

One solution is to use the bash shell on Windows with the shell executor, which you can implement by following this guide: https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3503. Alternatively, you can use pwsh across all platforms.

If you plan to use the docker-windows executor, you'll need a GitLab helper container image with bash support. You can create one for yourself by following this guide: https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3779.

For building the application image, consider using the windowscore or windowsserver (for GUI applications) base image. To manage and install applications, use choco.


FROM mcr.microsoft.com/powershell:lts-windowsserver-ltsc2022


RUN choco install -y google-chrome-stable --version $Env:


glusterfs on fedora on break geo-replication

glusterfs geo-replication break on Fedora

From /var/log/glusterfs/geo-replication/gv0_node1/gsyncd.log

   class Changes(object):
  File "/usr/libexec/glusterfs/python/syncdaemon/libgfchangelog.py", line 19, in Changes
  File "/usr/lib64/python2.7/ctypes/__init__.py", line 361, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libgfchangelog.so: cannot open shared object file: No such file or directory

From /usr/libexec/glusterfs/python/syncdaemon/libgfchangelog.py
class Changes(object):
    libgfc = CDLL("/usr/lib64/libgfchangelog.so", mode=RTLD_GLOBAL,

On Fedora/RHEL , .so symlink is provided by -devel packages. To fix install, install glusterfs-devel package.

reference: https://bugzilla.redhat.com/show_bug.cgi?id=1631595


building Canon MF3010 driver on Fedora25

Building Canon MF3010 driver from source, download the source from http://support-in.canon-asia.com/contents/IN/EN/0100270810.html for UFR II/UFR II LT Printer Driver for Linux V3.20 .

[ritesh@x230t SPECS]$ diff -Naurp cndrvcups-common.spec.orig cndrvcups-common.spec
--- cndrvcups-common.spec.orig 2016-11-16 14:37:13.341877857 +0530
+++ cndrvcups-common.spec 2016-11-16 14:34:40.674461102 +0530
@@ -1,5 +1,6 @@
 %define VERSION 3.60
 %define  RELEASE 1
+%global __requires_exclude ^libcaiousb.so$

 %ifarch x86_64
 %define libs32 /usr/lib
@@ -19,6 +20,7 @@ Vendor: CANON INC.
 Group: Applications/Publishing

 Source: cndrvcups-common-%{version}-%{release}.tar.gz
+Patch0: cndrvcups-common-gmodule.patch

 BuildRoot: %{_tmppath}/%{name}-root

@@ -27,6 +29,8 @@ BuildRoot: %{_tmppath}/%{name}-root
 %setup -q

+%patch0 -p1
 cd buftool
 ./autogen.sh --prefix=%{_prefix} --enable-progpath=%{_bindir} --libdir=%{_libdir} --disable-shared --enable-static

For Fedora25, gmodule needs to be added to build dependency
[ritesh@x230t SPECS]$ cat ../SOURCES/cndrvcups-common-gmodule.patch
--- cndrvcups-common-3.60/cngplp/configure.in 2014-12-05 15:26:04.000000000 +0530
+++ cndrvcups-common-3.60/cngplp/configure.in 2016-11-16 14:17:32.517073588 +0530
@@ -11,7 +11,7 @@ AM_PROG_CC_STDC

-pkg_modules="gtk+-2.0 >= 2.0.0"
+pkg_modules="gtk+-2.0 >= 2.0.0 gmodule"

rpmbuild away and install. 


Running Sky from tel.red on Fedora25

On Fedora 25, sky crash up on start in QT.
Program received signal SIGABRT, Aborted.
0x00007ffff112692f in raise () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ffff112692f in raise () at /lib64/libc.so.6
#1  0x00007ffff112852a in abort () at /lib64/libc.so.6
#2  0x00007ffff200dcb1 in  () at /usr/lib/sky/lib/libQt5Core.so.5
#3  0x00007ffff24ee835 in QGuiApplicationPrivate::createPlatformIntegration() () at /usr/lib/sky/lib/libQt5Gui.so.5
#4  0x00007ffff24ee955 in QGuiApplicationPrivate::createEventDispatcher() () at /usr/lib/sky/lib/libQt5Gui.so.5
#5  0x00007ffff21cea64 in QCoreApplicationPrivate::init() () at /usr/lib/sky/lib/libQt5Core.so.5
#6  0x00007ffff24f2340 in QGuiApplicationPrivate::init() () at /usr/lib/sky/lib/libQt5Gui.so.5
#7  0x00007ffff2be62b9 in QApplicationPrivate::init() () at /usr/lib/sky/lib/libQt5Widgets.so.5
#8  0x0000000000434e41 in main ()
(gdb) quit
A debugging session is active.
Once workaround, is to let sky use the system provided qt5 libraries. 
$ rpm -q sky
$ cd /usr/lib/sky
$ sudo mkdir old
$ sudo mv libQt5* old
$ sky

Would be nicer, if sky could use system libraries by default.

$ rpm -Uvh sky-system-qt ( meta package,installs sky and qt deps)
$ cat sky.sh
if shibboleet and ~/config/sky/.version is older than install
  use system library and start sky
  if start failed, disable shibboleet
  ld library jazz


installing splunkforwarder using ansible

The vars
  splunk_home: /opt/splunkforwarder
  splunk_exec: "{{ splunk_home }}/bin/splunk"

The playbook

- name: install splunk forwarder
  yum: name=splunkforwarder
  become: yes

# check for first time run
- stat:
    path: "{{ splunk_home }}/ftr"
  register: result_splunk_ftr_stat

- block:
    - name: setup splunk for first time run
      shell: |
        ps aux|grep splunkd && pkill -9 splunkd || true
        {{ splunk_exec }} start --accept-license --answer-yes --no-prompt
        {{ splunk_exec }} enable boot-start
  when: result_splunk_ftr_stat.stat.exists
  become: yes

# Only add servers which are not in list
# shell: /opt/splunkforwarder/bin/splunk list forward-server -auth user:pass
# register: current_fwd_list
#- block:
#    shell: "{{ splunk_exec }} add forward-server {{ splunk_server }}:{{ splunk_server_port }} -auth user:pass"
# when: item not in current_fwd_list
#  become: yes
# with_items: splunk_fwd_server

# same logic for adding logs
#    - shell: "{{ splunk_exec }} add monitor {{ item.path }} -index {{ item.idx }} -sourcetype {{ item.path }} || true"
#  with_items:  "{{ splunk_log_files }}"

and profit !


adding authorized keys using ansible

You can use jinja template engine to set this

    - user: ritesh
      exclusive: no
        - ritesh.centos
        - ritesh.fedora

- name: ssh user key upload
    user: "{{ item.user }}"
    exclusive: "{{ item.exclusive if item.exclusive is defined else 'no' }}"
    key: "{% for file_name in item['keys'] %} {{ key|default('') + lookup('file', file_name) }}{% if not loop.last %}{{ '\n' }}{% endif %} {% endfor %}"
  become_user: "{{ item.user }}"
  become: yes

    - "{{ ssh_user_key }}"
    - setup-user-ssh-client-key


zabbix 3.0.2 for RHEL6 is built

A follow up on using zabbix30 on el6 . zabbix 3.0.2 packages for RHEL6.x64 has been pushed out.

I have switched to IUS repository, over webtatic.

GitLab runner on Windows with bash shell on windows contianer on Docker

As part of your pipeline, you may need to perform browser testing across different platforms/environments. To minimize testing time, it'...