gitlab-runner的一些问题

gitlab-runner的一些问题

上周折腾了一下gitlab runner的安装。遇到了一些问题,这里记录一下解决的办法,以备下次要用的时候又要再折腾一遍。 这里这个链接包含了runner的介绍,如果你对相关概念不理解,可以先过一遍: https://docs.gitlab.com/runner/ 我的环境是gitlab server企业版11.3, gitlab runner是centos 7.5 runner的安装 我用的是手工安装方式,你也可以考虑使用gitlab提供的repo。

  如果你准备使用docker作为executor,还要在运行gitlab-runner的机器上安装配置docker(下面会简单介绍不同的executor类型):

要使用非root用户运行docker的话,还要创建docker用户组,并将此用户加入到docker组,然后退出并重新登录   把这个runner注册到gitlab服务器 运行

并提供如下信息: gitlab服务器的url: https://mygitlab.com token: 可以是shared runner的token,也可以是project specific的token executor类型: 有以下类型可以选 SSH (最后的选择,官方不推荐) Shell Parallels VirtualBox Docker Docker Machine (auto-scaling) Kubernetes 如果你不确定要选择哪种类型,可以看一下这个链接:https://docs.gitlab.com/runner/executors/#i-am-not-sure docker的代理服务器配置 我的executor类型是docker,而公司使用代理服务器上网,因此需要为docker配置代理服务器。

[Service] Environment=”HTTPS_PROXY=http://hbcheng:changsheng%2f%2f@proxy.example.org:3128″ Environment=”NO_PROXY=localhost,127.0.0.0/8,10.0.0.0/8,\*.examplet.org” 另外,如果密码包含特殊字符,需要转义(escape),而且’\’在systemd里也不好用。而要用HTTP里(或者应该叫URL里)的转义。 如: https://www.werockyourweb.com/url-escape-characters/

自签署证书 如果你的gitlab服务器使用的是自签署证书,你需要禁用git的SSL证书验证,或者把你用的root cert放到container上。 a. 禁用git SSL验证(在/etc/gitlab-runner/config.toml) [[runners]] name = “hdc-sc-perf02” url = “https://gitlab-apac.example.org/” token = “d2a1f80ee3b8aa3d8a75d7c1ace61b” executor = “docker”  environment = [“GIT_SSL_NO_VERIFY=true”] b. 把root cert放到container上 在/etc/gitlab-runner/config.toml的[[runners]]部分,有如下三个配置项: tls-ca-file  …

Read More

sigterm, systemd 以及RemainAfterexit

sigterm, systemd 以及RemainAfterexit

昨天使用uwsgi和Nginx在Debian 9上部署一个python程序。完成后给uwsgi写了一个systemd文件,想通过systemd来管理uwsgi的启动和停止。 文件内容如下:

  测试时发现,能够正常启动,但是过了两、三分钟左右进程就会停掉、检查系统日志发现是由于进程收到了TERM型号继而KILL信号导致退出。我对于这个unit文件中KillSignal的作用并不理解,查了一下是用于指定系统要关闭进程时应该发送的信号的名称。那应该也不会导致刚把uwsgi启动就要发送TERM信号。继续搜索,说是加上RemainAfterExit=yes可以解决这个问题,测试了一下。确实如此。因此,把unit文件变为:

但是还是不明白为什么uwsgi会收到TERM信号,为什么有进程要关闭它呢? 仔细看了一下RemainAfterExit的作用: RemainAfterExit= Takes a boolean value that specifies whether the service shall be considered active even when all its processes exited. Defaults to no. 我想应该是我们使用了bash来执行一串命令,而bash在执行完这些指令后退出,所以systemd认为所有的它的子进程(包括它启动的uwsgi)也应该退出,所以给这些进程发送了TERM信号,要他们退出,在没有收到回应的情况下又发送了KILL信号,将这些进程强制退出。   参考: http://man7.org/linux/man-pages/man5/systemd.kill.5.html https://www.freedesktop.org/software/systemd/man/systemd.service.html https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

Read More

Triton headnode的状态检查

Triton headnode的状态检查

headnode启动后可以运行sdc-healthcheck命令来查看各个服务的状态。

正常应该都是online的状态。像上面的输出中,有两个zone处于svc-err,意味着这两个zone上有服务出现错误。我们可以登陆上去检查、修复。  

sdc-login redis用于登陆的redis这个zone上;svcs -xv列出有错误的服务;可以看到是redis服务启动失败;svcadm restart redis重启此服务,然后用svcadm clear redis来清除它原来的maintenance状态,再次用svcs -xv来确认服务已经正常启动。 同样可以来修复amoneredis zone上的错误。  

Read More

smartos上如何安装软件

smartos上如何安装软件

