Skip to content

Commit 30014a3

Browse files
committed
fixup! chore: add CI to publish Flatpak to Mixxx repo
1 parent 28d91c0 commit 30014a3

3 files changed

Lines changed: 65 additions & 17 deletions

File tree

.github/workflows/flatpak.yml

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,7 @@ jobs:
3232
ssh-agent -a $SSH_AUTH_SOCK > /dev/null
3333
ssh-add - <<< "${SSH_PRIVATE_KEY}"
3434
mkdir -p "${HOME}/.ssh"
35-
cat >> "${HOME}/.ssh/known_hosts" <<EOF
36-
${SSH_HOST} ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQtz9VUh6ZindK6DiHQ108KUVI8yQX/PQSUSrMZJ0kWD56yi/mzpZ9Q6hB9E2Gd94CmoDQwnAHQiV6k8461Qv4wGK1ykFwsUG3iOXm/gPOP1Sd1u6GI9SF/ixh/a+WatzzjdC8Y8c0BuuYufV7/Hox6IHvoVsrRWQQwXcK/tpCOzgwgUBzoDxhmS5lFtTfOK6JIOcXbOFmiKWzBVnXCawBKZBEeajkvyTqhLCCu7xbhqXIsBP/UTMeFNsyzIqvJvqHgEm5MPo04PtX1Myvnzv15/cT23PQDGNKANCrMSrUAWtqSFMZdWSehS2R0BbCJ1TJIgsG1Zc+BBDL8vYOesm8TpkXvUdMKWSuptEawYMDORQgjXerTHtsYzvpYNAV4Cm0ajJXngjM926++F1PvlvXs7sLhhOVzVTELgJYwiqFZcIBEdR8jgEkwLQ9Goig0h8lFJpcIket0pmFPTytzrev3gyWnymdZ9ScIo4wEmnwAKNGVMFArZ7O3Ckx/qXAyb8=
37-
${SSH_HOST} ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBC/q8hYkss2z4UhT43JRDq+yaUcE3P6VlmfQZWw/49GjwT+VbIuFmej3iLFn1y3YkzPLKYf+BVcXQixZGKNpKrA=
38-
${SSH_HOST} ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJR4dlJQ4NmvJj63YZmxhcUOVkmTITCfCwrCiGRaNe4
39-
EOF
35+
ssh-keyscan "${SSH_HOST}" >> "${HOME}/.ssh/known_hosts"
4036
echo "SSH_AUTH_SOCK=${SSH_AUTH_SOCK}" >> "${GITHUB_ENV}"
4137
4238
- name: Check out repository
@@ -58,25 +54,30 @@ jobs:
5854
if [[ "$REF" =~ ^refs/tags/[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
5955
echo "commit_summary=Stable build for 2.5" >> $GITHUB_OUTPUT
6056
echo "channel=stable" >> $GITHUB_OUTPUT
61-
elif [[ "$REF" == "refs/heads/2.6" ]]; then
57+
elif [ "$REF" = "refs/heads/2.6" ]; then
6258
echo "commit_summary=Beta build for 2.6" >> $GITHUB_OUTPUT
6359
echo "channel=beta" >> $GITHUB_OUTPUT
6460
echo "expiry=30 days" >> $GITHUB_OUTPUT
65-
elif [[ "$REF" == "refs/heads/main" ]]; then
61+
elif [ "$REF" = "refs/heads/main" ]; then
6662
echo "commit_summary=Alpha build for 2.7" >> $GITHUB_OUTPUT
6763
echo "channel=alpha" >> $GITHUB_OUTPUT
6864
echo "expiry=14 days" >> $GITHUB_OUTPUT
65+
else
66+
echo "commit_summary=Snapshot build for ${GITHUB_SHA}" >> $GITHUB_OUTPUT
67+
echo "channel=snapshot" >> $GITHUB_OUTPUT
68+
echo "expiry=7 days" >> $GITHUB_OUTPUT
6969
fi
7070
7171
- name: "Download bundles"
7272
env:
7373
GH_TOKEN: ${{ github.token }}
7474
RUN_ID: ${{ inputs.run_id }}
75+
shell: bash
7576
run: |
7677
gh --repo mixxxdj/mixxx run download $RUN_ID --pattern 'Flatpak *' -D bundles
7778
find bundles/ -name *.flatpak -exec mv {} bundles/ \;
7879
find bundles/ -mindepth 1 -type d -delete
79-
if [ ! `find bundles/ -name '*x86_64.flatpak | wc -l` -eq 1 ]; then
80+
if [ ! `find bundles/ -name '*x86_64.flatpak' | wc -l` -eq 1 ]; then
8081
echo "At least a x86_64 build is expected. Current bundles:"
8182
find bundles/ -type f
8283
exit 1
@@ -106,17 +107,21 @@ jobs:
106107
107108
flatpak build-import-bundle -v --gpg-sign=$GPG_KEY_ID repo.tmp "$file"
108109
checksum=$(ostree --repo=repo.tmp rev-parse "${type}/${id}/${arch}/master")
110+
ostree --repo=repo.tmp show --raw --print-metadata-key=xa.metadata "${type}/${id}/${arch}/master"
111+
ostree --repo=repo.tmp show --print-metadata-key=xa.metadata "${type}/${id}/${arch}/master"
112+
metadata=`ostree --repo=repo.tmp show --print-metadata-key=xa.metadata "${type}/${id}/${arch}/master"`
109113
ostree --repo=repo pull --depth=-1 --mirror "upstream:${type}/${id}/${arch}/${CHANNEL}" || true
110114
ostree --repo=repo pull-local repo.tmp "${checksum}"
111-
ostree --repo=repo commit -b "${type}/${id}/${arch}/${CHANNEL}" -s "$COMMIT_SUMMARY" "--add-metadata-string=version=$VERSION" "--tree=ref=${checksum}"
115+
ostree --repo=repo commit --gpg-sign=$GPG_KEY_ID -b "${type}/${id}/${arch}/${CHANNEL}" -s "$COMMIT_SUMMARY" "--add-metadata-string=version=$VERSION" "--add-metadata-string=xa.metadata=$metadata" "--tree=ref=${checksum}"
116+
ostree --repo=repo show --print-metadata-key=xa.metadata "${type}/${id}/${arch}/${CHANNEL}"
112117
}
113118
114119
# Prepare local repos
115120
ostree --repo=repo.tmp init --mode=archive-z2
116121
ostree --repo=repo init --mode=archive-z2
117122
118123
# Hook publish repo to the remote
119-
ostree --repo=repo remote add --no-gpg-verify upstream https://downloads.mixxx.org/flatpak/
124+
ostree --repo=repo remote add upstream https://downloads.mixxx.org/flatpak/
120125
121126
for arch in "x86_64" "aarch64"; do
122127
import_to_repo "bundles/Mixxx-${VERSION}-${arch}.flatpak" org.mixxx.Mixxx ${arch} app
@@ -127,20 +132,13 @@ jobs:
127132
fi
128133
done
129134
130-
- name: "Update the repo manifest"
131-
if: ${{ inputs.update_repo }}
132-
shell: bash
133-
run: |
134-
cp packaging/flatpak/repo.flatpakrepo repo/repo.flatpakrepo
135-
136135
- name: "Cleanup old builds"
137136
if: ${{ steps.prepare.outputs.expiry != null }}
138137
shell: bash
139138
env:
140139
EXPIRY: ${{ steps.prepare.outputs.expiry }}
141140
run: |
142141
ostree --repo=repo prune --refs-only --keep-younger-than="$EXPIRY ago"
143-
144142
- name: "Push the updated repo"
145143
env:
146144
SSH_HOST: downloads-hostgator.mixxx.org
@@ -151,4 +149,13 @@ jobs:
151149
flatpak build-update-repo repo
152150
./rsync-repos --src "repo/" --dest "${SSH_USER}@${SSH_HOST}:public_html/downloads/flatpak" --rsync-opts "--verbose --recursive --checksum --times --delay-updates"
153151
152+
- name: "Update the repo manifest"
153+
if: ${{ inputs.update_repo }}
154+
env:
155+
SSH_HOST: downloads-hostgator.mixxx.org
156+
SSH_USER: mixxx
157+
shell: bash
158+
run: |
159+
rsync --verbose "packaging/flatpak/repo.flatpakrepo" "${SSH_USER}@${SSH_HOST}:public_html/downloads/flatpak/repo.flatpakrepo"
160+
154161
# TODO we could also publish a .flatpakref file to allow one-click install a version and publish this as a comment to the PR.

.github/workflows/tmp_flatpak.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Flatpak
2+
on:
3+
push:
4+
branches:
5+
- chore/prepare-flatpak-ci
6+
7+
jobs:
8+
reset-flatpak:
9+
name: Reset Flatpak
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: "Set up SSH Agent"
13+
shell: bash
14+
env:
15+
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
16+
SSH_PRIVATE_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }}
17+
SSH_HOST: downloads-hostgator.mixxx.org
18+
run: |
19+
ssh-agent -a $SSH_AUTH_SOCK > /dev/null
20+
ssh-add - <<< "${SSH_PRIVATE_KEY}"
21+
mkdir -p "${HOME}/.ssh"
22+
ssh-keyscan "${SSH_HOST}" >> "${HOME}/.ssh/known_hosts"
23+
echo "SSH_AUTH_SOCK=${SSH_AUTH_SOCK}" >> "${GITHUB_ENV}"
24+
25+
- name: "Push the updated repo"
26+
env:
27+
SSH_HOST: downloads-hostgator.mixxx.org
28+
SSH_USER: mixxx
29+
shell: bash
30+
run: |
31+
ssh "${SSH_USER}@${SSH_HOST}" rm -rfv public_html/downloads/flatpak
32+
publish-flatpak:
33+
uses: ./.github/workflows/flatpak.yml
34+
with:
35+
update_repo: true
36+
ref: ${{ github.ref }}
37+
run_id: "22817007952"
38+
secrets:
39+
DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY }}
40+
RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY: ${{ secrets.RRYAN_AT_MIXXX_DOT_ORG_GPG_PRIVATE_KEY }}

