Refactor py-spy & pyperf to separate ProfilerInterface. #1922
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |