当前位置: 首页 > news >正文

建设新农村网站/太原seo外包服务

建设新农村网站,太原seo外包服务,字号 wordpress,邢台市123自从多年前 JCenter 关闭服务之后,GSY 项目版本就一直发布在 Jitpack 上,如今每个月也都有大概 10w 左右下载,但是近年来时不时就会出现历史版本丢失的问题,而且有时候还不是某个具体版本丢失,而是版本里的某几个依赖突…

自从多年前 JCenter 关闭服务之后,GSY 项目版本就一直发布在 Jitpack 上,如今每个月也都有大概 10w+ 左右下载,但是近年来时不时就会出现历史版本丢失的问题,而且有时候还不是某个具体版本丢失,而是版本里的某几个依赖突然 404 了,例如 #6645 / #5973 问题所示,所以在找不到原因的情况,只能寻找多一个版本托管的平台做 backup。

在对比了 MavenCenter 和 Github Packages 之后,感觉还是 Github Packages 更加符合我这个懒人的要求,首先不需要注册新平台帐号,体系还在 Github 内,通过 Github Action 就可以实现自动构建,之后根据 tag 将 aar 包发布到 Github Packages ,整体来说还是比较轻量。

昨天评论区有人说介绍下这个流程,所以这里就简单梳理一下,其实并不复杂。

开始

使用 Github Action 我记得以前也介绍过,相对来说也挺简单,只需要在自己 Github 的开源项目下创建 .github/workflows 目录,然后编写脚本就可以完成接入,另外针对 Github Actions 官方还提供了 marketplace 用于开发者提交或者引用别人写好的 aciton ,所以很多时候开发者在使用 Github Actions 时,其实会变成了在 marketplace 里挑选和组合 action 的场景

以下是 GSY 项目在 .github/workflows/release.yml 下的 action 配置,这里简单介绍一下:

  • on push tags :表示在提交任意 tag 时触发 action 执行,你也可以自己定制规则
  • jobs 下有两个任务,一个是 release 用于构建一个 demo apk,一个是 publish 用于发布 Github Packages
  • release 下:
    • runs-on: ubuntu-latest 指定运行环境
    • 使用 actions/checkout@v3 切换到指定 tag
    • 使用 actions/setup-java@v3 指定 jdk 版本
    • 使用 gradle/gradle-build-action@v2 指定 gradle 环境并执行命令 app:assembleRelease
    • 使用 ncipollo/release-action@v1 将编译好的 apk 发布到 github release
  • publish 下:
    • 给予同样逻辑,不同之处在于通过 gradle 环境,直接执行 ./gradlew publish 将 library aar 发布到 github packags 的 mvn
name: Releaseon:push:tags:- '*'jobs:release:name: Github Releaseruns-on: ubuntu-lateststeps:- uses: actions/checkout@v3- uses: actions/setup-java@v3with:distribution: 'zulu'java-version: 21- name: Build APKuses: gradle/gradle-build-action@v2with:arguments: app:assembleRelease- name: Create Releaseuses: ncipollo/release-action@v1with:artifacts: "app/build/outputs/apk/release/app-release.apk"token: ${{ secrets.GITHUB_TOKEN }}publish:name: Publish To Github Packagesruns-on: ubuntu-latestpermissions:contents: readpackages: writesteps:- uses: actions/checkout@v4- uses: actions/setup-java@v4with:distribution: 'zulu'java-version: 21- uses: gradle/gradle-build-action@v2- name: Publish Packagerun: ./gradlew publishenv:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

上述的 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 是通过 github 通用 ci 的 automatic-token-authentication 实现 ,在每个 workflow job 执行时,GitHub 会自动创建一个唯一的 GITHUB_TOKEN 密钥在 workflow 中进行身份验证,Token 的权限仅限于包含workflow 的仓库。

可以看到一套下下来,基本不需要你写什么 action 脚本,之后就是在每个需要发布的 library 的 build.gralde 添加脚本 ,例如这里 https://maven.pkg.github.com/ 是固定前缀,用户是 CarGuo,repo 名为 GSYVideoPlayer 的 publishing 配置,而 credentials 只需要在 action 运行时读取系统变量配置即可:

apply plugin: "maven-publish"publishing {repositories {maven {name = "gsyvideoplayer"url = "https://maven.pkg.github.com/CarGuo/GSYVideoPlayer"credentials {username = System.getenv("GITHUB_ACTOR")password = System.getenv("GITHUB_TOKEN")}}}
}

剩下的就是发布 mvn 的常规配置,这部分应该无需多言了,简单举个例子,例如写一个通用的 publish.gradle 读取 gradle.properties 配置,然后将这个 publish.gradle apply 到上面的 build.gralde 脚本里:

apply plugin: "maven-publish"android {publishing {singleVariant('release') {withSourcesJar()withJavadocJar()}}
}afterEvaluate {publishing {publications {release(MavenPublication) {from components.releasegroup = PROJ_GROUPartifactId = PROJ_ARTIFACTIDversion = PROJ_VERSIONpom {name = PROJ_NAMEdescription = PROJ_DESCRIPTIONurl = PROJ_VCSURLlicenses {license {name = "The Apache License, Version 2.0"url = "https://www.apache.org/licenses/LICENSE-2.0.txt"}}developers {developer {id = DEVELOPER_IDname = DEVELOPER_NAME}}scm {connection = PROJ_ISSUETRACKERURLdeveloperConnection = PROJ_VCSURLurl = PROJ_WEBSITEURL}}}}}
}