SmartOS使用NetBSD的pkgsrc来安装软件。 具体方式如下: 安装pkgin工具: 先到 http://pkgsrc.joyent.com/packages/SmartOS/bootstrap/上看看最新的pkgin源码包是什么。如目前最新为bootstrap-2015Q4-x86_64.tar.gz 安装

重新编译软件包数据库

更新pkgin数据库

安装软件

pkgin常用命令列表 Command Description pkgin up Updates the pkgin database. You should run this command before installing any new packages just in case. pkgin ls Lists all the installed packages pkgin av Lists all of the available packages pkgin in Installs a package pkgin rm Removes a package pkgin se Searches for a package pkgin With no additional arguments, lists all of the available pkgin commands.

Read More

使用mutt阅读HTML邮件

使用mutt阅读HTML邮件

mutt在命令行下默认是无法阅读HTML格式的邮件的。我们可以通过以下设置来告诉mutt使用第三方软件(w3m,需要另行安装)来查看HTML邮件。 1. 在自己的主目录下创建或编辑.mailcap文件,添加以下内容:

2. 然后在mutt的配置文件.muttrc中添加以下内容:

 

Read More

Ubuntu 15.04上折腾OpenSMTPD

Ubuntu 15.04上本来是有OpenSMTPD的安装包的,但是在我试图安装时报错,而且它用的是OpenSMTPD 5.4.2,比OpenBSD上的5.7.1版本低,于是我决定下载源码自己编译。 不过在编译之前先要安装一些软件:

然后再编译、安装libasr库:

完成之后,开始编译opensmtpd

然后要添加两个用户:

然后创建/var/empty目录,如果你机器上没有的话 接下来就是创建/编辑/etc/smtpd.conf配置文件了。这里我就不再详述它的配置语法了。 再接下来,可以用smtpd -n来检查配置文件的语法是否正确。没有问题的话就可以启动起来试试看:

如果有问题的话,可以加上“d”参数来打开排除选项,看看问题的细节。 我最后折腾下来,opensmtpd每次接受到外发邮件的时候子进程都会崩溃,无法发送。目前还没找到是可执行程序的问题,配置问题还是权限问题。由于是手工编译,自行添加相关用户账户,权限问题的可能性不小。 另:目前apt-get install opensmtpd又可用了 2015.08.26更新: Ubuntu 15.04中通过repo安装的opensmtpd一直会有崩溃现象 试了一下最新的opensmtpd 5.7.1 portable版本,按照上面的方式编译不再有崩溃现象 自己编译的OpenSMTPD,默认用户为_smtpd和_smtpq,需要自行创建并配置相应的权限 我使用的配置选项为:

   

Read More

Ubuntu上配置Postfix使用gmail转发邮件

任务:如何配置Ubuntu上的Postfix使用gmail邮件服务器转发邮件 原因:使用ADSL等方式上网的ubuntu服务器发送的邮件经常被当作垃圾邮件 注:这篇博文不是要配置一个完整的Postfix邮件服务器,只是谈一下如何让它把所有要发送的邮件转交给gmail的邮件服务器来发送,减少发送邮件被当作垃圾邮件的几率。你需要有一个gmail的账户。 如何做: 1. 如果你的Ubuntu上没有Postfix,先安装。 sudo apt-get install postfix (在安装的过程中会提示你Postfix的使用场合,选择Internet Configuration) 2. 创建一个包含有你的gmail邮件服务器地址及你的账户信息的文件,这里以/etc/postfix/relay_passwd为例。内容如下: smtp.gmail.com:587 my_account@gmail.com:My_pass 3. 运行postmap命令,生成postmap database: postmap /etc/postfix/relay_passwd 4. 在/etc/postfix/main.cf中添加如下内容: ## To use gmail MTA as relay host 2012, 03/28 relayhost = smtp.gmail.com:587 smtp_sasl_password_maps = hash:/etc/postfix/relay_passwd smtpd_use_tls = yes smtp_use_tls = yes smtpd_tls_auth_only = no smtp_sasl_auth_enable = yes smtp_tls_note_starttls_offer = yes smtpd_sasl_local_domain = $myhostname smtp_sasl_security_options = noanonymous ## end addition by acheng 5. 重启postfix /etc/init.d/postfix restart

Read More

file name too long error on OpenBSD

