Gitlab CI 多个作业编译不同配置的 ESP-IDF 固件

首先需要将不同的 kconfig 配置放入不同的文件,比如 sdkconfig.foo。对于相同配置,还是放入 sdkconfig.defaults

比如,sdkconfig.foosdkconfig.bar 的文件内容分别如下:

# sdkconfig.foo
CONFIG_FOOBAR=foo
# sdkconfig.bar
CONFIG_FOOBAR=bar

对应的 .gitlab-ci.yml 如下:

image: espressif/idf

stages:
  - build

.template: &template
  stage: build
  variables:
    GIT_SUBMODULE_STRATEGY: recursive
  script:
    - idf.py -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.$CI_JOB_NAME" build
  artifacts:
    expire_in: 1 day
    name: "$CI_JOB_NAME-$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA"
    paths: 
      - build/*.bin
      - build/bootloader/*.bin
      - build/partition_table/*.bin

foo:
  <<: *template

bar:
  <<: *template

这样,每次提交都会针对 CONFIG_FOOBAR=fooCONFIG_FOOBAR=bar 构建两个固件了。

使用 GitLab Auto DevOps 在 Kubernetes 上部署 Yii2 应用

首先,感谢 Guillaume Simon 的 Deploying Symfony test applications on Kubernetes with GitLab Auto DevOps, k3s and Let’s Encrypt – A 30m guide 一文给予我最大的帮助,使得本文能够完成。

其次,这里只涉及到部署。也就是只包含下列内容:

在未来可能会支持:

也希望有人在这方面为此项目创建拉取请求

最后,相信你看得懂上面的文字说明,并为此而来。我们继续~

(更多…)

小宝宝两个月了

真的是好辛苦。

从六月份宝宝妈妈去医院不小心遭遇流感开始,整个日子都乱套了。来回奔波,连平常不用的车都跑了三四千公里里程。等到宝宝出生,除开在医院的三天,大人小孩就没睡过完整的一晚上觉。

WiFi 配置 IPv6 指南

根据工信部的要求,2018 是 IPv6 大力推进部署的一年。截止到年底 12 月份,对于普通用户来说,三大运营商对 IPv6 的支持已经从宽带上网落实到手机移动网络的双栈支持。不管是 Android 用户还是 iOS 用户(12.1.1 已提供联通描述文件),都能直接使用到原生的 IPv6。

不过,因为老旧路由器的限制,即使光纤宽带上网早早就已支持 IPv6,但绝大多数 WiFi 并不支持 IPv6。

具体来说,家庭 WiFi 要支持 IPv6 需要满足三个条件:

  1. 运营商支持 IPv6(三大运营商在大多数城市都已支持)
  2. 光猫支持 IPv6(最近两年运营商赠送的光猫均支持)
  3. WiFi 路由器支持 IPv6(很遗憾,国内主流路由器很少支持)

所以,配置 WiFi 的 IPv6 首先要选择支持 IPv6 的路由器。当然,还有一种选择就是,路由器可以刷第三方固件。大多数第三方固件目前都提供有 IPv6 支持。

另外,运营商提供的光猫现在也提供有 WiFi 和路由功能,也能直接开启 IPv6 支持。

对于中国电信的光猫,建议使用 telecomadmin 账号和 nE7jA%5m 密码以超级管理员登录。然后在“状态总览”的“业务信息”下“上网业务”查看是否有 IPv4 和 IPv6 两个连接。使用路由器的用户,将看到连接方式为“桥接(电脑拨号)”。

如果没有看到 IPv6,请转到“网络”的“网络设置”页面。找到“网络连接”的“连接名称”类似于“3_INTERNET_B_VID_41”选项,其“封装方式”为“PPPoE”,“业务类型”为“上网”,“连接方式”为“桥接”(如果是路由表示开启了光猫的路由功能)。请将其“IP 模式”修改为“IPv4 & IPv6”即可开启双栈支持。

对于路由器,比如潘多拉固件。在 WAN 口 IPv6 设置页面:“IPv6 连接类型”选择“Native DHCPv6”,“获取 IPv6 外网地址”选择“Stateless: RA”,“启用 LAN DHCPv6 服务器”选择“Stateless (*)”;然后开启“自动获取 IPv6 DNS”、“通过 DHCPv6 获取内网 IPv6 地址”、“启用 LAN 路由器通告”。

Ubuntu LVM 增加新硬盘

办公室放着一台测试机,想着做备份用,但只有一块 500G 的硬盘,不太够。所以得增加硬盘。

Ubuntu 12.04 LTS 就已经支持 LVM 安装,14.04 LTS 默认会选择 LVM 了。而且对于 500G 硬盘,也会默认使用 GPT 分区。

(更多…)

Ubuntu 16.04 安装 certbot-dns-dnspod 插件

因为 Certbot 是使用的 python3,而 Ubuntu 16.04 默认还是 python2.7。所以,默认情况下,使用 sudo easy_install pip 安装的是 python2.7 的 pip。那就无法通过 pip 去安装 certbot-dns-dnspod

解决方法如下:

sudo apt-get install python3-setuptools
sudo easy_install3 pip
sudo pip install certbot-dns-dnspod

然后,升级 certbot 为 0.22 以上版本,并指定新的认证服务器就可以申请泛域名证书了:

sudo certbot certonly --server https://acme-v02.api.letsencrypt.org/directory -a certbot-dns-dnspod:dns-dnspod --certbot-dns-dnspod:dns-dnspod-credentials /etc/letsencrypt/dnspod.conf -d larryli.cn -d "*.larryli.cn"

Orange Pi Zero 无需网线或 USB-TTL 登录系统

通常对于新刷了 Armbian 系统的开发板,初次使用需要准备一条网线或者 USB 串口线才能进入系统连接 Wifi

而实际上,Orange Pi 开发板的 USB OTG 供电口本身就已经集成了 USB-TTL 芯片。插上电脑给开发板供电就可以识别到新的串口,Win10 和 Mac 都自带驱动,Linux 下更不用说。

在 Armbian 系统里也可以找到这个串口,就是 /dev/ttyGS0 设备。不过,ttyGS0 虽然和 ttyS0 一样开启了控制台,但没有 ttyS0 调试口的开机关机输出信息。当然,对于初次登录系统就足够用了。