diff --git a/.github/workflows/linux-package.yml b/.github/workflows/linux-package.yml new file mode 100644 index 00000000000..7da65948a82 --- /dev/null +++ b/.github/workflows/linux-package.yml @@ -0,0 +1,110 @@ +# 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: + 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 curl zip unzip tar bison + + - 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: Test + run: | + echo "AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION" + echo "VCPKG_BINARY_SOURCES: $VCPKG_BINARY_SOURCES" + + - name: Test aws cli tool + run: | + aws s3 ls s3://vcpkg.cache.boinc/ --no-sign-request + + - 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: 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