-
Notifications
You must be signed in to change notification settings - Fork 2
144 lines (120 loc) · 4.7 KB
/
main.yml
File metadata and controls
144 lines (120 loc) · 4.7 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
name: OpenCloud Desktop CI
on:
push:
branches:
- main
- 'stable-[0-9]+.[0-9]+'
- 'stable-[0-9]+.[0-9]+.[0-9]+'
pull_request:
workflow_dispatch:
inputs:
releaseChannel:
description: 'The release channel'
required: true
default: 'stable'
type: choice
options:
- stable
- beta
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions: {}
defaults:
run:
shell: pwsh
jobs:
# ------------------------------------------------------------------------------------------------------------------------------------------
build:
permissions:
# actions/upload-artifact doesn't need contents: write
contents: read
strategy:
fail-fast: true
matrix:
include:
- target: linux-gcc-x86_64
os: ubuntu-latest
container: invent-registry.kde.org/sysadmin/ci-images/craft-appimage:latest
name: ${{ matrix.target }}
runs-on: ${{ matrix.os }}
env:
CRAFT_TARGET: ${{ matrix.target }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CRAFT_PACKAGE_SYMBOLS: ${{ github.event_name != 'pull_request' }}
container: ${{ matrix.container }}
steps:
- name: Check out full source code for tooling
if: ${{ matrix.target == 'linux-gcc-x86_64' }}
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Check out latest commit
if: ${{ matrix.target != 'linux-gcc-x86_64' }}
uses: actions/checkout@v6
- name: Restore and update cache
if: github.event_name != 'pull_request'
uses: actions/cache@v5
with:
path: |
~/ccache
key: ${{ runner.os }}-${{ matrix.target }}-${{ github.run_id }} # generate a new key every time to trigger an update
restore-keys: ${{ runner.os }}-${{ matrix.target }}
- name: Restore cache
if: github.event_name == 'pull_request'
uses: actions/cache/restore@v5
with:
path: |
~/ccache
key: ${{ runner.os }}-${{ matrix.target }}
- name: Clone CraftMaster
run: |
git clone --depth=1 https://invent.kde.org/kde/craftmaster.git "${home}/craft/CraftMaster/CraftMaster"
- name: Craft setup
run: |
New-Item -Path ~/cache -ItemType Directory -ErrorAction SilentlyContinue
# disable git's safe.directory
git config --global --add safe.directory '*'
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" --setup
- name: Craft unshelve
run: |
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c --unshelve "${env:GITHUB_WORKSPACE}/.craft.shelf"
# bootsrtap in case the shelf was empty
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c craft
# ccache
if (-not $IsWindows) {
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c dev-utils/ccache
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c --run "ccache -M500MB"
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c --run "ccache -s"
}
- name: Prepare
run: |
New-Item -ItemType Directory "${env:GITHUB_WORKSPACE}/binaries/"
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c --set "srcDir=${env:GITHUB_WORKSPACE}/openVfsFuse" opencloud/openvfs
if($IsLinux) {
# ensure we have fuse3-devel installed
dnf install -y fuse3-devel
}
- name: Install dependencies
run: |
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c --install-deps opencloud/openvfs
- name: clang-format format lint
if: matrix.target == 'OFF_linux-gcc-x86_64'
run: |
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c libs/llvm
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c --run git clang-format --force ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}
$diff = git diff
if ($diff) {
$diff
exit 1
}
- name: Update Shelf
run: |
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c --shelve "${env:GITHUB_WORKSPACE}/.craft.shelf"
Copy-Item "${env:GITHUB_WORKSPACE}/.craft.shelf" "${env:GITHUB_WORKSPACE}/binaries/craft.shelf"
- name: Build
run: |
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c --no-cache opencloud/openvfs
- name: Run tests
run: |
& "${env:GITHUB_WORKSPACE}/.github/workflows/.craft.ps1" -c --no-cache opencloud/openvfs