東川印記

一本東川,笑看爭龍斗虎;寰茫兦者,度橫佰昧人生。

从jcenter到mavenCentral

2021年8月12日星期四



2月份就收到了消息,拖到了8月份才决定要弄。。。。

1. 仓库权限

注册账号 https://issues.sonatype.org/

原来18年就上传过库,后面不知为什么搁置了。。。。

然后到这个地址 https://issues.sonatype.org/projects 创建 issue

项目看起来,Community Support - Open Source Project Repository Hosting (OSSRH) 这个更像一些

This Jira project is for issues related to publishing to Maven Central. Selecting the correct Issue Type will help us process your ticket faster:

  • New Project: For registering a new Group ID on OSSRH for publishing to Central
  • Publishing Support: For general publishing support on existing Group IDs such as permission changes or publishing errors.

那就是选 New Project.

此处配图1


gourpid必须使用自己的域名,二级的也行 central.sonatype.org/publish/requirements/coordinates

Project URL 直接用 github库地址

scm url 直接上一个地址 加.git

其他默认

创建。


很快,过了没两分钟,就提示让验证 域名了

Permalink
central-ossrh
Central OSSRH added a comment - 7 minutes ago
Do you own the domain dcjz.ml? If so, please verify ownership via one of the following methods:

Add a TXT record to your DNS referencing this JIRA ticket: OSSRH-72029 (Fastest) https://central.sonatype.org/faq/how-to-set-txt-record/
Setup a redirect to your https://github.com/senrsl page (if it does not already exist)

然后,跑到 域名DNS配置,增加一条

OSSRH-72029   TXT  3600  https://issues.sonatype.org/browse/OSSRH-72029

然后回issue回复: I own this domain dcjz.ml and have added TXT record to DNS resolution.

然后,去查 txt记录

SENRSL:Downloads senrsl$ nslookup dcjz.ml
Server:        8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:    dcjz.ml
Address: 34.92.166.185

SENRSL:Downloads senrsl$ nslookup -q=txt dcjz.ml
;; Got SERVFAIL reply from 8.8.8.8, trying next server
Server:        114.114.114.114
Address:    114.114.114.114#53

** server can't find dcjz.ml: SERVFAIL

SENRSL:Downloads senrsl$

难道是加的时间短?

折腾了半天,依然没有查到txt记录,但是回去一刷新,竟然通过了。。。。

ml.dcjz has been prepared, now user(s) dcjz can:
Publish snapshot and release artifacts to s01.oss.sonatype.org
Have a look at this section of our official guide for deployment instructions:
https://central.sonatype.org/publish/publish-guide/#deployment

Depending on your build configuration, your first component(s) might be released automatically after a successful deployment.
If that happens, you will see a comment on this ticket confirming that your artifact has synced to Maven Central.
If you do not see this comment within an hour or two, you can follow the steps in this section of our guide:
https://central.sonatype.org/publish/release/

######

As part of our efforts to improve the security and quality posture of the open source supply chain,
we plan to enable additional scanning of dependencies for security alerts soon. Since you're already
hosting your source code in Github, you can get these insights today by enabling Sonatype Lift.
Sonatype Lift is free forever on public repositories! Lift tells you about open source vulnerabilities
during code review, and goes beyond open source to scan your code for both code quality and security issues,
providing feedback right in your pull requests.
More information can be found at https://links.sonatype.com/products/lift/github-integration

######

这。。。。

补充: 这个是对的,需要区分大小写。。。。

SENRSL:Downloads senrsl$ nslookup -q=txt ossrh-72029.dcjz.ml
Server:        8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
ossrh-72029.dcjz.ml    text = "https://issues.sonatype.org/browse/OSSRH-72029"

Authoritative answers can be found from:

SENRSL:Downloads senrsl$

回去看一眼 mavenCentral的 dashboard,jcenter倒了以后,mavenCentral工作量明显变大了。。。。

发布包的目标为 https://s01.oss.sonatype.org/   或 https://oss.sonatype.org/


2. gpg加密

gpg依然可以用 jcenter现成的。

SENRSL:Downloads senrsl$ gpg -k
/Users/senrsl/.gnupg/pubring.kbx
--------------------------------
pub   rsa2048 2018-09-12 [SC]
      37。。。。。。。。。。。。。FD
uid           [ 绝对 ] senRsl DC (thrid4all) <d。。。。@yeah.net>
sub   rsa2048 2018-09-12 [E]

SENRSL:Downloads senrsl$

SENRSL:Downloads senrsl$ gpg --export-secret-keys  -o secring.gpg

生成了 secring.gpg文件,后面要用。

想了半天,终于想起了密码,isY218

然后把公钥发送到keyserver

