[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:
Vitalii Koshura 2023-06-25 21:36:23 +02:00
parent 6b9928c755
commit e776483dbb
No known key found for this signature in database
GPG Key ID: CE0DB1726070A5A3
2 changed files with 116 additions and 0 deletions

112
.github/workflows/linux-package.yml vendored Normal file
View File

@ -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

View File

@ -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,