最近在OpenBSD自带的Apache1.3上总是碰到类似下面这样的错误。 [Wed Dec 28 14:15:51 2011] [error] [client 10.249.70.50] (63)File name too long: Cannot map GET /media/ajax/component/boxList/filter/featured/limit/all/layout/thumbBig/vars/a%253A25%253A%257Bs%253A3%253A%2522act%2522%253Bs%253A7%253A%2522boxList%2522%253Bs%253A3%253A%2522mod%2522%253Bs%253A5%253A%2522media%2522%253Bs%253A4%253A%2522mode%2522%253Bs%253A3%253A%2522all%2522%253Bs%253A6%253A%2522filter%2522%253Bs%253A8%253A%2522featured%2522%253Bs%253A5%253A%2522limit%2522%253Bs%253A3%253A%2522all%2522%253Bs%253A6%253A%2522layout%2522%253Bs%253A8%253A%2522thumbBig%2522%253Bs%253A6%253A%2522search%2522%253Bs%253A0%253A%2522%2522%253Bs%253A8%253A%2522per_page%2522%253Ba%253A3%253A%257Bs%253A8%253A%2522thumbBig%2522%253Bi%253A6%253Bs%253A5%253A%2522thumb%2522%253Bi%253A10%253Bs%253A4%253A%2522list%2522%253Bi%253A4%253B%257Ds%253A11%253A%2522show_filter%2522%253Bb%253A1%253Bs%253A10%253A%2522show_limit%2522%253Bb%253A0%253Bs%253A11%253A%2522show_layout%2522%253Bb%253A1%253Bs%253A11%253A%2522show_search%2522%253Bb%253A0%253Bs%253A10%253A%2522show_pager%2522%253Bb%253A0%253Bs%253A9%253A%2522show_more%2522%253Bb%253A1%253Bs%253A9%253A%2522save_page%2522%253Bb%253A1%253Bs%253A10%253A%2522pager_name%2522%253Bs%253A4%253A%2522page%2522%253Bs%253A9%253A%2522thumbsize%2522%253Bs%253A7%253A%2522160×120%2522%253Bs%253A9%253A%2522more_link%2522%253Bs%253A10%253A%2522media%252Flist%2522%253Bs%253A2%253A%2522id%2522%253Bs%253A9%253A%2522media-box%2522%253Bs%253A9%253A%2522component%2522%253Bs%253A7%253A%2522boxList%2522%253Bs%253A4%253A%2522type%2522%253BN%253Bs%253A4%253A%2522text%2522%253BN%253Bs%253A13%253A%2522captionParams%2522%253Ba%253A0%253A%257B%257Ds%253A7%253A%2522caption%2522%253Bs%253A9%253A%2522New%2Bmedia%2522%253Bs%253A4%253A%2522page%2522%253Bi%253A1%253B%257D HTTP/1.1 to file, referer: http://host 折腾了两周时间,最后发现是OpenBSD上的最长路径参数引起的。OpenBSD上路径最长默认为1024字节。Linux上则是4096。所以同样的web应用在Ubuntu+Apache2上没有问题,但在OpenBSD上就不行。 最后修改了下面两个文件,将PATH_MAX从原来的1024改为2048,然后重新编译内核后解决问题。   ./sys/sys/syslimits.h:46:#define        PATH_MAX                 2048   /* max bytes in pathname */ ./include/stdio.h:187:#define   FILENAME_MAX    2048    /* must be <= PATH_MAX <sys/syslimits.h> */ ./include/stdio.h:193:#define   L_tmpnam        2048 /* XXX must be == PATH_MAX */ 可参看http://jiarun.org/newpostinthread3083.html来了解整个过程

Read More

ixed.5.2.ope: Cannot load specified object

在OpenBSD上安装VIMP的时候sourceguardian 的loader报错: # ./symfony framework:init mysql://user:pwd@127.0.0.1/db Failed loading /usr/local/lib/php-5.2/modules/ixed.5.2.ope:  Cannot load specified object 为啥不能加载呢? 根据这个链接,打开PHP的debug看看: # LD_DEBUG=1 php -m 2>&1 | grep fail dlopen: failed to open libc.so.50.1 dlopen: /usr/local/lib/php-5.2/modules/ixed.5.2.ope: done (failed). # 原来是无法找到libc.so.50.1 系统上的libc呢? # ls /usr/lib/libc.so* /usr/lib/libc.so.60.1 这样做个软连接就可以了: ln -fs /usr/lib/libc.so.60.1 /usr/lib/libc.so.50.1

Read More

faac and the malformated aac bit stream error

在OpenBSD上编译了ffmpeg后,VIMP在转码的时候无法将mp4文件转换为m4v格式。手工执行同样的命令出现类似下面的错误: malformated aac bit stream , use -absf aac_adtstoasc av_interleaved_write_frame(): Operation not permitted   折腾了半天才发现,可能是OpenBSD 5.0的faac-2.18p2软件包的问题,将它卸载后重新编译faac软件后转码成功。 至此,VIMP2.2可以在OpenBSD 上运行了。 http://kdump.no-ip.org/

Read More
1 2