SENRSL:Downloads senrsl$ gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 37。。。。。FD
gpg: 正在发送密钥 2AC2774CF08C95FD 到 hkp://keyserver.ubuntu.com:11371
SENRSL:Downloads senrsl$ gpg --keyserver keyserver.ubuntu.com --send-keys 37。。。。。FD
gpg: 正在发送密钥 2AC2774CF08C95FD 到 hkp://keyserver.ubuntu.com
SENRSL:Downloads senrsl$

二选一就行了

然后一直 收不到创建成功。。。。

SENRSL:Downloads senrsl$ gpg --search-keys 37。。。。FD
gpg: error searching keyserver: No name
gpg: 公钥服务器搜索失败:No name
SENRSL:Downloads senrsl$

这个好像行

SENRSL:Downloads senrsl$ gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 37。。。。。。FD
gpg: 密钥 。。。。。FD:"senRsl DC (thrid4all) <d。。。。@yeah.net>" 未改变
gpg: 处理的总数:1
gpg:              未改变:1
SENRSL:Downloads senrsl$

3. 发布

依据jcenter规则,大体分 几个目录,借机合并

根项目 core、bridge、shell

根目录 bridge/adapter、common/net、libs/*、plugin/*、aider/*,还有个 java过来的顶级common

那就保留根目录、common合 net和java、libs、plugin.

按照通用玩法,应该是 按产品或者技术栈归类,更明确

但是 个人就省点事吧。。。。

然后去 连续申请了三个,就被无情的打击了,貌似是不需要了?

Central OSSRH added a comment - 08/10/21 03:53 AM
Only one JIRA Issue per top-level groupId is necessary. You should already have all the necessary permissions to deploy any new artifacts under this groupId or any sub-groups, thanks to OSSRH-72029 .

可是应该怎么理解这句呢?

屮,查了半天,然后回来看这句话,any sub-groups,原来如此。。。。

然后写脚本,这里要注意

singing信息需要写到 gradle.prop里面,不然会读不到

然后 repository里面的version一直读到 unspecified ,导致把snapshot包传到release环境,结果一直返回400 Received status code 400 from server: Bad Request

明天继续

今天只安排了六场面试呢。。。。。

2021年08月11日12:10:29

昨天就上传了snapshot,上传后去哪了呢?

找了一遭,staging repository里没有,但是在外部staging里面是有的。。。。

snapshot里面也有。。。。

不需要close后校验?直接就校验了?

然后version去掉-SNAPSHOT,上传release,发现 就出现在了staging repository里,点击close,等发布正式版。

还可以通过这个链接看到 s01.oss.sonatype.org/content/repositories/

过了一会,状态变成了closed,也就是校验完毕,然后点击release,进行最终发布。

点完release,staging repository里面就没了,原来 staging跟git 的staging是一样的,是发布前的暂存区,发布后自己就没了。

怪不得发布snapshot不会在这里显示。

然后查看 release跟snapshot里面都是有的。。。。


4. 引用

此时,去拉取 上传的包 失败

可以明确看到这三个的调用地址

    - https://dl.google.com/dl/android/maven2/ml/dcjz/core/1.0.10/core-1.0.10.pom
    - https://dl.google.com/dl/android/maven2/ml/dcjz/core/1.0.10/core-1.0.10.jar
    - https://jcenter.bintray.com/ml/dcjz/core/1.0.10/core-1.0.10.pom
    - https://jcenter.bintray.com/ml/dcjz/core/1.0.10/core-1.0.10.jar
    - https://repo.maven.apache.org/maven2/ml/dcjz/core/1.0.10/core-1.0.10.pom
    - https://repo.maven.apache.org/maven2/ml/dcjz/core/1.0.10/core-1.0.10.jar

对应

        google()
        jcenter()
        mavenCentral()

过了有十分钟,就能拉取到了!

5. 后续

然后发现打的包不全,发布同一个版本时,无法release了。。。。

Artifact updating: Repository ='releases:Releases' does not allow updating artifact='/ml/dcjz/core/1.0.10/core-1.0.10.pom'

看起来是 不能自动替换?

发布过的也没找到地方删除。。。。

查了下,竟然无法删除,也不能覆盖。。。。

在release之前是可以drop删掉的。。。。


6. 删除github提交记录

singing信息必须要写到gradle.prop里才能读到,这就坑了

SENRSL:sample senrsl$ git log

SENRSL:sample senrsl$ git reset --hard 目标

SENRSL:sample senrsl$ git push origin HEAD --force

这样本地和GitHub代码都会变成以前的,再重新拷一遍。。。。

7,siging的配置

默认必须放在gradle.prop里面,不然 singing插件会读不到

但是呢,其实是 读到了ext里面

依然可以 放到local.prop里,然后再手动读到ext中

ext["signing.keyId"] = properties.getProperty("signing.keyId")
ext["signing.password"] = properties.getProperty("signing.password")
ext["signing.secretKeyRingFile"] = properties.getProperty("signing.secretKeyRingFile")

这样就可以了。

--
senRsl
2021年08月09日15:16:19

没有评论 :

发表评论