-
-
Notifications
You must be signed in to change notification settings - Fork 51
129 lines (106 loc) · 3.55 KB
/
ci-appimage.yml
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
name: CI AppImage
on:
pull_request:
paths-ignore:
- 'doc/**'
- '**.md'
- '**.rst'
- '**.txt'
release:
types: [published]
workflow_dispatch:
jobs:
build:
name: Assemble for Linux
# Oldest supported by Alire+GitHub to increase AppImage back-compatibility
# Unfortunately we depend on the static elaboration model of recent GNATs
runs-on: ubuntu-20.04
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
submodules: true
- name: Install FSF toolchain
run: sudo apt-get install -y gnat-10 gprbuild
- name: Check toolchain architecture
uses: mosteo-actions/gnat-toolchain-arch-checker@v1
- name: Set up gcc on the PATH to be gcc-10
run: |
mkdir -p $HOME/.local/bin
ln -s /usr/bin/gcc-10 $HOME/.local/bin/gcc
- name: Install Python 3.x (required for the testsuite)
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Run test script
run: scripts/ci-github.sh
shell: bash
env:
BRANCH: ${{ github.base_ref }}
INDEX: ""
- name: Upload logs (if failed)
if: failure()
uses: actions/upload-artifact@v4
with:
name: e3-log-linux.zip
path: testsuite/out
- name: Retrieve upload URL for the release
if: (github.event_name == 'release')
id: get_release
uses: bruceadams/[email protected]
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Get release version
if: (github.event_name == 'release')
id: get_version
uses: battila7/get-version-action@v2
- name: Get ref version
if: (github.event_name != 'release')
id: get_ref
run: echo "::set-output name=short_sha::$(echo ${{ github.sha }} | cut -c1-8)"
############
# AppImage #
############
- name: Install AppImage dependencies (libfuse2)
shell: bash
run: |
sudo add-apt-repository universe
sudo apt-get install -y libfuse2
- name: Install AppImage's linuxdeploy
uses: miurahr/install-linuxdeploy-action@v1
with:
plugins: appimage
- name: Copy license into AppImage
run: |
mkdir -p AppDir
cp LICENSE.txt AppDir/
- name: Create AppImage
run: >
linuxdeploy-x86_64.AppImage --appdir AppDir -e bin/alr
-d resources/alr.desktop -i resources/alr.png --output appimage
- name: Rename AppImage
run: mv alr*AppImage alr.AppImage
- name: Test AppImage without the toolchain installed
run: |
chmod +x ./alr.AppImage
sudo apt-get remove -y gnat-10 gprbuild
which gnat || { echo "Toolchain purged"; ./alr.AppImage version; }
- name: Upload AppImage asset
if: (github.event_name == 'release')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: alr.AppImage
asset_name: alr-${{ steps.get_version.outputs.version-without-v }}-x86_64.AppImage
asset_content_type: application/x-elf
# When not a release we upload as a plain artifact, just to make sure that
# this works as expected. Also this way the AppImage is available for
# regular PRs for easy testing.
- name: Upload as artifact (when not a release)
if: (github.event_name != 'release')
uses: actions/upload-artifact@v4
with:
name: alr-${{ steps.get_ref.outputs.short_sha }}-x86_64.AppImage.zip
path: alr.AppImage