-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy path.gitlab-ci.yml
108 lines (100 loc) · 4.17 KB
/
.gitlab-ci.yml
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
variables:
LC_ALL: "en_US.UTF-8"
LANG: "en_US.UTF-8"
LANGUAGE: "en_US"
LIB_NAME: "kmmresult"
GRADLE_USER_HOME: "${CI_PROJECT_DIR}/.gradle"
GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.console=plain -Dmaven.repo.local=${CI_PROJECT_DIR}/.m2/repository"
SAST_JAVA_VERSION: 11
SECRET_DETECTION_EXCLUDED_PATHS: ".gradle,gradle,.m2"
SAST_EXPERIMENTAL_FEATURES: "true"
default:
image: gradle:jdk11
tags:
- docker
cache:
paths:
- ".gradle/wrapper"
- ".gradle/caches"
- ".m2/repository"
workflow:
rules:
- if: $CI_COMMIT_REF_NAME == "main" || $CI_COMMIT_REF_NAME == "development" || $CI_COMMIT_REF_NAME =~ /^release.*$/ || $CI_COMMIT_REF_NAME =~ /^feature.*$/
assembleJdk11:
except:
- tags
script: |
./gradlew --continue clean jvmJar check
assembleIos:
except:
- tags
tags:
- ios
script: |
./gradlew --continue clean iosArm64MainKlibrary iosX64MainKlibrary macosArm64MainKlibrary macosX64MainKlibrary check
assembleJs:
except:
- tags
script: |
./gradlew --continue clean jsJar wasm32MainKlibrary check
publish:
tags:
- ios
needs:
- job: assembleJdk11
- job: assembleIos
- job: assembleJs
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
when: manual
- if: '$CI_COMMIT_BRANCH == "development"'
when: manual
- if: '$CI_COMMIT_BRANCH =~ /^feature.*$/'
when: manual
- if: '$CI_COMMIT_BRANCH =~ /^release.*$/'
when: on_success
script: |
export VERSION=$(./gradlew properties | grep "^version: " | grep -Eo "[[:digit:]]+\.[[:digit:]]+(\.[[:digit:]]+)?((-[[:alnum:]]*)+)?")
[[ -z "$VERSION" ]] && { echo "Version is empty" ; exit 1; }
echo "Publishing version $VERSION for $LIB_NAME"
echo "VERSION=$VERSION" >> variables.env
./gradlew clean assemble assembleKmmResultXCFramework publish
if [[ $VERSION =~ "SNAPSHOT" ]]; then
VERSION=${VERSION/-SNAPSHOT/-$(date +"%Y%m%d.%H%M%S")-SNAPSHOT}
echo "Adapting version number for publishing of Snapshot Framework blobs to $VERSION"
fi
(cd "build/XCFrameworks/debug/"; zip -r "$LIB_NAME.zip" *.xcframework)
export CHECKSUM=$(shasum -a 256 "build/XCFrameworks/debug/$LIB_NAME.zip" | cut -d' ' -f1)
export PACKAGE_REMOTE_ZIP=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/$LIB_NAME/$VERSION/$LIB_NAME-$VERSION.zip
curl --http1.1 --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "build/XCFrameworks/debug/$LIB_NAME.zip" "${PACKAGE_REMOTE_ZIP}"
pushd ..
rm -rf swift-package-kmmresult
git clone --branch development "https://gitlab-ci-token:${SWIFT_REPO_ACCESS_TOKEN}@gitlab.iaik.tugraz.at/wallet/swift-package-kmmresult.git"
pushd swift-package-kmmresult
sed -i.bak "s|url: \".*\"|url: \"${PACKAGE_REMOTE_ZIP}\"|" Package.swift && rm Package.swift.bak
sed -i.bak "s|checksum: \".*\"|checksum: \"${CHECKSUM}\"|" Package.swift && rm Package.swift.bak
git add Package.swift
git commit -m "Update framework to ${VERSION} from commit ${CI_COMMIT_SHORT_SHA}"
git push
[[ ! $VERSION =~ "SNAPSHOT" ]] && git tag "$VERSION" && git push origin "$VERSION"
popd
popd
artifacts:
when: always
reports:
dotenv: variables.env
release:
image: registry.gitlab.com/gitlab-org/release-cli:latest
needs:
- job: publish
artifacts: true
rules:
- if: '$CI_COMMIT_REF_NAME == "main" || $CI_COMMIT_REF_NAME =~ /^release.*$/'
when: manual
script: |
[[ -z "$VERSION" ]] && { echo "Version is empty" ; exit 1; }
echo "Releasing version $VERSION of $LIB_NAME"
release-cli create --name "$VERSION" --tag-name "v$VERSION" --ref "$CI_COMMIT_SHA" --description "$(cat README.md)" \
--assets-link "{\"name\":\"$LIB_NAME-$VERSION.pom\",\"url\":\"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven/at/asitplus/wallet/$LIB_NAME/$VERSION/$LIB_NAME-$VERSION.pom\"}" \
--assets-link "{\"name\":\"$LIB_NAME-$VERSION.jar\",\"url\":\"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven/at/asitplus/wallet/$LIB_NAME/$VERSION/$LIB_NAME-$VERSION.jar\"}" \
--assets-link "{\"name\":\"$LIB_NAME-$VERSION.zip\",\"url\":\"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/$LIB_NAME/$VERSION/$LIB_NAME-$VERSION.zip\"}"