Skip to content

Commit

Permalink
[Misc] update GHA config
Browse files Browse the repository at this point in the history
Summary: as title

Testing: CI pipline

Reviewers: lei.yul, sendaoYan

Issue: #651
  • Loading branch information
Accelerator1996 committed Jul 2, 2024
1 parent cf827ca commit ebe1241
Show file tree
Hide file tree
Showing 7 changed files with 582 additions and 268 deletions.
62 changes: 62 additions & 0 deletions .github/actions/build-serverless-adapter/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#
# 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:
java-home:
required: true

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

- name: 'Install dependencies'
id: install_dep
run: |
mkdir -p maven
wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
tar -xvf apache-maven-3.8.8-bin.tar.gz -C maven --strip-components=1
echo "maven_home=${GITHUB_WORKSPACE}/maven/bin" >> $GITHUB_OUTPUT
shell: bash

- name: 'Build serverless-adapter'
id: serverless_adapter_build
run: |
export JAVA_HOME=${{ inputs.java-home }}
export PATH=${{ inputs.java-home }}/bin:${{ steps.install_dep.outputs.maven_home }}:$PATH
mvn package
shell: bash
working-directory: serverless-adapter

- name: 'Copy serverless-adapter into boot jdk'
run: |
mkdir -p ${{ inputs.java-home }}/jre/lib/serverless
cp -f serverless-adapter/target/serverless-adapter-0.1.jar ${{ inputs.java-home }}/jre/lib/serverless/serverless-adapter.jar
cp -f serverless-adapter/output/libloadclassagent.so ${{ inputs.java-home }}/jre/lib/serverless/libloadclassagent.so
shell: bash
54 changes: 54 additions & 0 deletions .github/actions/get-bootjdk/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#
# Copyright (c) 2022, 2023, Oracle and/or its affiliates. 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. Oracle 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.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

inputs:
platform:
description: 'Platform name'
required: true
outputs:
boot_jdk:
value: ${{ steps.get_jdk.outputs.boot_jdk }}

runs:
using: composite
steps:
- name: 'Determine jdk url'
id: get_jdk_url
run: |
if [ "${{ inputs.platform }}" = "x86_64" ] ; then
echo "jdk_url= https://dragonwell.oss-cn-shanghai.aliyuncs.com/8.15.16/Alibaba_Dragonwell_Extended_8.15.16_x64_linux.tar.gz" >> $GITHUB_OUTPUT
elif [ "${{ inputs.platform }}" = "aarch64" ] ; then
echo "jdk_url= https://dragonwell.oss-cn-shanghai.aliyuncs.com/8.15.16/Alibaba_Dragonwell_Extended_8.15.16_aarch64_linux.tar.gz" >> $GITHUB_OUTPUT
fi
shell: bash

- name: 'Get jdk'
id: get_jdk
run: |
wget ${{ steps.get_jdk_url.outputs.jdk_url }} -O jdk.tar.gz
mkdir -p bootJdk
tar zxvf jdk.tar.gz -C bootJdk --strip-components=1
echo "boot_jdk=${PWD}/bootJdk" >> $GITHUB_OUTPUT
shell: bash
127 changes: 127 additions & 0 deletions .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
#
# 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 (linux)'

on:
workflow_call:
inputs:
platform:
required: true
type: string
make-target:
required: false
type: string
default: '"images"'
make-conf:
required: false
type: string
debug-levels:
required: false
type: string
default: '[ "release" ]'
#default: '[ "debug", "release" ]'
apt-extra-packages:
required: false
type: string
configure-arguments:
required: false
type: string
runs-on:
required: true
type: string
bundle_id:
required: true
type: string

jobs:
build-linux:
name: build
runs-on: ${{ fromJSON(inputs.runs-on) }}

strategy:
fail-fast: false
matrix:
debug-level: ${{ fromJSON(inputs.debug-levels) }}
include:
- debug-level: release
flags: --with-debug-level=release
conf-suffix: release
#- debug-level: debug
# flags: --with-debug-level=fastdebug
# suffix: -debug
# conf-suffix: fastdebug

steps:
- name: 'Install dependencies'
run: |
sudo apt update -y
sudo apt install -y ${{ inputs.apt-extra-packages }}
if: ${{ inputs.apt-extra-packages }} != ''

