Skip to content

Commit

Permalink
[Misc] Update CI configuration
Browse files Browse the repository at this point in the history
Summary: Update CI configuration according to upstream

Testing: CICD

Reviewers: sendaoYan, yuleil

Issue: #796
  • Loading branch information
Accelerator1996 committed Mar 15, 2024
1 parent 7fc6bd1 commit 59fa12a
Show file tree
Hide file tree
Showing 10 changed files with 448 additions and 2,238 deletions.
103 changes: 103 additions & 0 deletions .github/actions/build-serverless-adapter/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
#
# Copyright (c) 2024 Alibaba Group Holding Limited. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Alibaba designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code 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 General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#

name: 'Build serverless-adapter'
description: 'Build it using built JDK'
inputs:
platform:
description: 'Platform name'
required: true
debug-suffix:
description: 'File name suffix denoting debug level, possibly empty'
required: false

runs:
using: composite
steps:
- name: 'Found bundle'
id: bundle_found
run: |
# Only support linux now.
jdk_bundle_tar_gz="$(ls build/*/bundles/jdk-*_bin${{ inputs.debug-suffix }}.tar.gz 2> /dev/null || true)"
if [[ "$jdk_bundle_tar_gz" != "" ]]; then
jdk_bundle_name=${jdk_bundle_tar_gz##*/}
echo "jdk_pkg=$jdk_bundle_tar_gz" >> $GITHUB_OUTPUT
echo "jdk_pkg_name=$jdk_bundle_name" >> $GITHUB_OUTPUT
echo "decompress_cmd=tar zxf" >> $GITHUB_OUTPUT
echo "decompress_redirect_flag=-C" >> $GITHUB_OUTPUT
echo "decompress_extra_cmd=--strip-components=1" >> $GITHUB_OUTPUT
echo "compress_cmd=tar zcf" >> $GITHUB_OUTPUT
else
echo "jdk_pkg=" >> $GITHUB_OUTPUT
echo "jdk_pkg_name=" >> $GITHUB_OUTPUT
echo "decompress_cmd=" >> $GITHUB_OUTPUT
echo "decompress_redirect_flag=" >> $GITHUB_OUTPUT
echo "decompress_extra_cmd=" >> $GITHUB_OUTPUT
echo "compress_cmd=" >> $GITHUB_OUTPUT
fi
shell: bash

- name: 'Bundle decompression'
id: bundle_decompress
run: |
mkdir -p bundle_workdir
${{ steps.bundle_found.outputs.decompress_cmd }} ${{ steps.bundle_found.outputs.jdk_pkg }} ${{ steps.bundle_found.outputs.decompress_redirect_flag }} bundle_workdir ${{ steps.bundle_found.outputs.decompress_extra_cmd }}
bin_path=$(find bundle_workdir -name bin)
pwd=$(pwd)
java_home_path=${bin_path%%'/bin'*}
echo "bundle_home=$pwd/bundle_workdir" >> $GITHUB_OUTPUT
echo "java_home=$pwd/$java_home_path" >> $GITHUB_OUTPUT
shell: bash
if: steps.bundle_found.outputs.jdk_pkg != '' && steps.bundle_found.outputs.decompress_cmd != ''

- name: 'Checkout serverless-adapter source code'
id: serverless_adapter_checkout
uses: actions/checkout@v3
with:
repository: dragonwell-project/serverless-adapter
ref: main
path: serverless-adapter

- name: 'Build serverless-adapter'
id: serverless_adapter_build
run: |
JAVA_HOME=${{ steps.bundle_decompress.outputs.java_home }};PATH=${{ steps.bundle_decompress.outputs.java_home }}/bin:$PATH mvn package
shell: bash
working-directory: serverless-adapter

- name: 'Copy serverless-adapter into boot jdk'
run: |
mkdir -p ${{ steps.bundle_decompress.outputs.java_home }}/lib/serverless
cp -f serverless-adapter/target/serverless-adapter-0.1.jar ${{ steps.bundle_decompress.outputs.java_home }}/lib/serverless/serverless-adapter.jar
cp -f serverless-adapter/output/libloadclassagent.so ${{ steps.bundle_decompress.outputs.java_home }}/lib/serverless/libloadclassagent.so
shell: bash

- name: 'Regenerate bundle'
run: |
cd ${{ steps.bundle_decompress.outputs.bundle_home }}
if [[ -f "${{ steps.bundle_found.outputs.jdk_pkg_name }}" ]]; then
rm -rf ${{ steps.bundle_found.outputs.jdk_pkg_name }}
fi
${{ steps.bundle_found.outputs.compress_cmd }} ${{ steps.bundle_found.outputs.jdk_pkg_name }} *
cd -
mv -f ${{ steps.bundle_decompress.outputs.bundle_home }}/${{ steps.bundle_found.outputs.jdk_pkg_name }} ${{ steps.bundle_found.outputs.jdk_pkg }}
shell: bash
2 changes: 2 additions & 0 deletions .github/actions/config/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,6 @@ runs:
# Extract value from configuration file
value="$(grep -h ${{ inputs.var }}= make/conf/github-actions.conf | cut -d '=' -f 2-)"
echo "value=$value" >> $GITHUB_OUTPUT
dragonwell_value="$(grep -h ${{ inputs.var }}= make/conf/test-dependencies | cut -d '=' -f 2-)"
echo "value=$value" >> $GITHUB_OUTPUT
shell: bash
4 changes: 3 additions & 1 deletion .github/actions/get-jtreg/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@ runs:
- name: 'Build JTReg'
run: |
# Build JTReg and move files to the proper locations
bash make/build.sh --jdk "$JAVA_HOME_11_X64"
jdkPath="$(which java)"
javaHome=${jdkPath%%'/bin'*}
bash make/build.sh --jdk "$javaHome"
mkdir ../installed
mv build/images/jtreg/* ../installed
working-directory: jtreg/src
Expand Down
29 changes: 23 additions & 6 deletions .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,15 @@ on:
make-arguments:
required: false
type: string
runs-on:
required: true
type: string

jobs:
build-linux:
name: build
runs-on: ubuntu-22.04
runs-on: ${{fromJson(inputs.runs-on)}}
#runs-on: 'ubuntu-20.04'

strategy:
fail-fast: false
Expand All @@ -80,11 +84,11 @@ jobs:
- name: 'Checkout the JDK source'
uses: actions/checkout@v4

- name: 'Get the BootJDK'
- name: 'Get boot JDK'
id: bootjdk
uses: ./.github/actions/get-bootjdk
with:
platform: linux-x64
platform: ${{ inputs.platform }}

- name: 'Get JTReg'
id: jtreg
Expand All @@ -105,9 +109,14 @@ jobs:
if [[ '${{ inputs.apt-architecture }}' != '' ]]; then
sudo dpkg --add-architecture ${{ inputs.apt-architecture }}
fi
sudo apt-get update
sudo apt-get install --only-upgrade apt
sudo apt-get install gcc-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} g++-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} libxrandr-dev${{ steps.arch.outputs.suffix }} libxtst-dev${{ steps.arch.outputs.suffix }} libcups2-dev${{ steps.arch.outputs.suffix }} libasound2-dev${{ steps.arch.outputs.suffix }} ${{ inputs.apt-extra-packages }}
sudo apt-get update -y
sudo apt-get install -y --only-upgrade apt
if [[ '${{ inputs.platform }}' == 'linux-aarch64' ]]; then
extra_packages='libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libfontconfig1-dev maven tar zip unzip'
else
extra_packages=
fi
sudo apt-get install -y gcc-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} g++-${{ inputs.gcc-major-version }}${{ inputs.gcc-package-suffix }} libxrandr-dev${{ steps.arch.outputs.suffix }} libxtst-dev${{ steps.arch.outputs.suffix }} libcups2-dev${{ steps.arch.outputs.suffix }} libasound2-dev${{ steps.arch.outputs.suffix }} ${{ inputs.apt-extra-packages }} $extra_packages
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ inputs.gcc-major-version }} 100 --slave /usr/bin/g++ g++ /usr/bin/g++-${{ inputs.gcc-major-version }}
- name: 'Configure'
Expand All @@ -116,6 +125,7 @@ jobs:
--with-conf-name=${{ inputs.platform }}
${{ matrix.flags }}
--with-version-opt=${GITHUB_ACTOR}-${GITHUB_SHA}
--with-version-build=0
--with-boot-jdk=${{ steps.bootjdk.outputs.path }}
--with-jtreg=${{ steps.jtreg.outputs.path }}
--enable-jtreg-failure-handler
Expand All @@ -133,6 +143,13 @@ jobs:
platform: ${{ inputs.platform }}
debug-suffix: '${{ matrix.suffix }}'

- name: 'Build serverless-adapter'
id: build-serverless-adapter
uses: ./.github/actions/build-serverless-adapter
with:
platform: ${{ inputs.platform }}
debug-suffix: '${{ matrix.suffix }}'

- name: 'Upload bundles'
uses: ./.github/actions/upload-bundles
with:
Expand Down
114 changes: 114 additions & 0 deletions .github/workflows/build-riscv.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
#
# Copyright (c) 2024 Alibaba Group Holding Limited. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Alibaba designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code 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 General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#

name: 'Build (riscv)'

on:
workflow_call:
inputs:
platform:
required: true
type: string
extra-conf-options:
required: false
type: string
make-target:
required: false
type: string
default: 'product-bundles test-bundles'
debug-levels:
required: false
type: string
default: '[ "release" ]'
gcc-major-version:
required: false
type: string
gcc-package-suffix:
required: false
type: string
default: ''
apt-architecture:
required: false
type: string
apt-extra-packages:
required: false
type: string
configure-arguments:
required: false
type: string
make-arguments:
required: false
type: string

jobs:
build-linux:
name: build
runs-on: [self-hosted , X64]
container:
image: docker.io/alibabadragonwelljdk/centos7_gcc7_build_image:latest

strategy:
fail-fast: false
matrix:
debug-level: ${{ fromJSON(inputs.debug-levels) }}

steps:
- name: 'Checkout the JDK source'
uses: actions/checkout@v2

- name: 'Configure'
run: >
LD_LIBRARY_PATH=/opt/riscv_toolchain_linux/lib64
PATH=/opt/riscv_toolchain_linux/bin:/usr/local/gcc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
bash configure
--verbose
--with-vendor-name=Alibaba
--with-vendor-url=http://www.alibabagroup.com
--with-vendor-bug-url='mailto:[email protected]'
--with-vendor-vm-bug-url='mailto:[email protected]'
--without-version-opt
--without-version-pre
--with-version-build=9
--with-version-patch=14
--with-boot-jdk=/usr/lib/jvm/jdk-10
--with-native-debug-symbols=external
--with-jvm-variants=server
--disable-warnings-as-errors
--openjdk-target=riscv64-unknown-linux-gnu
--with-sysroot=/opt/fedora28_riscv_root
${{ inputs.extra-conf-options }} ${{ inputs.configure-arguments }} || (
echo "Dumping config.log:" &&
cat config.log &&
exit 1)
- name: 'Build'
id: build
uses: ./.github/actions/do-build
with:
make-target: '${{ inputs.make-target }} ${{ inputs.make-arguments }}'
platform: ${{ inputs.platform }}
debug-suffix: '${{ matrix.suffix }}'

- name: 'Upload bundles'
uses: ./.github/actions/upload-bundles
with:
platform: ${{ inputs.platform }}
debug-suffix: '${{ matrix.suffix }}'
Loading

0 comments on commit 59fa12a

Please sign in to comment.