Posts

Showing posts with the label github

为开源事业作了点贡献

CNCF这几年太火了,他的很多项目在云原生领域都有决定性的影响力,像著名的Kubernetes、Etcd、Containerd等等。最近刚好也在学习这些东西,也顺便想找个机会为这么多开源项目做点贡献。很巧地,在论坛里看到Kubernetes旗下一个项目正在呼吁社区帮忙维护一个项目,我马上就联系项目管理员加入了。 这个项目在这里: kubernetes/kompose ,在学习K8S期间,也考虑过怎样把自己机器上众多 docker compose 都交给K8S,比如开发中经常会用到的数据库、Nodejs、AI等,没想到社区已经有一个已经相对成熟的开源方案了,后来试用了一下效果还不错。如果要为这个项目做点什么,就应该先熟悉一下整个项目的架构和流程,然后从issues入手尝试解决一些小问题,最后再考虑去完善一些新的功能模块。 解决问题通常是比较简单的,但顺利走完整个流程还要费点劲,特别是第一次提交代码。我看到一个issue中有人希望能增加对fish shell的自动补全支持,就很快在代码中实现了,但第一次提交就出问题了,后来才知道,首先代码要fmt、lint等,一步都不能少,否则可能无法通过极其严格的CI,并且在提交代码之前要先签署CLA——Linux基金会的贡献者许可协议,再在commit的时候通过本地GPG签名自己提交的代码,最后才是push。这么复杂的流程应该是CNCF的项目特有的,对普通项目的贡献至少是不需要签CLA的。 支持开源项目对绝大多数人来说就是无私奉献,只有对社区产生了比较大的影响力了才可能会有额外的收获。作为普通开发者,对一个项目的贡献一方面是对社区的回馈,毕竟职业生涯中是肯定会借用别人肩膀的;另一方面通过贡献代码提升自己的技能和影响力。也有人已经习惯了伸手,但是请记住:没有什么理所当然,绝大多数人都是把业余时间投入开源项目的,所以应该多一点理解和尊重,毕竟,道德应该用来要求自己,法律才是用来要求别人的。

让Github Actions自动构建Hugo博客

自从Github Actions发布之后总想找机会一探究竟,今天花了点时间终于在本站上配置好了,总体上和Gitlab的CI/CD比较相似,顺便记录一下。 准备工作 创建一个repo,或者使用已有的,我这里使用的是top.github.io。在这个项目中新增一个分支,例如名称为hugo,这样做的目的是Hugo源码使用这个分支,最终生成的HTML使用master分支。以后只需要在hugo分支中更新文章,提交之后Github Actions会自动将生成的结果提交到master分支,而master分支是默认托管在Github Pages的,所以就实现了在Github上的CI/CD。 Github Actions配置文件 创建.github/workflows/build-deploy.yml文件: name: github pages on: push: branches: - hugo # 让Actions只检测这个分支的提交 jobs: build-deploy: runs-on: ubuntu-18.04 steps: # 多个步骤如下表示 - name: Checkout master uses: actions/checkout@v1 - name: Setup Hugo uses: peaceiris/actions-hugo@v2 with: hugo-version: 'latest' # 这里可以指定特定版本,我比较随意直接使用latest extended: true - name: Build run: hugo --minify - name: Deploy to master uses: peaceiris/actions-gh-pages@v2 # 我试过使用@v3版本,过程总是报特殊字符错误,所以使用@v2版本 env: ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }} # 大写的这个名称记下来,后面会用到