From 1fcfe0c9e720bbcb1889112d5935993e83582d4c Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Sun, 25 Jun 2023 21:36:23 +0200 Subject: [PATCH] [CI][linux] Create separate flow to build proper linux binaries for packaging Signed-off-by: Vitalii Koshura --- .github/workflows/linux-package.yml | 90 +++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .github/workflows/linux-package.yml diff --git a/.github/workflows/linux-package.yml b/.github/workflows/linux-package.yml new file mode 100644 index 00000000000..d198209e72f --- /dev/null +++ b/.github/workflows/linux-package.yml @@ -0,0 +1,90 @@ +# 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 . + +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: debian:buster + 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 python3 + + - 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 LDFLAGS="-static-libstdc++" + + - name: Prepare logs on failure + if: ${{ failure() }} + run: python ./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