Skip to content

Commit 91e6a79

Browse files
authored
Merge pull request #6940 from BOINC/vko_split_ci_actions
[ci] split linux, osx and windows ci flows to avoid unnecessary builds during release
2 parents 9f90e0d + ee1f726 commit 91e6a79

12 files changed

Lines changed: 333 additions & 237 deletions

.github/workflows/all_projects_list_xml_update.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This file is part of BOINC.
2-
# http://boinc.berkeley.edu
3-
# Copyright (C) 2023 University of California
2+
# https://boinc.berkeley.edu
3+
# Copyright (C) 2026 University of California
44
#
55
# BOINC is free software; you can redistribute it and/or modify it
66
# under the terms of the GNU Lesser General Public License

.github/workflows/check_custom_vcpkg_ports.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This file is part of BOINC.
2-
# http://boinc.berkeley.edu
3-
# Copyright (C) 2024 University of California
2+
# https://boinc.berkeley.edu
3+
# Copyright (C) 2026 University of California
44
#
55
# BOINC is free software; you can redistribute it and/or modify it
66
# under the terms of the GNU Lesser General Public License
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
# This file is part of BOINC.
2+
# https://boinc.berkeley.edu
3+
# Copyright (C) 2026 University of California
4+
#
5+
# BOINC is free software; you can redistribute it and/or modify it
6+
# under the terms of the GNU Lesser General Public License
7+
# as published by the Free Software Foundation,
8+
# either version 3 of the License, or (at your option) any later version.
9+
#
10+
# BOINC is distributed in the hope that it will be useful,
11+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13+
# See the GNU Lesser General Public License for more details.
14+
#
15+
# You should have received a copy of the GNU Lesser General Public License
16+
# along with BOINC. If not, see <http://www.gnu.org/licenses/>.
17+
18+
name: Linux release
19+
on:
20+
push:
21+
branches: [ master ]
22+
tags: [ 'vboxwrapper/**', 'wrapper/**', 'dockerwrapper/**', 'worker/**' ]
23+
pull_request:
24+
branches: [ master ]
25+
schedule:
26+
- cron: '0 0 * * *'
27+
28+
concurrency:
29+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
30+
cancel-in-progress: true
31+
32+
jobs:
33+
build-release:
34+
name: ${{ matrix.type }}-build-release
35+
runs-on: ubuntu-latest
36+
container:
37+
image: debian:buster
38+
strategy:
39+
matrix:
40+
type: [apps, apps-x86, apps-arm64, apps-armhf]
41+
fail-fast: false
42+
env:
43+
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
44+
steps:
45+
- name: Fix debian sources
46+
run: |
47+
sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list
48+
sed -i 's/security.debian.org/archive.debian.org/g' /etc/apt/sources.list
49+
50+
- name: Install dependencies
51+
run: |
52+
apt-get update
53+
apt-get install -y make build-essential m4 pkg-config autoconf libtool git p7zip-full python3
54+
55+
- name: Install dependencies for x86
56+
if: success() && matrix.type == 'apps-x86'
57+
run: |
58+
dpkg --add-architecture i386
59+
apt-get update
60+
apt-get install -y gcc-multilib g++-multilib libcurl4-openssl-dev:i386 libssl-dev:i386 libzip-dev:i386
61+
62+
- name: Install dependencies for x64
63+
if: success() && matrix.type == 'apps'
64+
run: |
65+
apt-get install -y libcurl4-openssl-dev libssl-dev libzip-dev
66+
67+
- name: Install dependencies for arm64
68+
if: success() && matrix.type == 'apps-arm64'
69+
run: |
70+
dpkg --add-architecture arm64
71+
apt-get update
72+
apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu wget ca-certificates libcurl4-openssl-dev:arm64 libssl-dev:arm64 libzip-dev:arm64
73+
74+
- name: Install dependencies for armhf
75+
if: success() && matrix.type == 'apps-armhf'
76+
run: |
77+
dpkg --add-architecture armhf
78+
apt-get update
79+
apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf wget ca-certificates libcurl4-openssl-dev:armhf libssl-dev:armhf libzip-dev:armhf
80+
81+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
82+
with:
83+
fetch-depth: 2
84+
85+
- name: Automake
86+
if: success()
87+
run: ./_autosetup
88+
89+
- name: Make x64 apps
90+
if: success() && matrix.type == 'apps'
91+
run: |
92+
export CFLAGS="-O3 -flto"
93+
export CXXFLAGS="-O3 -flto -std=c++11"
94+
export LDFLAGS="-O3 -flto -static-libstdc++ -s"
95+
export RELEASE_ARCH=x86_64
96+
./configure --enable-apps --enable-apps-vbox --disable-server --disable-client --disable-manager --disable-shared --enable-static
97+
make -j $(nproc --all)
98+
99+
- name: Make x86 apps
100+
if: success() && matrix.type == 'apps-x86'
101+
run: |
102+
export CFLAGS="-O3 -flto -m32"
103+
export CXXFLAGS="-O3 -flto -m32 -std=c++11"
104+
export LDFLAGS="-O3 -flto -static-libstdc++ -s -m32"
105+
export RELEASE_ARCH=i686
106+
./configure --host=i686-linux-gnu --enable-apps --enable-apps-vbox --disable-server --disable-client --disable-manager --disable-shared --enable-static
107+
make -j $(nproc --all)
108+
109+
- name: Make arm64 apps
110+
if: success() && matrix.type == 'apps-arm64'
111+
run: |
112+
export CC=aarch64-linux-gnu-gcc
113+
export CXX=aarch64-linux-gnu-g++
114+
export LD=aarch64-linux-gnu-ld
115+
export CFLAGS="-march=armv8-a -O3 -flto"
116+
export CXXFLAGS="-march=armv8-a -O3 -flto -std=c++11"
117+
export LDFLAGS="-march=armv8-a -O3 -flto -static-libstdc++ -s"
118+
export RELEASE_ARCH=arm64
119+
export PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/share/pkgconfig
120+
./configure --host=aarch64-linux --with-boinc-platform="aarch64-unknown-linux-gnu" --with-boinc-alt-platform="arm-unknown-linux-gnueabihf" --enable-apps --disable-server --disable-manager --disable-client --disable-shared --enable-static
121+
make -j $(nproc --all)
122+
123+
- name: Make armhf apps
124+
if: success() && matrix.type == 'apps-armhf'
125+
run: |
126+
export CC=arm-linux-gnueabihf-gcc
127+
export CXX=arm-linux-gnueabihf-g++
128+
export LD=arm-linux-gnueabihf-ld
129+
export CFLAGS="-march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard -O3 -flto"
130+
export CXXFLAGS="-march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard -O3 -flto -std=c++11"
131+
export LDFLAGS="-march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard -O3 -flto -static-libstdc++ -s"
132+
export RELEASE_ARCH=armhf
133+
export PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig
134+
./configure --host=arm-linux-gnueabihf --with-boinc-platform="arm-unknown-linux-gnueabihf" --with-boinc-alt-platform="aarch64-unknown-linux-gnu" --enable-apps --disable-server --disable-manager --disable-client --disable-shared --enable-static
135+
make -j $(nproc --all)
136+
137+
- name: Prepare logs on failure
138+
if: ${{ failure() }}
139+
run: python3 ./deploy/prepare_deployment.py logs
140+
141+
- name: Upload logs on failure
142+
if: ${{ failure() }}
143+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f
144+
with:
145+
name: linux_release_logs_${{ matrix.type }}_${{ github.event.pull_request.head.sha }}
146+
path: deploy/logs.7z
147+
148+
- name: Prepare artifacts for deploy
149+
if: success()
150+
run: python3 ./deploy/prepare_deployment.py linux_apps
151+
152+
- name: Upload wrapper artifacts
153+
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f
154+
if: success()
155+
with:
156+
name: linux_release_${{ matrix.type }}_${{ github.event.pull_request.head.sha }}
157+
path: deploy/linux_apps.7z

