-
Notifications
You must be signed in to change notification settings - Fork 5.9k
/
Copy pathbuild-kotlin-maven.sh
executable file
·57 lines (46 loc) · 1.97 KB
/
build-kotlin-maven.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/bash
#
# Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
# Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
#
# Script for building reproducible-maven.zip from sources. This is a full set of artifacts published to maven central during
# the Kotlin release process.
# Run the script in the root Kotlin directory.
set -e
if [ $# -lt 3 ]; then
echo "Not enough arguments provided. Usage: $0 DEPLOY_VERSION BUILD_NUMBER KOTLIN_NATIVE_VERSION"
exit 1
fi
DEPLOY_VERSION=$1
BUILD_NUMBER=$2
KOTLIN_NATIVE_VERSION=$3
echo "DEPLOY_VERSION=$DEPLOY_VERSION"
echo "BUILD_NUMBER=$BUILD_NUMBER"
echo "KOTLIN_NATIVE_VERSION=$KOTLIN_NATIVE_VERSION"
# Update versions in pom.xml
./libraries/mvnw -DnewVersion=$DEPLOY_VERSION -DgenerateBackupPoms=false -DprocessAllModules=true -f libraries/pom.xml versions:set
# Build part of kotlin and publish it to the local maven repository and to build/repo directory
./gradlew \
-PdeployVersion=$DEPLOY_VERSION \
-Pbuild.number=$BUILD_NUMBER \
-Pversions.kotlin-native=$KOTLIN_NATIVE_VERSION \
-Pteamcity=true \
--no-daemon \
--info \
publish publishToMavenLocal
# Build maven part and publish it to the same build/repo
./libraries/mvnw \
-f libraries/pom.xml \
clean deploy \
-Ddeploy-url=file://$(pwd)/build/repo \
-DskipTests
# Prepare for reproducibility check
mkdir -p build/repo-reproducible
cp -R build/repo/. build/repo-reproducible
# maven-metadata contains lastUpdated section with the build time
find build/repo-reproducible -name "maven-metadata.xml*" -exec rm -rf {} \;
# spdx SBOM contains creationInfo with datetime
find build/repo-reproducible -name "*.spdx.json*" -exec rm -rf {} \;
# Each file has own timestamp that would affect zip file hash if not aligned
find build/repo-reproducible -exec touch -t "198001010000" {} \;
cd build/repo-reproducible && find . -type f | sort | zip -X reproducible-maven-$DEPLOY_VERSION.zip -@ && cd -