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