.github/workflows/linux.yml

Lines changed: 1 addition & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ name: Linux
1919
on:
2020
push:
2121
branches: [ master, 'client_release/**' ]
22-
tags: [ 'client_release/**', 'vboxwrapper/**', 'wrapper/**', 'dockerwrapper/**', 'worker/**' ]
22+
tags: [ 'client_release/**' ]
2323
pull_request:
2424
branches: [ master ]
2525
schedule:
@@ -481,129 +481,3 @@ jobs:
481481
uses: codecov/codecov-action@1af58845a975a7985b0beb0cbe6fbbb71a41dbad
482482
env:
483483
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
484-
485-
build-release:
486-
name: ${{ matrix.type }}-build-release
487-
runs-on: ubuntu-latest
488-
container:
489-
image: debian:buster
490-
strategy:
491-
matrix:
492-
type: [apps, apps-x86, apps-arm64, apps-armhf]
493-
fail-fast: false
494-
env:
495-
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
496-
steps:
497-
- name: Fix debian sources
498-
run: |
499-
sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list
500-
sed -i 's/security.debian.org/archive.debian.org/g' /etc/apt/sources.list
501-
502-
- name: Install dependencies
503-
run: |
504-
apt-get update
505-
apt-get install -y make build-essential m4 pkg-config autoconf libtool git p7zip-full python3
506-
507-
- name: Install dependencies for x86
508-
if: success() && matrix.type == 'apps-x86'
509-
run: |
510-
dpkg --add-architecture i386
511-
apt-get update
512-
apt-get install -y gcc-multilib g++-multilib libcurl4-openssl-dev:i386 libssl-dev:i386 libzip-dev:i386
513-
514-
- name: Install dependencies for x64
515-
if: success() && matrix.type == 'apps'
516-
run: |
517-
apt-get install -y libcurl4-openssl-dev libssl-dev libzip-dev
518-
519-
- name: Install dependencies for arm64
520-
if: success() && matrix.type == 'apps-arm64'
521-
run: |
522-
dpkg --add-architecture arm64
523-
apt-get update
524-
apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu wget ca-certificates libcurl4-openssl-dev:arm64 libssl-dev:arm64 libzip-dev:arm64
525-
526-
- name: Install dependencies for armhf
527-
if: success() && matrix.type == 'apps-armhf'
528-
run: |
529-
dpkg --add-architecture armhf
530-
apt-get update
531-
apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf wget ca-certificates libcurl4-openssl-dev:armhf libssl-dev:armhf libzip-dev:armhf
532-
533-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
534-
with:
535-
fetch-depth: 2
536-
537-
- name: Automake
538-
if: success()
539-
run: ./_autosetup
540-
541-
- name: Make x64 apps
542-
if: success() && matrix.type == 'apps'
543-
run: |
544-
export CFLAGS="-O3 -flto"
545-
export CXXFLAGS="-O3 -flto -std=c++11"
546-
export LDFLAGS="-O3 -flto -static-libstdc++ -s"
547-
export RELEASE_ARCH=x86_64
548-
./configure --enable-apps --enable-apps-vbox --disable-server --disable-client --disable-manager --disable-shared --enable-static
549-
make -j $(nproc --all)
550-
551-
- name: Make x86 apps
552-
if: success() && matrix.type == 'apps-x86'
553-
run: |
554-
export CFLAGS="-O3 -flto -m32"
555-
export CXXFLAGS="-O3 -flto -m32 -std=c++11"
556-
export LDFLAGS="-O3 -flto -static-libstdc++ -s -m32"
557-
export RELEASE_ARCH=i686
558-
./configure --host=i686-linux-gnu --enable-apps --enable-apps-vbox --disable-server --disable-client --disable-manager --disable-shared --enable-static
559-
make -j $(nproc --all)
560-
561-
- name: Make arm64 apps
562-
if: success() && matrix.type == 'apps-arm64'
563-
run: |
564-
export CC=aarch64-linux-gnu-gcc
565-
export CXX=aarch64-linux-gnu-g++
566-
export LD=aarch64-linux-gnu-ld
567-
export CFLAGS="-march=armv8-a -O3 -flto"
568-
export CXXFLAGS="-march=armv8-a -O3 -flto -std=c++11"
569-
export LDFLAGS="-march=armv8-a -O3 -flto -static-libstdc++ -s"
570-
export RELEASE_ARCH=arm64
571-
export PKG_CONFIG_LIBDIR=/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/share/pkgconfig
572-
./configure --host=aarch64-linux --with-boinc-platform="aarch64-unknown-linux-gnu" --with-boinc-alt-platform="arm-unknown-linux-gnueabihf" --enable-apps --disable-server --disable-manager --disable-client --disable-shared --enable-static
573-
make -j $(nproc --all)
574-
575-
- name: Make armhf apps
576-
if: success() && matrix.type == 'apps-armhf'
577-
run: |
578-
export CC=arm-linux-gnueabihf-gcc
579-
export CXX=arm-linux-gnueabihf-g++
580-
export LD=arm-linux-gnueabihf-ld
581-
export CFLAGS="-march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard -O3 -flto"
582-
export CXXFLAGS="-march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard -O3 -flto -std=c++11"
583-
export LDFLAGS="-march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard -O3 -flto -static-libstdc++ -s"
584-
export RELEASE_ARCH=armhf
585-
export PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig
586-
./configure --host=arm-linux-gnueabihf --with-boinc-platform="arm-unknown-linux-gnueabihf" --with-boinc-alt-platform="aarch64-unknown-linux-gnu" --enable-apps --disable-server --disable-manager --disable-client --disable-shared --enable-static
587-
make -j $(nproc --all)
588-
589-
- name: Prepare logs on failure
590-
if: ${{ failure() }}
591-
run: python3 ./deploy/prepare_deployment.py logs
592-
593-
- name: Upload logs on failure
594-
if: ${{ failure() }}
595-
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f
596-
with:
597-
name: linux_release_logs_${{ matrix.type }}_${{ github.event.pull_request.head.sha }}
598-
path: deploy/logs.7z
599-
600-
- name: Prepare artifacts for deploy
601-
if: success()
602-
run: python3 ./deploy/prepare_deployment.py linux_apps
603-
604-
- name: Upload wrapper artifacts
605-
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f
606-
if: success()
607-
with:
608-
name: linux_release_${{ matrix.type }}_${{ github.event.pull_request.head.sha }}
609-
path: deploy/linux_apps.7z

.github/workflows/mingw.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This file is part of BOINC.
22
# https://boinc.berkeley.edu
3-
# Copyright (C) 2025 University of California
3+
# Copyright (C) 2026 University of California
44
#
55
# BOINC is free software; you can redistribute it and/or modify it
66
# under the terms of the GNU Lesser General Public License
@@ -18,8 +18,7 @@
1818
name: Linux-MinGW
1919
on:
2020
push:
21-
branches: [ master, 'client_release/**' ]
22-
tags: [ 'client_release/**' ]
21+
branches: [ master ]
2322
pull_request:
2423
branches: [ master ]
2524
schedule:

0 commit comments

Comments
 (0)