forked from FTBTeam/FTB-App
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
151 lines (145 loc) · 4.81 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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
stages:
- build
- build_app
- packaging
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
build_jar:
stage: build
image: gradle:7.3.2-jdk17
interruptible: true
dependencies: []
tags:
- linux-aarch64
cache:
key: ftb-app-gradle
paths:
- subprocess/.gradle
before_script:
- git fetch
- '[[ ! -z "$CI_COMMIT_TAG" ]] && export CI_TAGGED_BRANCH=$(git branch -a --contains "tags/$CI_COMMIT_TAG" | grep origin | sed "s|.*origin/||")'
script:
- cd subprocess
- export GRADLE_USER_HOME=.gradle
- gradle clean build -si
artifacts:
paths:
- subprocess/build/libs/
cache_node:
stage: build
image: node:18
interruptible: false
dependencies: []
tags:
- linux-aarch64
cache:
key: ftb-app-pnpm
paths:
- .pnpm-store/
script:
- npm install --global pnpm || true
- pnpm config set store-dir .pnpm-store
- pnpm install
- pnpm prune
# TODO build shim step
build_overwolf:
stage: build_app
image: node:18
interruptible: true
dependencies:
- build_jar
tags:
- linux-aarch64
cache:
key: ftb-app-pnpm
policy: pull
paths:
- .pnpm-store/
before_script:
- npm install --global pnpm || true
- pnpm config set store-dir .pnpm-store
script:
- cp subprocess/build/libs/version.json public/version.json
- pnpm install
- pnpm gen:license
- node overwolf/patchManifest.js
- pnpm vue:build:overwolf
- node overwolf/packageOpk.js
- |
echo "Signing OPK.."
pnpm ow opk sign -o overwolf/signed.opk overwolf/*.opk
if [ "$CI_COMMIT_BRANCH" == 'channel/beta' ]; then
echo "Uploading OPK to beta channel.."
pnpm ow opk upload -c 109 -w true overwolf/signed.opk | xargs pnpm ow opk release -p 100
elif [ "$CI_COMMIT_BRANCH" == 'channel/unstable' ]; then
echo "Uploading OPK to unstable channel.."
pnpm ow opk upload -c 495 -w true overwolf/signed.opk | xargs pnpm ow opk release -p 100
elif [ "$CI_COMMIT_BRANCH" == 'channel/preview' ]; then
echo "Uploading OPK to dev channel.."
pnpm ow opk upload -c 665 -w true overwolf/signed.opk | xargs pnpm ow opk release -p 100
elif [ "$CI_COMMIT_BRANCH" == 'release' ]; then
echo "Uploading OPK to release channel.."
pnpm ow opk upload -w true overwolf/signed.opk
fi
artifacts:
paths:
- overwolf/*.opk
build_electron:
stage: build_app
image: node:18
interruptible: true
dependencies:
- build_jar
tags:
- linux-aarch64
cache:
key: ftb-app-pnpm
policy: pull
paths:
- .pnpm-store/
before_script:
- npm install --global pnpm || true
- pnpm config set store-dir .pnpm-store
script:
- cp subprocess/build/libs/version.json public/version.json
- pnpm install
- pnpm gen:license
- pnpm build:electron
- cd release
- tar -czvf linux-unpacked.tar.gz linux-unpacked
- tar -czvf mac.tar.gz mac
artifacts:
expire_in: 2 days
paths:
- release/linux-unpacked.tar.gz
- release/mac.tar.gz
electron_install4j:
stage: packaging
interruptible: true
dependencies:
- build_jar
- build_electron
variables:
GIT_STRATEGY: clone
tags:
- shell
script:
- cd release
- tar -xvf linux-unpacked.tar.gz
- tar -xvf mac.tar.gz
- cd ../subprocess
- 'export VERSION=`jq -r .jarVersion build/libs/version.json`'
- 'export BRANCH=`jq -r .branch build/libs/version.json`'
- /Applications/install4j.app/Contents/Resources/app/bin/install4jc -L $INSTALL4J_LICENSE
- /Applications/install4j.app/Contents/Resources/app/bin/install4jc --disable-signing --mac-keystore-password $INSTALL4J_APPLE_KEYSTORE_PASSWORD --apple-id-password $INSTALL4J_APPLE_ID_PW -r $VERSION -D branch=$BRANCH ftbapp.install4j
- |
if [ "$BRANCH" != "release" ] || [ ! -z "$CI_COMMIT_TAG" ]; then
echo "Preparing files for FTP.."
mkdir -p "releaseUpload/$BRANCH/$VERSION/"
mv releaseBuild/jres releaseUpload
cp releaseBuild/updates.xml "releaseUpload/$BRANCH.xml"
find releaseBuild -type f -exec mv {} "releaseUpload/$BRANCH/$VERSION/" \;
echo "Files to upload:"
find releaseUpload
lftp -e "mirror -R -P=5 --verbose releaseUpload/ /" -u "$FTP_USER,$FTP_PASSWORD" "$FTP_SERVER"
fi