首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

写给Android工程师的 Github CI 快速指北

故此,学完本篇,你将学会 Github CI 的基础使用,以及一些常见的实用操作,: 自动化打包以及上传; 自动化版本号与code; 自动化发布release; 逐步解开传统思维陷阱...比如当前示例,我们有多个任务,分别如下: -拉代码; -设置 jdk 与 Gradle 环境; -为 Gradle 设置运行权限; -执行 Gradle 命令: build; uses: 用于导入开源的...自动化版本号 本小节示例代码见:settings.gradle、release.yml 在日常发版本的过程,我们都有打 tag 的经历,比如每周在发布新的版本之前,打 新版本tag ,同时打新的线上包...这种方式固然好用,但是还是不够严谨,对于常见的团队而言,一般有更统一的名称, 版本名@版本号,示例:2.1.1@807,当然这都是后话了。...这个时候,我们就可以利用 Github Action,获取最新 release.tag,然后将其以 gradle传参 的方式传递到我们本次编译,从而实现自动化版本号。

63620

GitHub Actions初体验:自动化校验和部署Java项目

GitHub Action 简介 GitHub Actions是GitHubCI/CD服务。它可以自动和规范项目的CI/CD流程,减少人工成本,降低人人因风险。...下面以Gradle方式构建的Java项目为例,说明如何使用GitHub Actions优化项目CI/CD流程。...优化CI流程 为了保证代码质量,项目的PR需要符合下述需求: 符合Java代码规范 通过Gradle Build 怎么用GitHub Actions实现?...因此,我们选择将所有密钥都放进环境变量,来可能保证密钥的安全性。 在gradle文档可以找到使用环境变量的密钥签名方式。...因此,我们把密钥放进GitHub Secrets, 并在Github Actions中使用它。 另外,为了防止变更忘记修改版本号,在PR时触发自动发布task lists,来提醒开发者更新版本

36710
您找到你想要的搜索结果了吗?
是的
没有找到

基于Travis CI的Android项目自动构建流程

Travis CIGithub结合比较紧密,对GitHub上的开源Repo是免费的,私有Repo收费。...Travis CI为此提供了两种解决方案: 对敏感信息、密码、证书等进行对称加密,在CI构建环境时进行解密; 将密码等通过Travis CI的控制台设置为构建时的环境变量。...在 .travis.yml自动生成Travis CI环境下解密文件的配置。...在每次构建完成后,就会删除所有文件,设置缓存机制,可以保证规定的缓存文件不需要每次下载,提高每次构建的速度;但是如果在更好的基础配置的情况(比如更新Gradle版本等,建议先清除缓存在跑CI)。...skip_cleanup:默认情况下Travis CI在完成编译后会清除所有生成的文件,因此要将 skip_cleanup设置为 true来忽略此操作。

1.5K20

现代 CI 系统太复杂,方向跑偏了

只要搜索一下如何在 CI 平台 Y 上执行 X 操作,就可以找到一些可以直接复制和粘贴的代码。毕竟,没有人愿意为了 CI 配置问题浪费太多时间,他们只是想快速发布产品。...前面我说过,CI 系统是一种远程执行代码的服务。虽然从传统上看,构建系统是在本地运行 (因此不是服务),但现代的构建系统( Bazel、Buck、Gradle) 完全不一样。...如果你使用过 GitHub Actions、GitLab Pipelines,你就会看到很多你熟悉的基本元素:要执行的命令列表、要在 Docker 映像执行的命令、构成工件的文件路径、重试设置,等等。...有人会将现有的可扩展构建系统( Bazel、Buck 和 Gradle的节点转换为平台的计算任务,这样就可以实现构建系统和 CI 系统 (可能还有数据管道之类的东西) 的统一。...我愿景的所有组件现在都以某种形式存在着。Bazel、Gradle Enterprise 和其他现代构建系统都有用于远程执行和缓存的 RPC。

89410

使用gradle插件发布项目到nexus中央仓库

Gradle是一个很好的构建工具,灵活而又强大,可不可以直接在Gradle的任务中直接构建和上传到中央仓库或者其他自定义的nexus仓库呢?答案是肯定的。...Gradle Nexus Publish Plugin历史 今天要给大家介绍的gradle插件名字叫做Gradle Nexus Publish Plugin,最近才发布了1.0.0版本,有小伙伴可能要问了...插件的使用 在gradle中使用该插件很简单,首先需要引入这个插件: plugins { id("io.github.gradle-nexus.publish-plugin") version..."«version»" } 注意,这个插件必须在 Gradle 5.0 或者之后的版本使用,并且在根项目中引入。...一种方法是在~/.gradle/gradle.properties 中进行配置,或者设置 ORG_GRADLE_PROJECT_sonatypeUsername 和 ORG_GRADLE_PROJECT_sonatypePassword

84620

使用gradle插件发布项目到nexus中央仓库

Gradle是一个很好的构建工具,灵活而又强大,可不可以直接在Gradle的任务中直接构建和上传到中央仓库或者其他自定义的nexus仓库呢?答案是肯定的。...Gradle Nexus Publish Plugin历史 今天要给大家介绍的gradle插件名字叫做Gradle Nexus Publish Plugin,最近才发布了1.0.0版本,有小伙伴可能要问了...插件的使用 在gradle中使用该插件很简单,首先需要引入这个插件: plugins { id("io.github.gradle-nexus.publish-plugin") version..."«version»" } 注意,这个插件必须在 Gradle 5.0 或者之后的版本使用,并且在根项目中引入。...一种方法是在~/.gradle/gradle.properties 中进行配置,或者设置 ORG_GRADLE_PROJECT_sonatypeUsername 和 ORG_GRADLE_PROJECT_sonatypePassword

1.4K40

使用gradle插件发布项目到nexus中央仓库

Gradle是一个很好的构建工具,灵活而又强大,可不可以直接在Gradle的任务中直接构建和上传到中央仓库或者其他自定义的nexus仓库呢?答案是肯定的。...Gradle Nexus Publish Plugin历史 今天要给大家介绍的gradle插件名字叫做Gradle Nexus Publish Plugin,最近才发布了1.0.0版本,有小伙伴可能要问了...插件的使用 在gradle中使用该插件很简单,首先需要引入这个插件: plugins { id("io.github.gradle-nexus.publish-plugin") version..."«version»" } 注意,这个插件必须在 Gradle 5.0 或者之后的版本使用,并且在根项目中引入。...一种方法是在~/.gradle/gradle.properties 中进行配置,或者设置 ORG_GRADLE_PROJECT_sonatypeUsername 和 ORG_GRADLE_PROJECT_sonatypePassword

1.5K40

落地包体积监控,用Kotlin写一个APK差异分析CLI

因为我们的项目是在 Github 上托管,所以自然而然也有相应的 Action 作为check,所以此时首先最基础想的就是: 直接拉上一个版本的 apk 作为基准包,然后和本次的包一个 diff ,并保存结果...; 如果结果,某个类别( res、dex 等)超出指定阈值,则在PR里加一个评论,以及飞书通知一下。...这里感谢 虾哥(掘金: 究极逮虾户) 解惑,原本以为 exec 这种方式会导致传参时的部分默认值无法设置问题。...关于CI方面 关于 CI 方面,首选就是 Github Action,具体 Github 也有专门的教程,上手难度也很低,几分钟足以,对于经常写开源库的作者而言,这个应该也算是基本技巧。...效果如下: 最终效果 最终搭配 Github CI 实现的效果如上,开源地址 apk-size-diff-cli。

41610

Gradle依赖管理:编译时和运行时依赖的区别

引言: 在软件开发的世界,依赖管理始终是一个核心议题。特别是在现代的构建工具Gradle,了解如何有效地管理依赖不仅可以确保代码的稳定性,还可以避免许多常见的问题。...此外,Gradle还与许多现代CI/CD工具完美集成,为持续集成和持续交付提供了坚实的基础。...集成与扩展: Gradle可以与许多现代IDE和CI/CD工具完美集成,IntelliJ IDEA, Jenkins, Travis CI等,同时也支持通过API来扩展其功能。...3)如何在Gradle声明编译时依赖 在Gradle,你可以使用implementation或compile(在旧版本Gradle)配置来声明编译时依赖。...3)如何在Gradle声明运行时依赖 在Gradle,你可以使用runtimeOnly配置来声明只在运行时需要的依赖,这意味着它们在编译时不会被包括在内。