packaging/flatpak/repo.flatpakrepo

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ Homepage=https://mixxx.org/
55
Comment=Flatpak repo for Mixxx releases and snapshots
66
Description=Flatpak repo for Mixxx releases and snapshots
77
Icon=https://mixxx.org/theme/images/mixxx-logo.svg
8+
GPGKey=LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCkNvbW1lbnQ6IEhvc3RuYW1lOiAKVmVyc2lvbjogSG9ja2V5cHVjayAyLjIKCnhzRk5CRTFjeENzQkVBQzJaNE5wbnhJb0ZiYzV1NzJMV01WMEdtV1VJNm5PekZXUHdGUWNSalIzRTVIb2F2dmYKVSs3dS9QSkRrdnN5OWV3VEI0OEVFNXB4T0dFRHN4WWVKRnFmTWJoazJESFNlbkp4OGtvaUsrK0JJYk5PMEpLTQpHOVlEME9QTmZQZnA1UzJnY09Dc2k1cElrTkdQZjE5bWMyKytKVTN1emxMM1JjOE5sMG9JdklMSmxWVDhhT2RzCkJ1RC9OaHVrNlFGQ1UzbGYwdUpBaFA3QU1mSnRHeS9QYTJ4QlQ5bDBKdGJDZGhSWW4rSHNKclAwbkNqSUNYMDkKQ1A0cTVFMHBaNDVrSkFOa3ZEVEh3SCtqZDBWaXhxcTcyWVhRZ0MvOWlMMXpUNnhvUkx6aG9SSTNXQ1M3djhVRwppZk01TTVacGFQL3ozQjdDYWlqNHB1ZGlqVFRHeEkzamhFUm1BR3hNQzNxdG1Bd1Exc201SXM0aHZVT0RSOWtkCnMwL2RaZGVHUG0zSy8xazRNcVluVndtTHV1M0x4SGd2OXliUXpnemp5Um9GaytqMWZnbzU1N08zUWdsRDczWEwKQ043cUVpWFFtNEJKTzJ1Y0MxbEVva1NtY2ZtOURTdk9xZzlPZDdJek5CQ3VDU0VLRjBjTXdWMC80QnE2Z3NMWgpwekl5cGRtc05oT2txQ1B4d0RQRXIyMFBFQU5CQThUMVd2MDY0OGNrdGZtaFd2aDduYkRURndVUmZFRlU2Z2lIClZmL1lNUVdLOUxReDdSVE1YNHFxSVB2VktkNEZ2UmREZ2x4QzloTnVxTWFucFQwb2RCTEI4WktnOHNDU05yTUQKQnhOU0ZvaGtSZmJBUkYyYldoRk5EcTExSzhGOTJHY1IrNFNlUU9NR2NJZHYzanZvbkRHYVRFRm13d0FSQVFBQgp6UmxTU2lCU2VXRnVJRHh5Y25saGJrQnRhWGg0ZUM1dmNtYyt3c0Y0QkJNQkFnQWlCUUpOWE1RckFoc0RCZ3NKCkNBY0RBZ1lWQ0FJSkNnc0VGZ0lEQVFJZUFRSVhnQUFLQ1JCdmNKR1UyU3hKUjYrTUVBQ09vcUxlWnhNQ0xTY3UKcFdmTGRyczVibDg2QzlRODlXeDFzeWMwcEFVc2tlU1o2SzFmZHJtQWE0Um9EeGsxYWx0L1hReFFQNE5IZ0ZXTApCTWVOQS82Uk44bHczTXZudVNPR2ozcHFkNEtoamswYTczRUt3REpXYWU1cGdKNnIxL0g1clVlOUlFVDRpTWpxCmh0V253c0dqWTdTOEhtKzRsaGtlbXhicmM3M1ZQb2E3S2x4cFVzdHVPSDFzSHh0aDkxZDlrazN6c2dHVEd2a2kKRTl2M1llWkYvcWRSNURhcDFwTElrWVg2VGpjMkIwekxMbXRoMTd4Tk1lUVhGL3pYNXZadnhGM3ZGODJFMEIvYQowNWFZUHUzc1hqSmpYcVd5UmxteFozRnZZdzB5TVZ3SEVRSkNyL3JkakZGL2liQW9XTGVJb1h6ZG1YRDR6OFpaCkw5eDdiVDhrdmFYWFFNbFVYWEdIQXRYVHRCTkNqSkNjR0xjc0c1RjVtUnVPb2toTHJkQ2l0K2VwdGJja2FZWHIKdmdzUlZDSXcwdnJUME9BMFlUTEVCZk9BbXBZWDI5ZDZjSHhLWVRWcW9WRVhaMzVMaE92STFGYk1sRXpiUVdyMQpIVGRMaUt3L1JPYWhGRmJTclNSS0tRUWFWV0EvSTJmQjIwdmhycys5WWFJVjFVVysrNTYyRC9IeElyZVFjeWdKCk9DVktZcTJjTndkVExPK2lWTXJxUk9TWDRuTE9TSkRpWkd1UmtDNUI3OVoxcjVGWXNoL2RJTlhrZ29PaldGdzIKZU8zcmNwZjBwWFMvUlFpajRsL1dMa01NTGFmcjUxZS9HSW53dGIvZm5oNHMxaVBZeUpXalpSSVRSYk1jRnZaSApMc3BiREw3SVVyaVQyVVhvRy9PYjVxd2lCNlZBZnM3QlRRUk5YTVFyQVJBQTdKTGhhV2VmR25SZVJJQlBGell0ClNod0kxS1l2MFFvRkhkRVpIZ2Z0aWxVNENkbmdHZ0xwcVVoeW03eWpYU3NRMmFaVXZrTExkcy9JeHZ2QWxsbnUKSWE5Q0Nzc242NjRtL0lXaGFRZVZrQ1BqaXBvTk8xWlRrQURLUkVzVHpOZ3c0TDdMVmQ4ZFNYc2h2TzdKc25zVgpIWkxrN3J4STdoSnRoK2xoRTVZUGVDVHBWNENPUzRMdG5Tc09MM28wekpmZGQ1Z0grY2J1VkxBSzFPalpFVExrCmIyMk1wOWRPQ1lzMFNNcUFMU2hXYkt1M085Mk1SeXczaFM5enBsa2poK0p2RU9pN1RLOGFOdVNYWFRsWHJxeEMKUUw3YXFiWE91S0xoZHBsMTVDdjdVUDRJSzY5UGpJWnArbzMraHpyajh1blJtaVduSnl5bkxFbUZQcWpHL3FrRQpZSGo3bEEvaTlUTzd1U0NUanFnb3NZM2dsM0JZSXQ4b0F6WGhGZjNSOWx5cEFQV29SeDA4YWF6WU9mS1lDNTNUCmpZSXhMT2orbTVrNnVsOUhNaHpjb2lWbWlHbDZlYW9OWGhaZlAvUFgvQlFncXRHL3RDTE9mVC9KWERNN0oxZFcKUFlXYktmeU9aRjlPcTNRU2ZpQkRRWXpLLzBYK0dYdTJodTg2TUxNanFReERueU55SDZHRWwwRmVsdHVWVFdHRAp2VnRsVkZjQ3YxOTIxdlNQUGhFc25jMFB1N0tObkJwNk1rVlpmMFZzdEVrSUwrV3lNeTRUQVdkUDJaeUVRdWh5CmN2RGE1RUtQaGNVWVM1SlBVbnR5b2U5THBkMmFVNDNyYjNneW95U1I2WlRxUUt5WnRtb0pTLzY5VXI5SWdZRCsKYm1pakNoZm5FTWlNdHBrd1lodlVqTjBBRVFFQUFjTEJYd1FZQVFJQUNRVUNUVnpFS3dJYkRBQUtDUkJ2Y0pHVQoyU3hKUjZQdEQvNHNKTzcydWszVjE3WDlscHo1THppeVlIcHVpTG1KZlFIZEE5aDYvYjI1dWg2cGFxV1EzSmdOCnY1N0RZR2RSdVR4NnREUUtVZFc4UlJOSGpqR2dGSFo5bHpOMVl0Q0lzb240RDF3QzkwSEJ3WVpJeTNHL2M2c08KTkdoUkhhb2Q3cjVNMGllOWZ4L3VTZkVaNGlESnBPUExsbE5KR3g2UlhZdFNSVFZMTlNiY0FvZVV0TW1aL1U0Wgp1ZDdnamlKWkpIOHdtWDZKUGkxbk5SdnlPcm54Q0hudTcvQ2l1SW8rT1M3ZXF6cHNvTDg4eU5rYlA5d3kxN1JsCkYyeW9pVmtPK0N4Mi9EZXdWWXdGQWpQY2RlRlp1REliZ2JWNzFLSDN4OWw3ejVESnpkMjhWdUkxK1VqNFJMekQKcGN1N0l0NGJNMnBoNzhSUlJEdjFrNFJMa1pjb2liMytLamIwbFhQMC9MSjgwRHluamxCaE5raS9qSExDWnFaMQpSRWhrcDB2Rzdlc25ZQWJtK0JHNjFvcm9XUUZ3QkZMVmpqSFNja1dtVk9OS2VuTWlSbXdZOGN5VDhyZjRhMlVXCktkVnJteWxQQVV6MEd3TFZrOGsxWkZxK0ZpUjRmd0F3T3ZweGpCY1VETVE5bG5CWjBRL2R6VU96RktaSStuK2wKNGFPYStZb1hBQlVPTGprVGNvMmQrUjlFb2tPV1kzQk0xTUZXU2l2WDlSRXJFZGFXNXN1ak5yS1JIMksyOHR2aQp3T1d3Z2N5RWFucGcyUzBWMU1SNHlTRFp3RHcxaG1Ib1F3OE5Jd1BJcWtHUmJaSlIwQ3J0Y3ZBekpMa2VQcW4vCk1zQ1YzN0RDUCtrVlNtY0RWcU5vcGYwclFNcFpLK3MvblhKS2RIVGJGdVFqd29DWUl1NENsZz09Cj1IaHY0Ci0tLS0tRU5EIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0tLS0K

0 commit comments

Comments
 (0)