156
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,156 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '01 0 * * *' # NIGHTLY @ 00:01
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
# taken from: kiwix/apple .github/workflows/cd.yml
|
||||
env:
|
||||
KEYCHAIN: /Users/runner/build.keychain-db
|
||||
KEYCHAIN_PASSWORD: mysecretpassword
|
||||
KEYCHAIN_PROFILE: build-profile
|
||||
SSH_KEY: /tmp/id_rsa
|
||||
APPLE_STORE_AUTH_KEY_PATH: /tmp/authkey.p8
|
||||
|
||||
jobs:
|
||||
generate_build_deploy:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
destination:
|
||||
- platform: macOS
|
||||
- platform: iOS
|
||||
xcode_extra: -sdk iphoneos
|
||||
runs-on: macos-13
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: custom
|
||||
|
||||
- name: Set test tag variable as an output
|
||||
id: vars
|
||||
run: echo "tag=test_2023.12.1" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Validate and parse the tag
|
||||
run:
|
||||
|
|
||||
cd custom
|
||||
python src/tag_validator.py ${{ steps.vars.outputs.tag }}
|
||||
cd ..
|
||||
|
||||
- name: Check-out kiwix/apple
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: kiwix/apple
|
||||
path: apple
|
||||
|
||||
- name: Install Python dependencies for custom project generation
|
||||
run: python -m pip install pyyaml
|
||||
|
||||
- name: Install Kiwix dependencies
|
||||
run: | # remove pre-commit, it's not needed for CI
|
||||
cd apple
|
||||
cat Brewfile | grep -v -e pre-commit > Brewfile_CI
|
||||
brew bundle --force --file Brewfile_CI
|
||||
cd ..
|
||||
|
||||
- name: Generate project based on tag
|
||||
env:
|
||||
DWDS_HTTP_BASIC_ACCESS_AUTHENTICATION: ${{ secrets.DWDS_HTTP_BASIC_ACCESS_AUTHENTICATION }}
|
||||
run:
|
||||
|
|
||||
# move the custom files under the same folder as the kiwix repo
|
||||
mv custom/ apple/
|
||||
cd apple/custom
|
||||
|
||||
# make a custom copy of the Info.plist file
|
||||
cp ../Support/Info.plist Custom.plist
|
||||
|
||||
python src/tag_validator.py ${{ steps.vars.outputs.tag }}
|
||||
python src/generate_and_download.py
|
||||
|
||||
# move the custom project file to the main folder
|
||||
mv custom_project.yml ../
|
||||
cd ..
|
||||
|
||||
# run xcodegen on our custom project
|
||||
xcodegen -s custom_project.yml
|
||||
|
||||
ls -la
|
||||
|
||||
|
||||
- name: Set up scheme, version, build_number from files
|
||||
run: |
|
||||
# move the checked out github actions to root folder:
|
||||
mv apple/.github/ .
|
||||
|
||||
BRAND=$(<./apple/custom/.brand_name)
|
||||
echo "BRAND=$BRAND" >> $GITHUB_ENV
|
||||
|
||||
VERSION=$(<./apple/custom/.version_number)
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
|
||||
# taken from: kiwix/apple .github/workflows/cd.yml
|
||||
- name: Set up variables for build
|
||||
env:
|
||||
PLATFORM: ${{ matrix.destination.platform }}
|
||||
EXTRA_XCODEBUILD: ${{ matrix.destination.xcode_extra }}
|
||||
APPLE_STORE_AUTH_KEY_PATH: ${{ env.APPLE_STORE_AUTH_KEY_PATH }}
|
||||
APPLE_STORE_AUTH_KEY_ID: ${{ secrets.APPLE_STORE_AUTH_KEY_ID }}
|
||||
APPLE_STORE_AUTH_KEY_ISSUER_ID: ${{ secrets.APPLE_STORE_AUTH_KEY_ISSUER_ID }}
|
||||
shell: python
|
||||
run: |
|
||||
import os
|
||||
|
||||
extra_xcode = os.getenv("EXTRA_XCODEBUILD", "")
|
||||
if os.getenv("PLATFORM") == "iOS":
|
||||
extra_xcode += f" -authenticationKeyPath {os.getenv('APPLE_STORE_AUTH_KEY_PATH')}"
|
||||
extra_xcode += f" -authenticationKeyID {os.getenv('APPLE_STORE_AUTH_KEY_ID')}"
|
||||
extra_xcode += f" -authenticationKeyIssuerID {os.getenv('APPLE_STORE_AUTH_KEY_ISSUER_ID')}"
|
||||
|
||||
with open(os.getenv("GITHUB_ENV"), "a") as fh:
|
||||
fh.write(f"EXPORT_METHOD={'app-store'}\n")
|
||||
fh.write(f"EXTRA_XCODEBUILD={extra_xcode}\n")
|
||||
|
||||
- name: Prepare use of Apple Distribution Certificate
|
||||
shell: bash
|
||||
env:
|
||||
APPLE_DISTRIBUTION_SIGNING_CERTIFICATE: ${{ secrets.APPLE_DISTRIBUTION_SIGNING_CERTIFICATE }}
|
||||
APPLE_DISTRIBUTION_SIGNING_P12_PASSWORD: ${{ secrets.APPLE_DISTRIBUTION_SIGNING_P12_PASSWORD }}
|
||||
APPLE_DEVELOPMENT_SIGNING_IDENTITY: ${{ secrets.APPLE_DEVELOPMENT_SIGNING_IDENTITY }}
|
||||
run: |
|
||||
echo "SIGNING_CERTIFICATE=${APPLE_DISTRIBUTION_SIGNING_CERTIFICATE}" >> "$GITHUB_ENV"
|
||||
echo "SIGNING_CERTIFICATE_P12_PASSWORD=${APPLE_DISTRIBUTION_SIGNING_P12_PASSWORD}" >> "$GITHUB_ENV"
|
||||
echo "SIGNING_IDENTITY=${APPLE_DEVELOPMENT_SIGNING_IDENTITY}" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Add Apple Store Key
|
||||
env:
|
||||
APPLE_STORE_AUTH_KEY_PATH: ${{ env.APPLE_STORE_AUTH_KEY_PATH }}
|
||||
APPLE_STORE_AUTH_KEY: ${{ secrets.APPLE_STORE_AUTH_KEY }}
|
||||
shell: bash
|
||||
run: echo "${APPLE_STORE_AUTH_KEY}" | base64 --decode -o $APPLE_STORE_AUTH_KEY_PATH
|
||||
|
||||
- name: Build xcarchive
|
||||
uses: ./.github/actions/xcbuild
|
||||
with:
|
||||
action: archive
|
||||
xc-destination: generic/platform=${{ matrix.destination.platform }}
|
||||
# custom app specific
|
||||
version: ${{ env.VERSION }}
|
||||
XC_SCHEME: ${{ env.BRAND }}
|
||||
DOWNLOAD_DEPENDENCIES: false
|
||||
XC_WORKSPACE: apple/Kiwix.xcodeproj/project.xcworkspace/
|
||||
# eof custom app specific
|
||||
APPLE_DEVELOPMENT_SIGNING_CERTIFICATE: ${{ secrets.APPLE_DEVELOPMENT_SIGNING_CERTIFICATE }}
|
||||
APPLE_DEVELOPMENT_SIGNING_P12_PASSWORD: ${{ secrets.APPLE_DEVELOPMENT_SIGNING_P12_PASSWORD }}
|
||||
DEPLOYMENT_SIGNING_CERTIFICATE: ${{ env.SIGNING_CERTIFICATE }}
|
||||
DEPLOYMENT_SIGNING_CERTIFICATE_P12_PASSWORD: ${{ env.SIGNING_CERTIFICATE_P12_PASSWORD }}
|
||||
KEYCHAIN: ${{ env.KEYCHAIN }}
|
||||
KEYCHAIN_PASSWORD: ${{ env.KEYCHAIN_PASSWORD }}
|
||||
KEYCHAIN_PROFILE: ${{ env.KEYCHAIN_PROFILE }}
|
||||
EXTRA_XCODEBUILD: ${{ env.EXTRA_XCODEBUILD }}
|
11
testapp/info.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"about_app_url": "https://www.kiwix.org/support",
|
||||
"about_text": "CI Test Application",
|
||||
"app_name": "TestApp",
|
||||
"app_store_id": "id1281693200",
|
||||
"enforced_lang": "en",
|
||||
"settings_default_external_link_to": "alwaysLoad",
|
||||
"settings_show_external_link_option": true,
|
||||
"settings_show_search_snippet": false,
|
||||
"zim_url": "https://dev.kiwix.org/apple/custom/test/wikipedia_en_ray_charles_maxi_2023-12.zim"
|
||||
}
|
74
testapp/testapp.xcassets/AppIcon.appiconset/Contents.json
Normal file
@ -0,0 +1,74 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "test_1024.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
},
|
||||
{
|
||||
"filename" : "test_16.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "test_32 1.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "test_32.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "test_64.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "test_128.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "test_256 1.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "test_256.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "test_512.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "test_512 1.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "512x512"
|
||||
},
|
||||
{
|
||||
"filename" : "test_1024 1.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "512x512"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_1024 1.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_1024.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_128.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_16.png
Normal file
After Width: | Height: | Size: 486 B |
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_256 1.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_256.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_32 1.png
Normal file
After Width: | Height: | Size: 893 B |
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_32.png
Normal file
After Width: | Height: | Size: 893 B |
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_512 1.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_512.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
testapp/testapp.xcassets/AppIcon.appiconset/test_64.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
6
testapp/testapp.xcassets/Contents.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
12
testapp/testapp.xcassets/GenericZimFile.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "icon_128x128.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
testapp/testapp.xcassets/GenericZimFile.imageset/icon_128x128.png
vendored
Normal file
After Width: | Height: | Size: 12 KiB |
15
testapp/testapp.xcassets/Other.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "notebook.svg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"preserves-vector-representation" : true
|
||||
}
|
||||
}
|
43
testapp/testapp.xcassets/Other.imageset/notebook.svg
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 56.997 56.997" style="enable-background:new 0 0 56.997 56.997;" xml:space="preserve">
|
||||
<path style="fill:#424A60;" d="M46.002,51.997H7.998V0h38.003c1.655,0,2.997,1.342,2.997,2.997V49
|
||||
C48.998,50.655,47.657,51.997,46.002,51.997z"/>
|
||||
<rect x="37.998" style="fill:#7383BF;" width="5" height="51.997"/>
|
||||
<g>
|
||||
<rect x="7.998" y="17.007" style="fill:#25AE88;" width="30" height="18"/>
|
||||
<rect x="42.998" y="17.007" style="fill:#25AE88;" width="6" height="18"/>
|
||||
</g>
|
||||
<polygon style="fill:#CC4B4C;" points="17.998,56.997 14.998,54.997 11.998,56.997 11.998,51.997 17.998,51.997 "/>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 990 B |
BIN
testapp/testapp.xcassets/StarAdd.imageset/BookmarkAdded.png
vendored
Normal file
After Width: | Height: | Size: 27 KiB |
12
testapp/testapp.xcassets/StarAdd.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "BookmarkAdded.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
testapp/testapp.xcassets/StarRemove.imageset/BookmarkRemoved.png
vendored
Normal file
After Width: | Height: | Size: 28 KiB |
12
testapp/testapp.xcassets/StarRemove.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "BookmarkRemoved.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
16
testapp/testapp.xcassets/welcomeLogo.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "test_243.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"preserves-vector-representation" : true,
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
BIN
testapp/testapp.xcassets/welcomeLogo.imageset/test_243.png
vendored
Normal file
After Width: | Height: | Size: 6.7 KiB |