13510

Jetpack Compose ! 来战!

事实上,我花在 代码格式 以及 Github CI 的时间和编码的时间差不多。...明天是最后一天了,如果还有打算参加的朋友,给你一些建议: import 依赖时不要使用 * 号 但是 IDE 在导入多个同样包下的类时,会自动使用 * 号,可以在设置关闭。...但是在示例项目中本地执行这个命令需要安装 JDK 11,可以在 gradle.properties 文件中指定 org.gradle.java.home ,但是不要提交到 Github 。...如果还有其他错误,就要看 CI 的具体错误信息了。比如我就一直卡在了 test(23) 。 因为我挪动了 MainActivity 的位置,但是没有改 androidTest 包下的引用。...我不想花费大量的时间在一个还没有 beta 版本的 UI 框架上。 即使目前 Google 已经发布了 beta-01版本,我仍然没有下定决心去学习 Compose 。

66910

「持续集成实践系列」Jenkins 2.x 搭建CI需要掌握的硬核要点(一)

CI系列大纲 市面上关于CI/CD的建设如果仅从工具、框架层面来讲,方案有挺多,TeamCity、GitLab CI、Bamboo、Circle CI、Travis CI、Jenkins、公司自研(在研发建设...而在众多的持续集成CI建设工具体系,Jenkins基本上可以说是独占鳌头,也是大多数公司最常用、最首选的工具之一,占据了将近70%以上的市场。...Jenkins 1.X版本主要通过插件的方式来实现,确切地讲,Jenkins 2也是通过对已有插件的重点升级和新插件的引入来获取新功能。...脚本式语法(script syntax)是Jenkins最开始实现流水线即代码的方式,这是一种命令式风格,在以前版本的Jenkins,流水线即代码大体就是Groovy脚本,其中插件部分针对Jenkins...//运行Gradle进行编译和单元测试 8 sh "gradle clean comileJava test" 9 } 10} 而声明式流水线优点有: 更结构化,贴近传统的Jenkins

88910

「持续集成实践系列」Jenkins 2.x 搭建CI需要掌握的硬核要点

CI系列大纲 市面上关于CI/CD的建设如果仅从工具、框架层面来讲,方案有挺多,TeamCity、GitLab CI、Bamboo、Circle CI、Travis CI、Jenkins、公司自研(在研发建设...而在众多的持续集成CI建设工具体系,Jenkins基本上可以说是独占鳌头,也是大多数公司最常用、最首选的工具之一,占据了将近70%以上的市场。...Jenkins 1.X版本主要通过插件的方式来实现,确切地讲,Jenkins 2也是通过对已有插件的重点升级和新插件的引入来获取新功能。...脚本式语法(script syntax)是Jenkins最开始实现流水线即代码的方式,这是一种命令式风格,在以前版本的Jenkins,流水线即代码大体就是Groovy脚本,其中插件部分针对Jenkins...看一则简单的,脚本式流水线示例: node("worker_node1"){ stage("Source"){ //从Git仓库获取代码 git 'git@github.com

84420
领券