1#!/bin/sh -xe 2# 3# Build and publish flatpak to the beta repo inside the Fedora container. 4# 5# Uses the FLATPAK_KEY environment variable to decrypt 6# - ggp signing key -- gpg.tar.gz 7# - ssh deployment key -- amazon-ec2.pem 8# 9 10if [ -z "$FLATPAK_KEY" ]; then 11 echo "Reguired \$FLATPAK_KEY not found, giving up" 12 exit 1 13fi 14 15set -xe 16 17# Automatic updates are in the way when starting build host: 18sudo systemctl disable --now dnf-makecache.timer 19sudo dnf clean all 20 21# Install required packages 22su -c "dnf install -y -q sudo dnf-plugins-core" 23sudo dnf install -q -y appstream flatpak-builder ccrypt make rsync gnupg2 24 25test -d /opencpn-ci && cd /opencpn-ci || : 26 27# Set up flatpak 28flatpak --user remote-add --if-not-exists \ 29 flathub https://flathub.org/repo/flathub.flatpakrepo 30flatpak --user install -y org.freedesktop.Platform//18.08 31flatpak --user install -y org.freedesktop.Sdk//18.08 32 33# Patch to use official master branch from github and build + build number. 34cd flatpak 35sed -i -e '/url:/s|\.\.|https://github.com/OpenCPN/OpenCPN.git|' \ 36 -e "/BUILD_NUMBER/s/0/$BUILD_NUMBER/" \ 37 org.opencpn.OpenCPN.yaml 38 39test -d ../build || mkdir ../build 40cd ../build 41make -f ../flatpak/Makefile build 42flatpak list 43 44# Decrypt and unpack gpg keys, sign and install into website/ 45ccat --envvar FLATPAK_KEY ../ci/gpg.tar.gz.cpt > gpg.tar.gz 46tar xf gpg.tar.gz 47chmod 500 opencpn-gpg 48make -f ../flatpak/Makefile install 49make GPG_HOMEDIR=opencpn-gpg -f ../flatpak/Makefile sign 50rm -rf gpg.tar.gz opencpn-gpg 51 52# Debug: show version in local repo. 53flatpak remote-add \ 54 --user --gpg-import=website/opencpn.key local $PWD/website/repo 55flatpak update --appstream local 56flatpak remote-ls local 57 58# Deploy website/ to deployment server. 59cp ../ci/id_opencpn.tar.cpt . 60ccdecrypt --envvar FLATPAK_KEY id_opencpn.tar.cpt 61tar -xf id_opencpn.tar 62chmod 600 .ssh/id_opencpn 63 64rsync -a --info=stats --delete-after \ 65 --rsh="ssh -o 'StrictHostKeyChecking no' -i .ssh/id_opencpn" \ 66 website/ opencpn@mumin.crabdance.com:/var/www/ocpn-flatpak/website 67rm -f .ssh/id_opencpn* 68 69# Restore the patched file so the caching works. 70git checkout ../flatpak/org.opencpn.OpenCPN.yaml 71 72# Debug: show version in remote repo. 73flatpak remote-add --user opencpn $PWD/website/opencpn.flatpakrepo 74flatpak update --appstream opencpn 75flatpak remote-ls opencpn 76 77# Validate the appstream data: 78appstreamcli validate app/files/share/metainfo/opencpn.appdata.xml 79