作家
登录

使用Snapcraft构建、测试并发布Snap软件包

作者: 来源: 2017-08-21 13:30:55 阅读 我要评论

--edge --classic 
  •             /snap/bin/snapcraft 
  • 这个例子应用了 machine 履行器来安装用于治理运行 snap 的可履行法度榜样 snapd 和制造 snap 的 snapcraft 对象。

    因为构建过程须要应用比较新的内核,所以我们应用了 machine 履行器而没有效 docker 履行器。在这里,Linux v4.4 已经足够知足我们的需求了。

    用户空间的依附关系

    膳绫擎的例子应用了 machine 履行器,它实际上是一个内核为 Linux v4.4 的 Ubuntu 14.04 (Trusty) 虚拟机。如不雅 Trusty 仓库可以知足你的 project/snap 构建依附,那就没问题。如不雅你的构建依附须要其他版本,比如 Ubuntu 16.04 (Xenial),我们仍然可以在 machine 履行器中应用 Docker 来构建我们的 snap 软件包 。

    1. version: 2 
    2. jobs: 
    3.   build: 
    4.     machine: true 
    5.     working_directory: ~/project 
    6.     steps: 
    7.       - checkout 
    8.       - run: 
    9.           command: | 
    10.             sudo apt update && sudo apt install -y snapd 
    11.             docker run -v $(pwd):$(pwd) -t ubuntu:xenial sh -c "apt update -qq && apt install snapcraft -y && cd $(pwd) && snapcraft" 

    这个例子中,我们再次在 machine 履行器的虚拟机中安装了 snapd,然则我们决定将 snapcraft 安装在 Ubuntu Xenial 镜像构建的 Docker 容器中,并应用它来构建我们的 snap。如许,在 snapcraft 运行的过程中就可以应用在 Ubuntu 16.04 中可用的所有 apt 包。

    测试

    工作流

    假设我们构建的 snap 软件包是一个 webapp,我们可以经由过程测试套件来确保构建的 snap 可以精确的安装和运行,我们也可以试着安装它或者应用 Selenium 来测试页面加载、登录等功能正常工作。然则这里有一个问题,因为 snap 是被设计成可以在多个 Linux 发行版上运行,这就须要我们的测试套件可以在 Ubuntu 16.04、Fedora 25 和 Debian 9 等发行版中可以正常运行。这个问题我们可以经由过程 CircleCI 2.0 的工作流来竽暌剐效地解决。

    工作流是在比来的 CircleCI 2.0 测试版中参加的,它许可我们经由过程特定的逻辑流程来运行离散的义务。如许,应用单个义务构建完 snap 后,我们就可以开端并行的运行 snap 的发行版测试义务,每个义务对应一个不合的发行版的 Docker 镜像 (或者在将来,还会有其他可用的履行器)。

    这里有一个简单的例子:

    在这个例子中起首构建了 snap,然后在四个不合的发行版上运行验收测试。如不雅所有的发行版都经由过程测试了,那么我们就可以运行宣布 job,以便在将其推送到 snap 市廛之前完成残剩的 snap 义务。

    留着 .snap 包

    为了测试我们在工作流示例中应用的 .snap 软件包,我们须要一种在构建的时刻持久保存 snap 的办法。在这里我将供给两种办法:

    1. artifact —— 在运行 build 义务的时刻我们可以将 snaps 保存为一个 CircleCI 的 artifact(LCTT 译注:artifact 是 snapcraft.yaml 中的一个 Plugin-specific 关键字),然后在接下来的义务中检索它。CircleCI 工作流有本身处理共享 artifact 的方法,相干信息可以在 这里 找到。
    2. snap 市廛通道 —— 当宣布 snap 软件包到 snap 市廛时,有多种通道可供我们选择。将 snap 的主分支宣布到 edge 通道以供内部或者用户测试已经成为一种常见做法。我们可以在 build 义务中完成这些工作,然后接下来的的义务就可以大年夜 edge 通道来安装构建好的 snap 软件包。

    snap 市廛的身份验证

    snapcraft-config-generator.py 脚本可以生成市廛证书并将其保存到 .snapcraft/snapcraft.cfg 中(留意:在运行公共脚本之前必定要对其进行检查)。如不雅认为在你仓库中应用明文来保存这个文件不安然,你可以用 base64 编码该文件,并将其存储为一个私有情况变量,或者你也可以对文件 进行加密,并周详钥存储在一个私有情况变量中。

    下面是一个示例,将市廛证书放在一个加密的文件中,并在 deploy 环节中应用它将 snap 宣布到 snap 市廛中。

    1. - deploy: 
    2.     name: Push to Snap Store 
    3.     command: | 
    4.       openssl aes-256-cbc -d -

        推荐阅读

        降低企业运维成本,LinuxONE更具优势

      在数字化时代的今天,企业IT体系发挥的感化越来越明显,产生的价值也越来越高,已经成为影响企业持续成长的核心竞争力。作>>>详细阅读


      本文标题:使用Snapcraft构建、测试并发布Snap软件包

      地址:http://www.17bianji.com/lsqh/36818.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)