Gradle Github Action 发布

Posted dounine

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle Github Action 发布相关的知识,希望对你有一定的参考价值。

简介

Gradle 整合 GitHub Actions 自动化发布 Java 项目至 Maven 仓库。文章内是将项目发布至 sonatype 提供的仓库中。

证书

生成

gpg --full-generate-key

查看证书id

gpg --list-secret-keys --keyid-format SHORT

/Users/lake/.gnupg/pubring.kbx
------------------------------
sec   rsa2048/7BDDF87A 2020-07-24 [SC]
xxxxxxx.....

证书发布

gpg --keyserver hkps.pool.sks-keyservers.net --send-keys 7BDDF87A

Gradle 项目配置

group 'com.dounine'
version '1.0.4'

buildscript 
    repositories 
        maven 
            url "https://plugins.gradle.org/m2/"
        
    
    dependencies 
        classpath "com.github.jengelman.gradle.plugins:shadow:4.0.2"
    


apply plugin: "com.github.johnrengelman.shadow"
apply plugin: 'signing'
apply plugin: 'scala'
apply plugin: 'maven-publish'

task sourcesJar(type: Jar) 
    from sourceSets.main.allJava
    classifier = 'sources'


task javadocJar(type: Jar) 
    from javadoc
    classifier = 'javadoc'


publishing 
    publications 
        mavenJava(MavenPublication) 
            from components.java

            artifact sourcesJar
            artifact javadocJar

            pom 
                name = 'spark-sql-datasource'
                description = 'spark sql datasource'
                url = 'https://github.com/dounine/spark-sql-datasource'
                licenses 
                    license 
                        name = 'The Apache License, Version 2.0'
                        url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    
                
                developers 
                    developer 
                        id = 'lake'
                        name = 'lake'
                        email = 'amwoqmgo@gmail.com'
                    
                
                scm 
                    connection = 'scm:git:git://github.com/dounine/spark-sql-datasource.git'
                    developerConnection = 'scm:git:ssh://github.com/dounine/spark-sql-datasource.git'
                    url = 'https://github.com/dounine/spark-sql-datasource'
                
            
        
    
    repositories 
        maven 
            def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
            def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
            url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
            credentials 
                username System.getenv("MAVEN_USERNAME") ?: MAVEN_USERNAME
                password System.getenv("MAVEN_PASSWORD") ?: MAVEN_PASSWORD
            
        
    


sourceCompatibility = 1.8

repositories 
    mavenLocal()
    mavenCentral()
    maven  url "http://repo.hortonworks.com/content/repositories/releases/" 



task copyJars(type: Copy) 
    from configurations.runtime
    into new File('build/libs/lib')

compileJava.dependsOn copyJars

shadowJar 
    zip64 true


signing 
    sign publishing.publications.mavenJava


ext 
    flinkVersion = "1.8-SNAPSHOT"
    hbaseVersion = "2.0.0"
    slf4jVersion = "1.7.25"


dependencies 
    compile 'org.scala-lang:scala-library:2.12.12'

    compile group: 'org.apache.spark', name: 'spark-sql_2.12', version: '3.0.0'
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.47'

    testCompile group: 'junit', name: 'junit', version: '4.12'

Github Action

密钥导出

gpg --export-secret-keys 7BDDF87A > /tmp/secring.gpg

将密钥进行base64编码

base64 /tmp/secring.gpg > /tmp/secring.gpg.b64

namevalue
MAVEN_PASSWORDsonatype仓库密码
MAVEN_USERNAMEsonatype仓库用户名
SIGNING_KEY_IDGPG证书ID
SIGNING_PASSWORDGPG密码
SIGNING_SECRET_KEY_RING_KEYGPG文件密钥base64编码

将SIGNING_SECRET_KEY_RING_KEY值设置为上面的secring.gpg.b64文件内容

项目/.github/workflows/main.yaml

name: Publish package to the Maven Central Repository
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Java
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Decode gpg
        run: |
          echo "$ secrets.SIGNING_SECRET_KEY_RING_KEY " > ~/secring.gpg.b64
          base64 -d ~/secring.gpg.b64 > ~/secring.gpg
      - name: Publish package
        run: gradle publish -Psigning.keyId=$ secrets.SIGNING_KEY_ID  -Psigning.password=$ secrets.SIGNING_PASSWORD  -Psigning.secretKeyRingFile=$(echo  ~/secring.gpg)
        env:
          MAVEN_USERNAME: $ secrets.MAVEN_USERNAME 
          MAVEN_PASSWORD: $ secrets.MAVEN_PASSWORD 

在github右边创建Release版本即可自动打包上传

查看action的打包运行情况

最后登录 sonatype 把上传的项目进行close > release 即可发布

以上是关于Gradle Github Action 发布的主要内容,如果未能解决你的问题,请参考以下文章

Gradle Github Action 发布

GitHub Action appleboy/ssh-action:如何避免 SSH 密钥出现在服务器上?

如何保护生产凭证免受 Github Action 的影响?

Github Action 部署到阿里云ECS

gradle 设置密钥库文件的绝对路径值

Gradle signArchives 无法读取密钥