kiwix-build/.github/workflows/releaseNigthly.yml

242 lines
7.2 KiB
YAML

name: Release&Nigthly
on:
push:
tags:
- r_[0-9]+
schedule:
- cron: '0 1 * * *'
env:
DOCKER_VERSION: 32
jobs:
Docker:
strategy:
fail-fast: false
matrix:
variant: [bionic, f35, focal]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build docker image
shell: bash
run: |
TAGNAME=${{matrix.variant}}-${DOCKER_VERSION}
if [ ! $(curl -sflL https://hub.docker.com/v2/repositories/kiwix/kiwix-build_ci/tags/${TAGNAME}) ]
then
echo "${{secrets.docker_password}}" | docker login -u "${{secrets.docker_username}}" --password-stdin
FULLTAGNAME=kiwix/kiwix-build_ci:${TAGNAME}
docker build -t ${FULLTAGNAME} - < ${GITHUB_WORKSPACE}/.github/ci_images/${{matrix.variant}}_builder.dockerfile
docker push ${FULLTAGNAME}
fi
Linux:
strategy:
fail-fast: false
matrix:
target:
- native_static
- native_dyn
- native_mixed
- native_desktop
- armhf_static
- win32_static
- i586_static
- android_arm
- android_arm64
- android_x86
- android_x86_64
include:
- target: native_static
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: native_dyn
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: native_mixed
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: native_desktop
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: armhf_static
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: win32_static
image_variant: f35
lib_postfix: '64'
- target: i586_static
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: android_arm
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: android_arm64
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: android_x86
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
- target: android_x86_64
image_variant: bionic
lib_postfix: '/x86_64-linux-gnu'
env:
HOME: /home/runner
SSH_KEY: /tmp/id_rsa
runs-on: ubuntu-latest
needs: Docker
container:
image: "kiwix/kiwix-build_ci:${{matrix.image_variant}}-32"
options: "--device /dev/fuse --privileged"
steps:
- name: Checkout code
shell: bash
run: |
cd $HOME
git clone https://github.com/${REP}
cd ./${REP##*/}
git checkout --force ${GITHUB_SHA}
pip3 install --user --no-deps .
env:
REP: ${{github.repository}}
- name: secret
shell: bash
run: |
echo "${{secrets.ssh_key}}" > $SSH_KEY
chmod 600 $SSH_KEY
- name: Ensure base deps
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/ensure_base_deps.py
env:
PLATFORM_TARGET: ${{matrix.target}}
- name: Build release
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/build_release_nightly.py
env:
PLATFORM_TARGET: ${{matrix.target}}
BINTRAY_USER: kiwix
BINTRAY_PASS: ${{secrets.bintray_pass}}
GITHUB_PAT: ${{secrets.GHCR_TOKEN}}
- name: Upload failure logs
if: failure()
run: $HOME/kiwix-build/.github/scripts/upload_failure_logs.sh
env:
PLATFORM_TARGET: ${{matrix.target}}
Flatpak:
strategy:
fail-fast: false
env:
HOME: /home/runner
SSH_KEY: /tmp/id_rsa
PLATFORM_TARGET: flatpak
OS_NAME: focal
runs-on: ubuntu-latest
steps:
- name: Checkout code
shell: bash
run: |
cd $HOME
git clone https://github.com/${REP}
cd ./${REP##*/}
git checkout --force ${GITHUB_SHA}
pip3 install --user --no-deps .
env:
REP: ${{github.repository}}
- name: Install flatpak tools
run: |
sudo apt-get update
sudo apt-get install flatpak-builder ninja-build meson
- name: secret
shell: bash
run: |
echo "${{secrets.ssh_key}}" > $SSH_KEY
chmod 600 $SSH_KEY
- name: Ensure base deps
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/ensure_base_deps.py
- name: Build release
shell: bash
run: |
cd $HOME
kiwix-build/.github/scripts/build_release_nightly.py
- name: Upload failure logs
if: failure()
run: $HOME/kiwix-build/.github/scripts/upload_failure_logs.sh
Macos:
strategy:
fail-fast: false
matrix:
target:
- native_dyn
- native_mixed
runs-on: macos-latest
env:
SSH_KEY: /tmp/id_rsa
OS_NAME: osx
CERTIFICATE: /tmp/wmch-devid.p12
SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
ALTOOL_USERNAME: ${{ secrets.APPLE_SIGNING_ALTOOL_USERNAME }}
ASC_PROVIDER: ${{ secrets.APPLE_SIGNING_TEAM }}
KEYCHAIN: /Users/runner/build.keychain-db
steps:
- name: Checkout code
uses: actions/checkout@v1
- name: Setup python 3.8
uses: actions/setup-python@v1
with:
python-version: '3.8'
- name: Install packages
run:
brew install pkg-config ninja automake autoconf
- name: Install python modules
run: |
pip3 install meson pytest requests distro
pip3 install --no-deps $GITHUB_WORKSPACE
- name: secret
shell: bash
run: |
echo "${{secrets.ssh_key}}" > $SSH_KEY
chmod 600 $SSH_KEY
- name: install Apple certificate
shell: bash
run: |
echo "${{ secrets.APPLE_SIGNING_CERTIFICATE }}" | base64 --decode -o $CERTIFICATE
security create-keychain -p mysecretpassword $KEYCHAIN
security default-keychain -s $KEYCHAIN
security set-keychain-settings $KEYCHAIN
security unlock-keychain -p mysecretpassword $KEYCHAIN
security import $CERTIFICATE -k $KEYCHAIN -P "${{ secrets.APPLE_SIGNING_P12_PASSWORD }}" -A -T "/usr/bin/codesign"
rm $CERTIFICATE
security set-key-partition-list -S apple-tool:,apple: -s -k mysecretpassword $KEYCHAIN
security find-identity -v $KEYCHAIN
sudo sntp -sS -t 60 time4.google.com || true
xcrun altool --keychain $KEYCHAIN --store-password-in-keychain-item "ALTOOL_PASSWORD" -u "$ALTOOL_USERNAME" -p "${{ secrets.APPLE_SIGNING_ALTOOL_PASSWORD }}"
- name: Ensure base deps
shell: bash
run: |
cd $HOME
$GITHUB_WORKSPACE/.github/scripts/ensure_base_deps.py
env:
PLATFORM_TARGET: ${{matrix.target}}
- name: Build release
shell: bash
run: |
cd $HOME
$GITHUB_WORKSPACE/.github/scripts/build_release_nightly.py
env:
PLATFORM_TARGET: ${{matrix.target}}
- name: Upload failure logs
if: failure()
run: $GITHUB_WORKSPACE/.github/scripts/upload_failure_logs.sh
env:
PLATFORM_TARGET: ${{matrix.target}}