1#!/usr/bin/env bash 2 3# 4# Build the travis flatpak artifacts. Uses docker to run Fedora 5# in the Travis ubuntu VM; the actual build is done in the Fedora 6# container. 7# 8 9# bailout on errors and echo commands. 10set -xe 11if [ -z "$FLATPAK_KEY" ]; then 12 echo "Reguired \$FLATPAK_KEY not found, giving up" 13 exit 1 14fi 15 16set -xe 17 18test -d /opencpn-ci && cd /opencpn-ci || : 19 20wget -q -O - https://dl.google.com/linux/linux_signing_key.pub \ 21 | sudo apt-key add - 22sudo apt-key adv \ 23 --keyserver keyserver.ubuntu.com --recv-keys 78BD65473CB3BD13 24 25sudo add-apt-repository -y ppa:alexlarsson/flatpak 26sudo apt update -y 27 28# Install required packages 29sudo apt install -q -y appstream flatpak flatpak-builder git ccrypt make rsync gnupg2 30 31 32# Set up flatpak 33flatpak --user remote-add --if-not-exists \ 34 flathub https://flathub.org/repo/flathub.flatpakrepo 35flatpak --user install -y org.freedesktop.Platform//18.08 36flatpak --user install -y org.freedesktop.Sdk//18.08 37 38# Patch to use official master branch from github and build + build number. 39cd flatpak 40sed -i -e '/url:/s|\.\.|https://github.com/OpenCPN/OpenCPN.git|' \ 41 -e "/BUILD_NUMBER/s/0/$BUILD_NUMBER/" \ 42 org.opencpn.OpenCPN.yaml 43 44test -d ../build || mkdir ../build 45cd ../build 46make -f ../flatpak/Makefile build 47flatpak list 48 49# Decrypt and unpack gpg keys, sign and install into website/ 50ccat --envvar FLATPAK_KEY ../ci/gpg.tar.gz.cpt > gpg.tar.gz 51tar xf gpg.tar.gz 52chmod 700 opencpn-gpg 53make -f ../flatpak/Makefile install 54make GPG_HOMEDIR=opencpn-gpg -f ../flatpak/Makefile sign 55rm -rf gpg.tar.gz opencpn-gpg 56 57# Debug: show version in local repo. 58flatpak remote-add \ 59 --user --gpg-import=website/opencpn.key local $PWD/website/repo 60flatpak update --appstream local 61flatpak remote-ls local 62 63# Deploy website/ to deployment server. 64cp ../ci/id_opencpn.tar.cpt . 65ccdecrypt --envvar FLATPAK_KEY id_opencpn.tar.cpt 66tar -xf id_opencpn.tar 67chmod 600 .ssh/id_opencpn 68 69rsync -a --info=stats --delete-after \ 70 --rsh="ssh -o 'StrictHostKeyChecking no' -i .ssh/id_opencpn" \ 71 website/ opencpn@mumin.crabdance.com:/var/www/ocpn-flatpak/website 72rm -f .ssh/id_opencpn* 73 74# Restore the patched file so the caching works. 75git checkout ../flatpak/org.opencpn.OpenCPN.yaml 76 77# Debug: show version in remote repo. 78flatpak remote-add --user opencpn $PWD/website/opencpn.flatpakrepo 79flatpak update --appstream opencpn 80flatpak remote-ls opencpn 81 82# Validate the appstream data: 83appstreamcli validate app/files/share/appdata/org.opencpn.OpenCPN.appdata.xml || : 84