Skip to content

Commit 3fd3900

Browse files
committed
added github workflow
1 parent 4722187 commit 3fd3900

File tree

2 files changed

+254
-0
lines changed

2 files changed

+254
-0
lines changed

.github/workflows/publish.yml

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
name: Publish artfiacts to Maven Central
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: Version
8+
default: 0.3.15
9+
10+
jobs:
11+
build-native:
12+
runs-on: ${{ matrix.os }}
13+
env:
14+
target-path: ${{ matrix.platform }}-${{ matrix.arch }}
15+
strategy:
16+
matrix:
17+
platform: [linux, win32, darwin]
18+
arch: [x86, x86-64, aarch64]
19+
exclude:
20+
- platform: darwin
21+
arch: x86
22+
- platform: win32
23+
arch: aarch64
24+
- platform: win32
25+
arch: x86
26+
include:
27+
- platform: darwin
28+
os: macos-14
29+
brew-packages: swig
30+
cmd: ./build.sh
31+
- platform: darwin
32+
arch: x86-64
33+
cmd: CC='cc -target x86_64-apple-darwin20.1.0' CXX='c++ -std=c++11 -target x86_64-apple-darwin20.1.0' ./build.sh && mv supranational/blst/Mac/{aarch64,amd64}
34+
- platform: linux
35+
os: ubuntu-22.04
36+
extra-packages: gcc-9 g++-9
37+
cmd: CC=gcc-9 CXX=g++-9 ./build.sh
38+
- platform: linux
39+
arch: aarch64
40+
extra-packages: gcc-9-aarch64-linux-gnu g++-9-aarch64-linux-gnu
41+
cmd: CC=aarch64-linux-gnu-gcc-9 CXX=aarch64-linux-gnu-g++-9 ./build.sh && mv supranational/blst/Linux/{amd64,aarch64}
42+
- platform: linux
43+
arch: x86
44+
extra-packages: gcc-9-multilib g++-9-multilib
45+
cmd: CC='gcc-9 -m32' CXX='g++-9 -m32' ./build.sh && mv supranational/blst/Linux/{amd64,x86}
46+
- platform: win32
47+
os: windows-2022
48+
cmd: bash -c './build.sh'
49+
50+
steps:
51+
- uses: actions/checkout@v4
52+
with:
53+
repository: supranational/blst
54+
ref: v${{ inputs.version }}
55+
- uses: actions/setup-java@v4
56+
with:
57+
distribution: 'temurin'
58+
java-version: '11'
59+
- if: ${{ matrix.extra-packages }}
60+
run: |
61+
sudo apt-get update
62+
sudo apt-get install -y ${{ matrix.extra-packages }}
63+
- if: ${{ matrix.brew-packages }}
64+
run: brew install ${{ matrix.brew-packages }}
65+
- name: Build native image
66+
run: |
67+
cd bindings/java
68+
${{ matrix.cmd }}
69+
- uses: actions/upload-artifact@v4
70+
with:
71+
name: blst-${{ env.target-path }}.zip
72+
path: |
73+
bindings/java/supranational/blst
74+
!bindings/java/supranational/blst/*.class
75+
76+
publish:
77+
runs-on: ubuntu-latest
78+
needs: build-native
79+
steps:
80+
- uses: actions/checkout@v4
81+
- uses: actions/setup-java@v4
82+
with:
83+
java-version: 11
84+
distribution: temurin
85+
check-latest: true
86+
cache: maven
87+
server-id: central
88+
server-username: OSSRH_USERNAME
89+
server-password: OSSRH_PASSWORD
90+
gpg-private-key: ${{ secrets.OSSRH_GPG_KEY }}
91+
- uses: actions/download-artifact@v4
92+
with:
93+
merge-multiple: true
94+
path: artifacts/
95+
- env:
96+
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
97+
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
98+
MAVEN_GPG_PASSPHRASE: ${{ secrets.OSSRH_GPG_PASSPHRASE }}
99+
run: |
100+
mkdir -p src/main/{resources,java}/supranational/blst
101+
mv artifacts/*.java src/main/java/supranational/blst
102+
mv artifacts/* src/main/resources/supranational/blst/
103+
mvn versions:set -DnewVersion=${{ inputs.version }}-SNAPSHOT -DgenerateBackupPoms=false
104+
mvn -B deploy

pom.xml

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<properties>
8+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
9+
</properties>
10+
11+
<groupId>com.wavesplatform</groupId>
12+
<artifactId>blst-java</artifactId>
13+
<packaging>jar</packaging>
14+
<version>1.0.0-SNAPSHOT</version>
15+
16+
<name>BLST-JAVA</name>
17+
<description>Java bindings for BLST</description>
18+
<url>https://github.com/wavesplatform/blst-java</url>
19+
20+
<licenses>
21+
<license>
22+
<name>Apache License, Version 2.0</name>
23+
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
24+
<distribution>repo</distribution>
25+
</license>
26+
</licenses>
27+
28+
<scm>
29+
<url>https://github.com/wavesplatform/blst-java</url>
30+
</scm>
31+
32+
<developers>
33+
<developer>
34+
<id>snazarov</id>
35+
<name>Sergey Nazarov</name>
36+
<email>snazarov@units.network</email>
37+
<organization>Waves</organization>
38+
<organizationUrl>https://wavesplatform.com</organizationUrl>
39+
<roles>
40+
<role>Developer</role>
41+
</roles>
42+
<timezone>+3</timezone>
43+
</developer>
44+
</developers>
45+
46+
<distributionManagement>
47+
<snapshotRepository>
48+
<id>central</id>
49+
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
50+
</snapshotRepository>
51+
</distributionManagement>
52+
53+
<build>
54+
<plugins>
55+
<plugin>
56+
<groupId>org.apache.maven.plugins</groupId>
57+
<artifactId>maven-enforcer-plugin</artifactId>
58+
<version>3.5.0</version>
59+
<executions>
60+
<execution>
61+
<id>enforce-maven</id>
62+
<goals>
63+
<goal>enforce</goal>
64+
</goals>
65+
<configuration>
66+
<rules>
67+
<requireMavenVersion>
68+
<version>3.6.3</version>
69+
</requireMavenVersion>
70+
</rules>
71+
</configuration>
72+
</execution>
73+
</executions>
74+
</plugin>
75+
<plugin>
76+
<groupId>org.sonatype.central</groupId>
77+
<artifactId>central-publishing-maven-plugin</artifactId>
78+
<version>0.8.0</version>
79+
<extensions>true</extensions>
80+
<configuration>
81+
<autoPublish>true</autoPublish>
82+
<waitUntil>published</waitUntil>
83+
</configuration>
84+
</plugin>
85+
<plugin>
86+
<groupId>org.apache.maven.plugins</groupId>
87+
<artifactId>maven-compiler-plugin</artifactId>
88+
<version>3.14.0</version>
89+
<configuration>
90+
<source>11</source>
91+
<target>11</target>
92+
<showWarnings>true</showWarnings>
93+
<compilerArgs>
94+
<arg>-Xlint:-options</arg>
95+
</compilerArgs>
96+
</configuration>
97+
</plugin>
98+
<plugin>
99+
<groupId>org.apache.maven.plugins</groupId>
100+
<artifactId>maven-source-plugin</artifactId>
101+
<version>3.3.1</version>
102+
<executions>
103+
<execution>
104+
<id>attach-sources</id>
105+
<goals>
106+
<goal>jar-no-fork</goal>
107+
</goals>
108+
</execution>
109+
</executions>
110+
</plugin>
111+
<plugin>
112+
<groupId>org.apache.maven.plugins</groupId>
113+
<artifactId>maven-gpg-plugin</artifactId>
114+
<version>3.2.7</version>
115+
<executions>
116+
<execution>
117+
<id>sign-artifacts</id>
118+
<phase>verify</phase>
119+
<goals>
120+
<goal>sign</goal>
121+
</goals>
122+
</execution>
123+
</executions>
124+
<configuration>
125+
<!-- Prevent `gpg` from using pinentry programs -->
126+
<gpgArguments>
127+
<arg>--pinentry-mode</arg>
128+
<arg>loopback</arg>
129+
</gpgArguments>
130+
</configuration>
131+
</plugin>
132+
<plugin>
133+
<groupId>org.apache.maven.plugins</groupId>
134+
<artifactId>maven-javadoc-plugin</artifactId>
135+
<configuration>
136+
<source>11</source>
137+
</configuration>
138+
<version>3.11.2</version>
139+
<executions>
140+
<execution>
141+
<id>attach-javadocs</id>
142+
<goals>
143+
<goal>jar</goal>
144+
</goals>
145+
</execution>
146+
</executions>
147+
</plugin>
148+
</plugins>
149+
</build>
150+
</project>

0 commit comments

Comments
 (0)