以下就是对应上述 publish.gradle 的根目录下的 gradle.properties 配置,核心就是前面四个参数,简单来说就是 com.shuyu:gsyvideoplayer:10.0.0 这样的对应

PROJ_GROUP=com.shuyu
PROJ_VERSION=10.0.0PROJ_NAME=gsyvideoplayer
PROJ_ARTIFACTID=gsyvideoplayerPROJ_WEBSITEURL=https://github.com/CarGuo/GSYVideoPlayer
PROJ_ISSUETRACKERURL=https://github.com/CarGuo/GSYVideoPlayer/issues
PROJ_VCSURL=https://github.com/CarGuo/GSYVideoPlayer.git
PROJ_DESCRIPTION=android video player
PROJ_USER_MAVEN=GSYVideoPlayerDEVELOPER_ID=guo
DEVELOPER_NAME=guoshuyu
DEVELOPER_EMAIL=xxxxxx@.com

如果一个 project 有多个 module 需要发布定义,可以在每个 moudle 的 gradle.properties 配置单独配置 PROJ_NAMEPROJ_ARTIFACTID 变量

在此之后只需要在 git 提交时提交某个 tag ,github 就会自动触发 action 执行,然后构建 aar 包并发布到 github packages 。

当然,这里有一个很让人菊紧的问题,那就是 PROJ_NAMEPROJ_ARTIFACTID 必须是小写,别问我为什么,我也不知道,stackoverflow 上大家都这么说,如果有大写,会出现如图 Received status code 422 from server: Unprocessable Entity 这样的错误,改成全小写才成功通过:

成功发布后,就可以在你的 Packages 上看到提交的包了,之后就可以开始引用,不过 github packags 引用 mvn 也有一个让人菊紧的问题。

image-20241031104914180

引用 github mvn ,主要是需要在你的 allprojects{ repositories { 下增加 https://maven.pkg.github.com 的引用,如下代码所示,这里主要是需要 credentials 授权,是的,github packages 上就算你的 mvn 包是 public 的,它也需要你授权,而且目前 github 的口径是,不考虑不授权支持,而授权主要是通过生成一个用户 token 来完成。

maven {url 'https://maven.pkg.github.com/CarGuo/GSYVideoPlayer'credentials {username = '你的github账户'password = '你的生成 token'}
}

生成 token 理论上就是在 Github 右上角点击头像,然后 Settings - Developer Settings - Personal access tokens - tokens (classic) - Generate new token(classic 即可生成,这里需要注意:

  • 记得过期时间选择永久
  • 如果只是为了 mvn,就选一个 read:packages 即可

详细生成自己 token 的方式可见:https://docs.github.com/zh/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens

到这里基本完成了 github ci 发布 mvn 和引用的工作了,其实抛开 gradle mvn 配置部分,其实整个流程还是简单的,首先 github 账号和 github 项目本来就存在的,只需要配置下 action 和 gradle 指向 github pkg 即可完成发布,之后只需要在每次需要发布时提交 tag 即可实现自动发布,除了引用麻烦一些,其实整体都还不错。

http://www.jmfq.cn/news/5317201.html

相关文章:

  • 网站建设大约多少钱/培训心得体会1000字通用
  • 宿州网站建设时间/手机app免费下载
  • 龙泉建设工程有限公司网站/站长工具传媒
  • 青岛东橙网站建设/淘宝推广平台有哪些
  • 郑州做营销型网站建设/制作一个简单的网站
  • 四川泰龙建设集团公司官方网站/淘宝关键词工具
  • 兰州网站建设ulezhi/温州seo网站推广
  • 政府 社区网站建设/互联网推广怎么找客户
  • 同学会网站建设方案/百度搜索引擎排名规则
  • 网站建设前期准备方案/怎样才能上百度
  • 惠州市网站建设企业/深圳网络优化seo
  • 免费做手机网站建设/移动营销
  • 宁波建设工程主管部门网站/潍坊网站模板建站
  • 国际酒店网站建设不好/百度新闻首页
  • 现在网站建设怎么收费/优势的seo网站优化排名
  • 成都科技网站建设电话咨询/网络热词英语
  • 政府网站建设的流程/如何做网站平台
  • 网站建设的四大要素/济南网络推广公司电话
  • 杯子电子商务网站的建设/济宁百度推广电话
  • 建设银行 网站 交党费/什么是seo技术
  • 红旗河沟网站建设/百度一下就知道官方网站
  • 高性能网站建设进阶.../谷歌浏览器中文手机版
  • 大理工程建设信息网站/绍兴seo公司
  • 广州网站建设培训学校/网站推广的主要方法
  • 聊城有限公司网站建设 中企动力济二分/seo优化标题
  • 江西省建设协会网站/类似58的推广平台有哪些平台
  • 网站建设管理理论/seo技术外包
  • 电子政务和网站建设自评/专业seo优化推广
  • 龙湾区建设局的网站/百度百家官网入口
  • 省规划建设发展局网站首页/2345网址导航官网下载