forked from FreeTubeApp/FreeTube
-
Notifications
You must be signed in to change notification settings - Fork 5
143 lines (117 loc) · 4.92 KB
/
buildCordova.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
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Build Android
on:
push:
branches: [ development ]
jobs:
build:
runs-on: ubuntu-latest
environment: development
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 20.x
cache: "yarn"
- name: 🧶 Yarn install
run: yarn ci
- name: Set environment icon & splash for android app
run: |
# to make it easier to tell which is which when multiple are installed
node ./_scripts/_setAppSplashTheme.mjs --nightly
- name: 🔍Lint code
run: yarn lint
continue-on-error: true
- name: 📚Read package.json
id: pkg
uses: jaywcjlove/[email protected]
- name: Set Version Number Variable
id: versionNumber
uses: actions/github-script@v6
with:
result-encoding: string
script: |
return '${{ steps.pkg.outputs.version }}-nightly-${{ github.run_number }}'
- name: Set App ID Variable
id: appId
uses: actions/github-script@v6
with:
result-encoding: string
script: |
return '${{ steps.pkg.outputs.name }}.nightly'
- name: ⬆ Update package.json version
uses: jossef/[email protected]
with:
file: package.json
field: version
value: ${{ steps.versionNumber.outputs.result }}
- name: ⬆ Update package.json app environment
uses: jossef/[email protected]
with:
file: package.json
field: name
value: ${{ steps.appId.outputs.result }}
- name: ⬆ Update package.json product name
uses: jossef/[email protected]
with:
file: package.json
field: productName
value: ${{ steps.pkg.outputs.productName }} Nightly
- name: 📦 Pack for 🕸web with Node.js
run: yarn pack:web
- name: 🐋 Build docker image
run: |
docker build -t ghcr.io/marmadilemanteater/freetubecordova-nightly:${{ steps.versionNumber.outputs.result }} .
docker build -t ghcr.io/marmadilemanteater/freetubecordova-nightly:latest .
- name: 🗝 Login to Github Container Registry
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u MarmadileManteater --password-stdin
- name: 📡 Push docker image to Github Container Registry
run: |
docker push ghcr.io/marmadilemanteater/freetubecordova-nightly:${{ steps.versionNumber.outputs.result }}
docker push ghcr.io/marmadilemanteater/freetubecordova-nightly:latest
- name: 📡 Upload PWA Artifact
uses: actions/upload-artifact@v3
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-PWA
path: dist/web
- name: 📦 Pack for 📱Android
run: yarn pack:android:dev
- name: 🦴 Fetch keystore from secrets
run: |
while read -r line;
do
echo "${line}" >> freetube.keystore.asc
done <<< '${{ secrets.KEYSTORE }}'
gpg -d --passphrase '${{ secrets.KEYSTORE_PASSWORD }}' --batch freetube.keystore.asc >> freetube.keystore
- name: Inject signing config from secrets
run: |
sed -i 's@// inject signing config@// inject signing config\r\nstorePassword = "${{ secrets.KEYSTORE_PASSWORD }}"@' android/app/build.gradle.kts
sed -i 's@// inject signing config@// inject signing config\r\nstoreFile = file("../../freetube.keystore")@' android/app/build.gradle.kts
sed -i 's@// inject signing config@// inject signing config\r\nkeyPassword = "${{ secrets.KEYSTORE_PASSWORD }}"@' android/app/build.gradle.kts
sed -i 's@// inject signing config@keyAlias = "freetubecordova"@' android/app/build.gradle.kts
cat android/app/build.gradle.kts
- name: Update name
run: |
sed -i 's/"FreeTube Android"/"FreeTube Nightly"/g' android/settings.gradle.kts
sed -i 's/FreeTube Android/FreeTube Nightly/g' android/app/src/main/res/values/strings.xml
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: cd android/ && chmod +x gradlew
- name: Build with Gradle
run: cd android/ && ./gradlew build
- name: Rename APK w/ version info
run: |
cp android/app/build/outputs/apk/debug/app-debug.apk dist/freetube-${{ steps.versionNumber.outputs.result }}-Android.apk
- name: 📡 Upload APK Artifact
uses: actions/upload-artifact@v3
with:
name: freetube-${{ steps.versionNumber.outputs.result }}-Android.apk
path: dist/freetube-${{ steps.versionNumber.outputs.result }}-Android.apk