Skip to content

Add continuous collection of profiles in java profiler #1923

Add continuous collection of profiles in java profiler

Add continuous collection of profiles in java profiler #1923

name: Build gProfiler executable, test (if PR) and deploy (if tag)
on:
pull_request:
push:
tags:
- '**'
jobs:
build-executable:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Get and verify tag value
run: |
echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
./scripts/cmp_tags.sh
# TODO: Add docker layer caching when GitHub Actions cache is stabilized and works good with "satackey/[email protected]"
- name: Build gProfiler executable
# Using DOCKER_BUILDKIT=1 although it has another cache mechanism which is not supported by satackey/[email protected]
# We tried to cache using buildx cache (cache-from, cache-to flags) and got strange behavior when caching,
# decided not to use buildkit here to get nice caches.
# if we enable caching again, we can disable DOCKER_BUILDKIT.
run: |
mkdir -p output
./scripts/build_x86_64_executable.sh
mv build/x86_64/gprofiler output/gprofiler_x86_64
cp output/gprofiler_x86_64 output/gprofiler # for backwards compatibility
- name: Upload the executables as job artifacts
uses: actions/upload-artifact@v2
with:
name: gprofiler
path: output/
retention-days: 1
test-executable:
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-20.04 # the tests which use ruby/node/python etc and run at non-root privs, fail to read the files when running
# on ubuntu-22.04/ubuntu-latest:
# stderr: ruby: Permission denied -- /home/runner/work/gprofiler/gprofiler/tests/containers/ruby/fibonacci.rb (LoadError)
needs: build-executable
strategy:
fail-fast: false
matrix:
containers:
- alpine
- ubuntu:14.04
- ubuntu:16.04
- ubuntu:18.04
- ubuntu:20.04
- ubuntu:20.10
- ubuntu:22.04
- centos:6
- centos:7
- centos:8
- debian:8
- debian:9
- debian:10
- debian:11
steps:
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: "3.8"
- name: Install Java
uses: actions/setup-java@v1
with:
java-version: '8.0.275'
java-package: jdk
architecture: x64
- name: Install Node.JS
uses: actions/setup-node@v2
with:
# same version as used in tests/containers/nodejs/Dockerfile
node-version: 10.x
- name: Checkout Code
uses: actions/checkout@v3
with:
submodules: true
- name: Download the executable from previous job
uses: actions/download-artifact@v2
with:
name: gprofiler
path: dist/
- name: Run gProfiler tests
run: |
mv dist/gprofiler_x86_64 dist/gprofiler
chmod +x dist/gprofiler
NO_APT_INSTALL=1 ./tests/test.sh --exec-container-image ${{ matrix.containers }} --executable dist/gprofiler -k test_executable
build-executable-aarch64:
if: startsWith(github.ref, 'refs/tags/')
runs-on: ["self-hosted", "ARM64"]
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Set up requirements
run: scripts/setup_runner_requirements.sh
- name: Get and verify tag value
run: |
echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
./scripts/cmp_tags.sh
- name: Build gProfiler executable
run: |
mkdir -p output
./scripts/build_aarch64_executable.sh
mv build/aarch64/gprofiler output/gprofiler_aarch64
- name: Upload the executables as job artifacts
uses: actions/upload-artifact@v2
with:
name: gprofiler
path: output/
retention-days: 1
deploy-executable:
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-20.04
needs:
- build-executable
- build-executable-aarch64
steps:
- name: Download executables from the previous job
uses: actions/download-artifact@v2
with:
name: gprofiler
path: output/
- name: Get tag value
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Release
uses: softprops/action-gh-release@v1
with:
files: |
output/gprofiler_x86_64
output/gprofiler_aarch64
output/gprofiler
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}