-
Notifications
You must be signed in to change notification settings - Fork 3
165 lines (142 loc) · 5.29 KB
/
Copy pathbuild-app-aarch64.yml
File metadata and controls
165 lines (142 loc) · 5.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
name: Build Calculator aarch64
on:
workflow_dispatch:
push:
branches:
- main
- dev
- pre-release
- build
paths:
- ".github/workflows/build-app-aarch64.yml"
- "utils/**"
- "package-rpm.nu"
- "packaging-metadata.yaml"
- "pubspec.yaml"
- "lib/**"
- "elinux/**"
env:
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
RUST_BACKTRACE: short
RUSTUP_MAX_RETRIES: 10
CARGO_NET_GIT_FETCH_WITH_CLI: true
MECHA_PULP_USERNAME: ${{ secrets.MECHA_PULP_USERNAME }}
MECHA_PULP_PASSWORD: ${{ secrets.MECHA_PULP_PASSWORD }}
MECHA_PULP_API_URL: ${{ vars.MECHA_PULP_API_URL }}
MECHA_PULP_RPMS_REPOSITORY_NAME: ${{ vars.MECHA_PULP_RPMS_REPOSITORY_NAME }}
jobs:
build:
name: mechanix-calculator
runs-on: ubuntu-24.04-arm
environment: pre-release
continue-on-error: true
steps:
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y git tar unzip curl clang cmake pkg-config \
libwayland-dev libwayland-cursor0 libwayland-egl1 \
libwayland-egl-backend-dev libegl1-mesa-dev libgles2-mesa-dev libxkbcommon-dev \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
rpm build-essential rpm2cpio rpmlint dnf jq pipx
- name: Install PDFium
run: |
set -eux
curl -L "https://github.com/bblanchon/pdfium-binaries/releases/latest/download/pdfium-linux-arm64.tgz" -o pdfium.tgz
mkdir pdfium
tar -xzf pdfium.tgz -C pdfium --strip-components=1
sudo cp pdfium/libpdfium.so /usr/local/lib/
sudo mkdir -p /usr/local/include/pdfium
sudo cp pdfium/*.h /usr/local/include/pdfium/
sudo cp -r pdfium/cpp /usr/local/include/pdfium/
sudo ldconfig
- name: Install Nushell
run: |
curl -fsSL https://apt.fury.io/nushell/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/fury-nushell.gpg
echo "deb https://apt.fury.io/nushell/ /" | sudo tee /etc/apt/sources.list.d/fury.list
sudo apt update
sudo apt install -y nushell
- name: Setup | Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Flutter eLinux Toolchain
run: |
if [ ! -d "/opt/flutter-elinux" ]; then
git clone https://github.com/flutter-elinux/flutter-elinux.git
sudo mv flutter-elinux /opt/
fi
if [ ! -x "/opt/flutter-elinux/bin/flutter-elinux" ]; then
echo "flutter-elinux binary not found at /opt/flutter-elinux/bin/flutter-elinux"
ls -la /opt/flutter-elinux || true
ls -la /opt/flutter-elinux/bin || true
exit 1
fi
echo "/opt/flutter-elinux/bin" >> $GITHUB_PATH
- name: Build calculator
run: |
flutter-elinux pub get
flutter-elinux build elinux --release
- name: Update script permissions
run: |
chmod +x package-rpm.nu
chmod +x utils/*.nu
- name: Package RPM
run: |
nu package-rpm.nu calculator ./build/rpm
- name: Check package sizes
run: |
RPM_FILE=$(find ./build/rpm -name "mechanix-calculator*.rpm" -type f | head -n1)
if [ -f "$RPM_FILE" ]; then
RPM_SIZE=$(stat -c%s "$RPM_FILE")
RPM_SIZE_MB=$((RPM_SIZE / 1048576))
echo "RPM size: $RPM_SIZE_MB MB"
if [ "$RPM_SIZE_MB" -lt 1 ]; then
echo "RPM file too small: $RPM_SIZE_MB MB"
exit 1
fi
else
echo "RPM file not found"
exit 1
fi
- name: Setup | Pulp CLI
run: |
pipx install --force pulp-cli[pygments]
pipx inject pulp-cli pulp_rpm
- name: Configure Pulp CLI
run: |
set -euo pipefail
PULP_API_URL="$(printf '%s' "${MECHA_PULP_API_URL}" | tr -d '[:space:]')"
PULP_API_URL="${PULP_API_URL%/}"
if [ -z "$PULP_API_URL" ]; then
echo "MECHA_PULP_API_URL is empty after trimming whitespace"
exit 1
fi
pulp config create \
--username "$MECHA_PULP_USERNAME" \
--password "$MECHA_PULP_PASSWORD" \
--base-url "$PULP_API_URL" \
--overwrite
- name: Publish RPM
continue-on-error: true
run: |
RPM_FILE=$(find ./build/rpm -name "mechanix-calculator*.rpm" -type f | head -n1)
echo "[INFO] Publishing RPM: $RPM_FILE"
pulp rpm content upload --repository="${{ vars.MECHA_PULP_RPMS_REPOSITORY_NAME }}" --file="$RPM_FILE"
PUB_HREF=$(pulp rpm publication create \
--repository="${{ vars.MECHA_PULP_RPMS_REPOSITORY_NAME }}" | jq -r '.pulp_href')
pulp rpm distribution update \
--name="${{ vars.MECHA_PULP_RPMS_REPOSITORY_NAME }}" \
--base-path="${{ vars.MECHA_PULP_RPMS_REPOSITORY_NAME }}" \
--publication="$PUB_HREF"
- name: Upload Artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: mechanix-calculator
path: |
./build/elinux/arm64/release/bundle/
./build/elinux/aarch64/release/bundle/
./build/rpm/*.rpm