Skip to content

Commit 4550a72

Browse files
committed
added github workflow
1 parent 4722187 commit 4550a72

2 files changed

Lines changed: 242 additions & 0 deletions

File tree

.github/workflows/publish.yml

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

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.5.3-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)