mirror of https://github.com/BOINC/boinc.git
[CI][linux] Create separate flow to build proper linux binaries for packaging
Signed-off-by: Vitalii Koshura <lestat.de.lionkur@gmail.com>
This commit is contained in:
parent
6b9928c755
commit
e776483dbb
|
@ -0,0 +1,112 @@
|
|||
# This file is part of BOINC.
|
||||
# http://boinc.berkeley.edu
|
||||
# Copyright (C) 2023 University of California
|
||||
#
|
||||
# BOINC is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License
|
||||
# as published by the Free Software Foundation,
|
||||
# either version 3 of the License, or (at your option) any later version.
|
||||
#
|
||||
# BOINC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
name: Linux Package
|
||||
on:
|
||||
push:
|
||||
branches: [ master, 'client_release/**' ]
|
||||
tags: [ 'client_release/**' ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
schedule:
|
||||
- cron: '0 0 * * 0'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_KEY }}
|
||||
AWS_DEFAULT_REGION: us-west-2
|
||||
|
||||
jobs:
|
||||
prepare-binaries:
|
||||
name: Prepare Binaries
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: debian:buster
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: env.AWS_ACCESS_KEY_ID
|
||||
AWS_SECRET_ACCESS_KEY: env.AWS_SECRET_ACCESS_KEY
|
||||
AWS_DEFAULT_REGION: env.AWS_DEFAULT_REGION
|
||||
strategy:
|
||||
matrix:
|
||||
type: [client, manager]
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 2
|
||||
- name: Check if build is running from origin repo
|
||||
if: ${{ success() && env.AWS_ACCESS_KEY_ID != 0 && env.AWS_SECRET_ACCESS_KEY != 0 }}
|
||||
run: |
|
||||
echo "VCPKG_BINARY_SOURCES=clear;x-aws,s3://vcpkg.cache.boinc/,readwrite" >> $GITHUB_ENV
|
||||
|
||||
- name: Check if build is running from fork
|
||||
if: ${{ success() && (env.AWS_ACCESS_KEY_ID == 0 || env.AWS_SECRET_ACCESS_KEY == 0) }}
|
||||
run: |
|
||||
echo "VCPKG_BINARY_SOURCES=clear;x-aws-config,no-sign-request;x-aws,s3://vcpkg.cache.boinc/,read" >> $GITHUB_ENV
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
apt-get -qq update
|
||||
apt-get install -y make build-essential m4 pkg-config autoconf libtool git python3 python3-distutils curl zip unzip tar bison p7zip-full libx11-dev libxft-dev libxext-dev libdbus-1-dev libxi-dev libxtst-dev libxrandr-dev libnotify-dev
|
||||
|
||||
- name: Install aws cli tool
|
||||
run: |
|
||||
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
||||
unzip awscliv2.zip
|
||||
./aws/install
|
||||
|
||||
- name: Automake
|
||||
if: success()
|
||||
run: ./_autosetup
|
||||
|
||||
- name: Configure client
|
||||
if: success() && matrix.type == 'client'
|
||||
run: linux/ci_configure_client.sh
|
||||
|
||||
- name: Configure manager
|
||||
if: success() && matrix.type == 'manager'
|
||||
run: linux/ci_configure_manager.sh
|
||||
|
||||
- name: Make
|
||||
if: success()
|
||||
run: make -j $(nproc --all) LDFLAGS="-static-libstdc++ -s"
|
||||
|
||||
- name: Prepare logs on failure
|
||||
if: ${{ failure() }}
|
||||
run: python3 ./deploy/prepare_deployment.py logs
|
||||
|
||||
- name: Upload logs on failure
|
||||
if: ${{ failure() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: linux-package_logs_${{ matrix.type }}_${{ github.event.pull_request.head.sha }}
|
||||
path: deploy/logs.7z
|
||||
|
||||
- name: Prepare artifacts for deploy
|
||||
if: success()
|
||||
run: python3 ./deploy/prepare_deployment.py linux_${{ matrix.type }}
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
if: success()
|
||||
with:
|
||||
name: linux-package_${{ matrix.type }}_${{ github.event.pull_request.head.sha }}
|
||||
path: deploy/linux_${{ matrix.type }}.7z
|
|
@ -253,6 +253,9 @@ def prepare_linux_apps_arm64(target_directory):
|
|||
def prepare_linux_apps_vcpkg(target_directory):
|
||||
prepare_7z_archive('linux_apps-vcpkg', target_directory, linux_apps_list)
|
||||
|
||||
def prepare_linux_manager(target_directory):
|
||||
prepare_7z_archive('linux_manager', target_directory, linux_manager_list)
|
||||
|
||||
def prepare_linux_manager_with_webview(target_directory):
|
||||
prepare_7z_archive('linux_manager-with-webview', target_directory, linux_manager_list)
|
||||
|
||||
|
@ -311,6 +314,7 @@ boinc_types = {
|
|||
'linux_apps': prepare_linux_apps,
|
||||
'linux_apps-arm64': prepare_linux_apps_arm64,
|
||||
'linux_apps-vcpkg': prepare_linux_apps_vcpkg,
|
||||
'linux_manager': prepare_linux_manager,
|
||||
'linux_manager-with-webview': prepare_linux_manager_with_webview,
|
||||
'linux_manager-with-webview-vcpkg': prepare_linux_manager_with_webview_vcpkg,
|
||||
'linux_manager-without-webview': prepare_linux_manager_without_webview,
|
||||
|
|
Loading…
Reference in New Issue