fix(ci): ensure system gem PATH takes precedence for fpm execution
Swadhin Biswas committed 6 months ago
0a891be
1 parent ca04b6a
commit 0a891be
3 files changed
+34 -21
Showing 3 changed files+34-21
▼.github/workflows/ci.yml
+16-12
| @@ -150,14 +150,16 @@ jobs: | ||
150 | 150 | |
151 | 151 | - name: Install Ruby and fpm for RPM conversion |
152 | 152 | run: | |
153 | - sudo apt-get install -y ruby ruby-dev | |
154 | - export GEM_HOME="$HOME/.gem" | |
155 | - export PATH="$HOME/.gem/bin:$PATH" | |
156 | - gem install fpm | |
157 | - echo "$HOME/.gem/bin" >> $GITHUB_PATH | |
153 | + sudo apt-get install -y ruby ruby-dev rpm | |
154 | + sudo gem install --no-document fpm | |
155 | + # Ensure system gems are in PATH (fixes user gem path precedence issue) | |
156 | + export PATH="$(gem env | grep 'EXECUTABLE DIRECTORY' | awk '{print $4}'):$PATH" | |
157 | + fpm --version | |
158 | 158 | |
159 | 159 | - name: Build RPM package |
160 | - run: ./scripts/build-rpm.sh | |
160 | + run: | | |
161 | + export PATH="$(gem env | grep 'EXECUTABLE DIRECTORY' | awk '{print $4}'):$PATH" | |
162 | + ./scripts/build-rpm.sh | |
161 | 163 | |
162 | 164 | - name: Upload DEB artifact |
163 | 165 | uses: actions/upload-artifact@v4 |
| @@ -277,14 +279,16 @@ jobs: | ||
277 | 279 | |
278 | 280 | - name: Install Ruby and fpm for RPM conversion |
279 | 281 | run: | |
280 | - sudo apt-get install -y ruby ruby-dev | |
281 | - export GEM_HOME="$HOME/.gem" | |
282 | - export PATH="$HOME/.gem/bin:$PATH" | |
283 | - gem install fpm | |
284 | - echo "$HOME/.gem/bin" >> $GITHUB_PATH | |
282 | + sudo apt-get install -y ruby ruby-dev rpm | |
283 | + sudo gem install --no-document fpm | |
284 | + # Ensure system gems are in PATH (fixes user gem path precedence issue) | |
285 | + export PATH="$(gem env | grep 'EXECUTABLE DIRECTORY' | awk '{print $4}'):$PATH" | |
286 | + fpm --version | |
285 | 287 | |
286 | 288 | - name: Build RPM package |
287 | - run: ./scripts/build-rpm.sh | |
289 | + run: | | |
290 | + export PATH="$(gem env | grep 'EXECUTABLE DIRECTORY' | awk '{print $4}'):$PATH" | |
291 | + ./scripts/build-rpm.sh | |
288 | 292 | |
289 | 293 | - name: Test binary exists |
290 | 294 | run: | |
291 | 295 | |
▼.github/workflows/release.yml
+8-6
| @@ -91,14 +91,16 @@ jobs: | ||
91 | 91 | |
92 | 92 | - name: Install Ruby and fpm for RPM conversion |
93 | 93 | run: | |
94 | - sudo apt-get install -y ruby ruby-dev | |
95 | - export GEM_HOME="$HOME/.gem" | |
96 | - export PATH="$HOME/.gem/bin:$PATH" | |
97 | - gem install fpm | |
98 | - echo "$HOME/.gem/bin" >> $GITHUB_PATH | |
94 | + sudo apt-get install -y ruby ruby-dev rpm | |
95 | + sudo gem install --no-document fpm | |
96 | + # Ensure system gems are in PATH (fixes user gem path precedence issue) | |
97 | + export PATH="$(gem env | grep 'EXECUTABLE DIRECTORY' | awk '{print $4}'):$PATH" | |
98 | + fpm --version | |
99 | 99 | |
100 | 100 | - name: Build RPM package |
101 | - run: ./scripts/build-rpm.sh | |
101 | + run: | | |
102 | + export PATH="$(gem env | grep 'EXECUTABLE DIRECTORY' | awk '{print $4}'):$PATH" | |
103 | + ./scripts/build-rpm.sh | |
102 | 104 | |
103 | 105 | - name: Extract version |
104 | 106 | id: get_version |
105 | 107 | |
▼scripts/build-rpm.sh
+10-3
| @@ -10,12 +10,19 @@ TAURI_TARGET="$PROJECT_ROOT/src-tauri/target" | ||
10 | 10 | |
11 | 11 | echo "=== Building RPM from DEB package ===" |
12 | 12 | |
13 | -# Check if fpm is installed | |
13 | +# Check if fpm is installed and usable | |
14 | 14 | if ! command -v fpm &> /dev/null; then |
15 | - echo "Warning: fpm is not installed. Skipping RPM build." | |
15 | + echo "Error: fpm is not installed." | |
16 | 16 | echo "To build RPM, install fpm with: gem install fpm" |
17 | 17 | echo "Or on Arch Linux: sudo pacman -S ruby base-devel && gem install fpm" |
18 | - exit 0 | |
18 | + exit 1 | |
19 | +fi | |
20 | + | |
21 | +if ! fpm --version &> /dev/null; then | |
22 | + echo "Error: fpm is present in PATH but unusable." | |
23 | + echo "The Ruby environment cannot load the fpm gem for this executable." | |
24 | + echo "In CI, install it system-wide with: sudo gem install --no-document fpm" | |
25 | + exit 1 | |
19 | 26 | fi |
20 | 27 | |
21 | 28 | # Find the latest DEB package |
22 | 29 | |