Skip to content

match renderer deploy workflow again #4

match renderer deploy workflow again

match renderer deploy workflow again #4

Workflow file for this run

name: "Deploy"
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "deploy"
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
qtarch: [wasm_singlethread, android_arm64_v8a, android_armv7]
qtversion: ['6.6.1']
include:
- qtarch: wasm_singlethread
qttarget: 'desktop'
qtmodules: 'qtcharts'
additional_build_flags: '--target install'
- qtarch: android_arm64_v8a
qttarget: 'android'
qtmodules: 'qtcharts qtpositioning'
- qtarch: android_armv7
qttarget: 'android'
qtmodules: 'qtcharts qtpositioning'
steps:
- name: Install dependencies
run: sudo apt-get install -y build-essential ninja-build
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
- uses: mymindstorm/setup-emsdk@v13
if: matrix.qttarget == 'desktop'
with:
version: 3.1.37
- name: Install Qt native version (required by android version)
uses: jurplel/install-qt-action@v3
with:
aqtversion: '==3.1.*'
version: ${{ matrix.qtversion }}
host: linux
target: 'desktop'
arch: gcc_64
dir: '${{github.workspace}}/qt'
install-deps: 'true'
- name: Set QT_HOST_PATH
run: echo "QT_HOST_PATH=${Qt6_DIR}" >> "$GITHUB_ENV"
- name: Install Qt crosscompile target version
uses: jurplel/install-qt-action@v3
with:
aqtversion: '==3.1.*'
version: ${{ matrix.qtversion }}
host: linux
target: ${{ matrix.qttarget }}
arch: ${{ matrix.qtarch }}
dir: '${{github.workspace}}/qt'
install-deps: 'true'
modules: ${{ matrix.qtmodules }}
- name: Make qt cross binaries executable
run: |
chmod u+x ${Qt6_DIR}/bin/*
- name: Verify emcc
if: matrix.qttarget == 'desktop'
run: emcc -v
- name: Set reusable strings
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
id: strings
shell: bash
run: |
BUILD_DIR="build"
APK_TARGET="unittests"
echo "BUILD_DIR=$BUILD_DIR" >> $GITHUB_ENV
echo "APK_TARGET=$APK_TARGET" >> $GITHUB_ENV
echo "INSTALL_DIR=install/${{ matrix.qtarch }}" >> $GITHUB_ENV
echo "APK_DIR=$BUILD_DIR/$APK_TARGET/android-build/build/outputs/apk/" >> $GITHUB_ENV
echo "ANDROID_BUILD_DIR=$BUILD_DIR/$APK_TARGET/android-build/" >> $GITHUB_ENV
- name: Configure CMake
env:
CMAKE_PREFIX_PATH: ${{env.Qt6_DIR}}/lib/cmake
run: >
${Qt6_DIR}/bin/qt-cmake
-G Ninja
-B $BUILD_DIR
-DCMAKE_BUILD_TYPE=Release
-DALP_WWW_INSTALL_DIR=$INSTALL_DIR
-DFMT_INSTALL=OFF
${{ matrix.additional_cmake_flags }}
-S ${{ github.workspace }}
- name: Build
run: cmake --build $BUILD_DIR ${{ matrix.additional_build_flags }}
- name: Signing Android package
env:
secret_test: ${{ secrets.KEYSTOREPASSWORD }}
if: matrix.qttarget == 'android' && env.secret_test != ''
run: |
echo ${{ secrets.SIGNINGKEYBASE64 }} > release.keystore.base64
base64 -d release.keystore.base64 > release.keystore
$QT_HOST_PATH/bin/androiddeployqt --input $BUILD_DIR/$APK_TARGET/android-alpineapp-deployment-settings.json --output $ANDROID_BUILD_DIR --android-platform android-33 --gradle --release --sign release.keystore alpinemaps --storepass ${{ secrets.KEYSTOREPASSWORD }}
- name: Readme why Android package was not signed
env:
secret_test: ${{ secrets.KEYSTOREPASSWORD }}
if: matrix.qttarget == 'android' && env.secret_test == ''
run: |
README_PATH=$APK_DIR/read_me_in_case_you_wonder_why_the_apk_is_not_signed.txt
echo "Well, the apk wasn't signed because there is no key to sign it with in your repository (the one this was created in)." >> $README_PATH
echo "" >> $README_PATH
echo "These are the steps to generate such a key:" >> $README_PATH
echo "- https://stackoverflow.com/questions/3997748/how-can-i-create-a-keystore. Use 'alpinemaps' as the alias!" >> $README_PATH
echo "- If you have the android dev setup ready in Qt Creator, you can also create the keystore via Projects (on the left side toolboar) -> Android Qt ... -> Build -> Build Steps -> Build Android APK -> Application Signature -> Create. Use 'alpinemaps' as the alias!" >> $README_PATH
echo "- Then you have to encode the keystore in base64, e.g., on linux via 'base64 keystorefile > keystorefile.base64'" >> $README_PATH
echo "- Finally, create the following secrets in github -> your repo -> Settings -> Secrets and variables -> Actions -> Repository secrets" >> $README_PATH
echo " SIGNINGKEYBASE64 = the base64 encoded key" >> $README_PATH
echo " KEYSTOREPASSWORD = the password used to create the keystore" >> $README_PATH
echo "" >> $README_PATH
echo "Oh, and I hope this saved your day ;)" >> $README_PATH
- name: Copy android packages
if: matrix.qttarget == 'android'
run: |
mkdir -p $INSTALL_DIR
cp -r $APK_DIR/* $INSTALL_DIR
- name: Create artifact
uses: actions/upload-artifact@v4
with:
name: files_${{ matrix.qtarch }}
path: ${{ github.workspace }}/install/
if-no-files-found: error
deploy:
if: github.event_name == 'push'
needs: build
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: sudo apt-get install -y lftp
- name: Clone repository (only for version number)
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: ${{github.workspace}}/downloaded
- name: Move into place
run: |
mkdir $GITHUB_WORKSPACE/github_page
mv $GITHUB_WORKSPACE/downloaded/*/* $GITHUB_WORKSPACE/github_page/
- name: Upload to an FTP host
env:
FTP_USER: ${{ secrets.FTP_USER }}
FTP_PASS: ${{ secrets.FTP_PASS }}
FTP_HOST: ${{ secrets.FTP_HOST }}
if: env.FTP_HOST != ''
run: |
reponame=$(echo $GITHUB_REPOSITORY | grep -oE "[^/]*$")
lftp -c "
set ftp:ssl-force true;
open -u $FTP_USER,$FTP_PASS $FTP_HOST;
mirror -R -e -v -n $GITHUB_WORKSPACE/github_page/. ./${reponame}_$(git describe --tags --dirty=-d --abbrev=1);
"
- name: Fix headers for wasm_multithread
run: |
cd $GITHUB_WORKSPACE/github_page/wasm_multithread
wget https://raw.githubusercontent.com/gzuidhof/coi-serviceworker/master/coi-serviceworker.min.js
sed -i -e 's#<body onload="init()">#<body onload="init()"><script src="coi-serviceworker\.min\.js"></script>#g' alpineapp.html
- name: Generate Directory Listings
uses: jayanta525/[email protected]
with:
FOLDER: github_page
- name: Create Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: ${{github.workspace}}/github_page
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4