CI #200
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
schedule: | |
- cron: '01 0 * * *' # NIGHTLY @ 00:01 | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
# taken from: kiwix/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: | |
test_and_build: | |
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: Install Python dependencies for custom project generation | |
run: python -m pip install pyyaml | |
- name: Test python scripts | |
working-directory: custom | |
run: PYTHONPATH=src python -m unittest discover -s tests | |
- name: Set test tag variable as an output | |
id: vars | |
run: echo "tag=testapp_2023.12.1" >> $GITHUB_OUTPUT | |
- name: Validate and parse the tag | |
working-directory: custom | |
run: python src/tag_validator.py ${{ steps.vars.outputs.tag }} | |
- name: Check-out kiwix/kiwix-apple | |
uses: actions/checkout@v4 | |
with: | |
repository: kiwix/kiwix-apple | |
path: apple | |
- name: Install Kiwix dependencies | |
working-directory: apple | |
run: | # remove pre-commit, it's not needed for CI | |
cat Brewfile | grep -v -e pre-commit > Brewfile_CI | |
brew bundle --force --file Brewfile_CI | |
- 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/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 }} |