fix(ci): inject API secrets into Flatpak manifest before build
flatpak-builder doesn't support --env-var, so we inject the secrets directly into the manifest's build-options.env before building. cc
This commit is contained in:
1 parent
3a7b05b859
commit
bfdb65a680
1 file changed
+35
-9
@@ -85,7 +85,7 @@ jobs:
|
|||||||
org.freedesktop.Sdk.Extension.node20//25.08 \
|
org.freedesktop.Sdk.Extension.node20//25.08 \
|
||||||
org.freedesktop.Sdk.Extension.rust-stable//25.08
|
org.freedesktop.Sdk.Extension.rust-stable//25.08
|
||||||
|
|
||||||
- name: Build Flatpak
|
- name: Inject API secrets into Flatpak manifest
|
||||||
env:
|
env:
|
||||||
SPOTIFY_API_CLIENT_ID: ${{ secrets.SPOTIFY_API_CLIENT_ID }}
|
SPOTIFY_API_CLIENT_ID: ${{ secrets.SPOTIFY_API_CLIENT_ID }}
|
||||||
SPOTIFY_API_CLIENT_SECRET: ${{ secrets.SPOTIFY_API_CLIENT_SECRET }}
|
SPOTIFY_API_CLIENT_SECRET: ${{ secrets.SPOTIFY_API_CLIENT_SECRET }}
|
||||||
@@ -95,17 +95,43 @@ jobs:
|
|||||||
DISCOGS_API_CLIENT_SECRET: ${{ secrets.DISCOGS_API_CLIENT_SECRET }}
|
DISCOGS_API_CLIENT_SECRET: ${{ secrets.DISCOGS_API_CLIENT_SECRET }}
|
||||||
LAST_FM_API_KEY: ${{ secrets.LAST_FM_API_KEY }}
|
LAST_FM_API_KEY: ${{ secrets.LAST_FM_API_KEY }}
|
||||||
LAST_FM_API_SHARED_SECRET: ${{ secrets.LAST_FM_API_SHARED_SECRET }}
|
LAST_FM_API_SHARED_SECRET: ${{ secrets.LAST_FM_API_SHARED_SECRET }}
|
||||||
|
run: |
|
||||||
|
# Inject env vars into the qbz module's build-options.env in the manifest
|
||||||
|
python3 << 'PY'
|
||||||
|
import yaml
|
||||||
|
import os
|
||||||
|
|
||||||
|
with open('packaging/flatpak/com.blitzkriegfc.qbz.yml', 'r') as f:
|
||||||
|
manifest = yaml.safe_load(f)
|
||||||
|
|
||||||
|
# Find the qbz module and add env vars
|
||||||
|
for module in manifest.get('modules', []):
|
||||||
|
if module.get('name') == 'qbz':
|
||||||
|
if 'build-options' not in module:
|
||||||
|
module['build-options'] = {}
|
||||||
|
if 'env' not in module['build-options']:
|
||||||
|
module['build-options']['env'] = {}
|
||||||
|
|
||||||
|
env_vars = [
|
||||||
|
'SPOTIFY_API_CLIENT_ID', 'SPOTIFY_API_CLIENT_SECRET',
|
||||||
|
'TIDAL_API_CLIENT_ID', 'TIDAL_API_CLIENT_SECRET',
|
||||||
|
'DISCOGS_API_CLIENT_KEY', 'DISCOGS_API_CLIENT_SECRET',
|
||||||
|
'LAST_FM_API_KEY', 'LAST_FM_API_SHARED_SECRET'
|
||||||
|
]
|
||||||
|
for var in env_vars:
|
||||||
|
val = os.environ.get(var, '')
|
||||||
|
if val:
|
||||||
|
module['build-options']['env'][var] = val
|
||||||
|
break
|
||||||
|
|
||||||
|
with open('packaging/flatpak/com.blitzkriegfc.qbz.yml', 'w') as f:
|
||||||
|
yaml.dump(manifest, f, default_flow_style=False, sort_keys=False)
|
||||||
|
PY
|
||||||
|
|
||||||
|
- name: Build Flatpak
|
||||||
run: |
|
run: |
|
||||||
mkdir -p flatpak-build flatpak-repo dist
|
mkdir -p flatpak-build flatpak-repo dist
|
||||||
flatpak-builder --user --force-clean --repo=flatpak-repo \
|
flatpak-builder --user --force-clean --repo=flatpak-repo \
|
||||||
--env-var=SPOTIFY_API_CLIENT_ID="$SPOTIFY_API_CLIENT_ID" \
|
|
||||||
--env-var=SPOTIFY_API_CLIENT_SECRET="$SPOTIFY_API_CLIENT_SECRET" \
|
|
||||||
--env-var=TIDAL_API_CLIENT_ID="$TIDAL_API_CLIENT_ID" \
|
|
||||||
--env-var=TIDAL_API_CLIENT_SECRET="$TIDAL_API_CLIENT_SECRET" \
|
|
||||||
--env-var=DISCOGS_API_CLIENT_KEY="$DISCOGS_API_CLIENT_KEY" \
|
|
||||||
--env-var=DISCOGS_API_CLIENT_SECRET="$DISCOGS_API_CLIENT_SECRET" \
|
|
||||||
--env-var=LAST_FM_API_KEY="$LAST_FM_API_KEY" \
|
|
||||||
--env-var=LAST_FM_API_SHARED_SECRET="$LAST_FM_API_SHARED_SECRET" \
|
|
||||||
flatpak-build packaging/flatpak/com.blitzkriegfc.qbz.yml
|
flatpak-build packaging/flatpak/com.blitzkriegfc.qbz.yml
|
||||||
flatpak build-bundle flatpak-repo dist/QBZ.flatpak com.blitzkriegfc.qbz
|
flatpak build-bundle flatpak-repo dist/QBZ.flatpak com.blitzkriegfc.qbz
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user