- name: 'Checkout the JDK source'
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}

- name: 'Get boot jdk'
id: get_boot_jdk
uses: ./.github/actions/get-bootjdk
with:
platform: ${{ inputs.platform }}

- name: 'Configure'
run: >
bash configure
--with-boot-jdk=${{ steps.get_boot_jdk.outputs.boot_jdk }}
${{ matrix.flags }}
${{ inputs.configure-arguments }} || (
echo "Dumping config.log:" &&
cat config.log &&
exit 1)
- name: 'Build'
id: build
run: |
make clean
make ${{ inputs.make-target }} CONF=${{ inputs.make-conf }}-${{ matrix.conf-suffix }}
- name: 'Build serverless-adapter'
id: build-serverless-adapter
uses: ./.github/actions/build-serverless-adapter
with:
java-home: ${GITHUB_WORKSPACE}/build/${{ inputs.make-conf }}-${{matrix.conf-suffix}}/images/j2sdk-image
if: ${{ matrix.debug-level }} == 'release'

- name: 'Create bundle file'
id: get_bundle_file
run: |
filename=linux-${{ inputs.platform }}-${{ matrix.debug-level }}-image-${{ inputs.bundle_id }}.tar.gz
tar zcvf ${filename} -C ${GITHUB_WORKSPACE}/build/${{ inputs.make-conf }}-${{ matrix.conf-suffix }}/images/ j2sdk-image
echo "bundle_file=${filename}" >> $GITHUB_OUTPUT
echo "bundle_path=${GITHUB_WORKSPACE}/${filename}" >> $GITHUB_OUTPUT
shell: bash

- name: 'Upload jdk image'
uses: actions/upload-artifact@v2
with:
name: ${{ steps.get_bundle_file.outputs.bundle_file }}
path: ${{ steps.get_bundle_file.outputs.bundle_path }}
50 changes: 46 additions & 4 deletions .github/workflows/check_pr.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright (c) 2019 Alibaba Group Holding Limited. All Rights Reserved.
# 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
Expand All @@ -19,13 +19,55 @@
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#

name: Dragonwell_8_commit_style_check
name: Prerequisites

on: [pull_request]
on:
workflow_call:
inputs:
platforms:
required: true
type: string
outputs:
should_run:
value: ${{ jobs.prerequisites.outputs.should_run }}
bundle_id:
value: ${{ jobs.prerequisites.outputs.bundle_id }}
platform_linux_x64:
value: ${{ jobs.prerequisites.outputs.platform_linux_x64 }}
platform_linux_aarch64:
value: ${{ jobs.prerequisites.outputs.platform_linux_aarch64 }}

jobs:
check_commit:
name: Check Commit Message
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: dragonwell-releng/check_commit_action@master
- uses: dragonwell-releng/check_commit_action@master
if: github.event_name == 'pull_request'

prerequisites:
name: 'Prerequisites'
runs-on: ubuntu-latest
outputs:
should_run: ${{ steps.check_submit.outputs.should_run }}
bundle_id: ${{ steps.check_bundle_id.outputs.bundle_id }}
platform_linux_x64: ${{ steps.check_platforms.outputs.platform_linux_x64 }}
platform_linux_aarch64: ${{ steps.check_platforms.outputs.platform_linux_aarch64 }}

steps:
- name: 'Check if submit tests should actually run depending on secrets and manual triggering'
id: check_submit
run: echo "::set-output name=should_run::${{ inputs.platforms != '' || (!secrets.JDK_SUBMIT_FILTER || startsWith(github.ref, 'refs/heads/submit/')) }}"

- name: 'Check which platforms should be included'
id: check_platforms
run: |
echo "::set-output name=platform_linux_x64::${{ contains(inputs.platforms, 'linux x64') || (inputs.platforms == '') }}"
echo "::set-output name=platform_linux_aarch64::${{ contains(inputs.platforms, 'linux aarch64') || (inputs.platforms == '') }}"
if: steps.check_submit.outputs.should_run != false

- name: 'Determine unique bundle identifier'
id: check_bundle_id
run: echo "::set-output name=bundle_id::${GITHUB_ACTOR}_${GITHUB_SHA:0:8}"
if: steps.check_submit.outputs.should_run != 'false'
Loading

0 comments on commit ebe1241

Please sign in to comment.