Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Github CI #1393

Merged
merged 79 commits into from
Mar 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
13aaba2
Update CMake formatting check
hainest Nov 10, 2022
c3c9743
Make generic base container for Ubuntu distros
hainest Nov 11, 2022
7b0dafe
Add temp Dockerfile to build Dyninst
hainest Nov 14, 2022
6407f60
Rewrite build script
hainest Dec 15, 2022
5aaf881
Remove testsuite stuff from docker images
hainest Dec 15, 2022
1c8b3df
Update README
hainest Dec 15, 2022
bb59e07
Remove test workflow
hainest Dec 15, 2022
7331ac7
Add PR build tests
hainest Dec 15, 2022
9c67f99
Add dependency version checks
hainest Dec 16, 2022
38d0309
Disable release workflow
hainest Dec 15, 2022
2ca4e18
Rename base-containers.yaml to dev-containers.yaml
hainest Feb 27, 2023
19bdc89
Update dev container creation
hainest Feb 27, 2023
ca5a49c
Add comments about dependency version checks
hainest Feb 27, 2023
4f8acb5
Use Dyninst base container when running build tests
hainest Feb 27, 2023
ca1189e
Check out Dyninst in /dyninst when doing build tests
hainest Feb 27, 2023
e72ae9e
Fix some spelling items in build-tests.yaml
hainest Feb 27, 2023
7073b5f
Use checkout@v3 in dev-containers.yaml
hainest Feb 27, 2023
1693f3f
Install clang in base Ubuntu container
hainest Feb 28, 2023
3ee32f5
Return error when dependency version check fails
hainest Mar 2, 2023
bf9a79f
Rename 'Build Tests' workflow to 'Pull Request Tests'
hainest Mar 2, 2023
b5a1c2f
Use latest Github ubuntu image for cmake formatting job
hainest Mar 2, 2023
bc88424
Use only dyninst org when building dev containers
hainest Mar 2, 2023
805695e
Remove pull request checks in dev-containers
hainest Mar 2, 2023
bc9d4df
Fix job name in dev-containers
hainest Mar 2, 2023
97a1492
Add debugging to pr-tests
hainest Mar 2, 2023
df883b5
Change boost version to 1.70.0
hainest Mar 2, 2023
f59afbe
Do checkout in dependency-version
hainest Mar 2, 2023
eb1b721
Add more debugging in pr-tests
hainest Mar 2, 2023
e36f18b
Run only on base container
hainest Mar 2, 2023
9ebf019
More debugging
hainest Mar 2, 2023
6518a88
Revert "Run only on base container"
hainest Mar 2, 2023
86a54c1
Checkout to /dyninst
hainest Mar 2, 2023
6a35263
Bind mount the container
hainest Mar 2, 2023
63fa147
Fix typo
hainest Mar 2, 2023
0e2745a
Use an anonymous volume name
hainest Mar 2, 2023
e317e37
Volume mount to '.'
hainest Mar 2, 2023
1449c85
Use an anonymous volume name
hainest Mar 2, 2023
c2af0a9
Use ./dyninst as volume mount point
hainest Mar 2, 2023
6cccc6c
Checkout to relative directory
hainest Mar 2, 2023
174a1e5
Use GITHUB_WORKSPACE as mount point
hainest Mar 2, 2023
ef83cd6
Use env.GITHUB_WORKSPACE
hainest Mar 2, 2023
ef26f54
Use symlink instead of mount point
hainest Mar 2, 2023
e731da5
More debugging
hainest Mar 2, 2023
31324e6
Use abs path for link
hainest Mar 2, 2023
29d50a5
Pass abs path of source to build.sh
hainest Mar 2, 2023
20b1c2e
Remove debugging
hainest Mar 2, 2023
72c7da3
Use checkout action to bring in other repos
hainest Mar 2, 2023
530ccd1
Add symlink back
hainest Mar 2, 2023
50ab95b
Use the correct format for repository names
hainest Mar 3, 2023
132b93e
Specify paths for checkout
hainest Mar 3, 2023
bf08fbf
Debug testsuite
hainest Mar 3, 2023
7093401
Debug testsuite
hainest Mar 3, 2023
42e3004
Debug testsuite
hainest Mar 3, 2023
a2aecfb
Debug testsuite
hainest Mar 3, 2023
bd712ae
Debug testsuite
hainest Mar 3, 2023
7aca07d
Debug testsuite
hainest Mar 3, 2023
c3c4d34
Debug testsuite
hainest Mar 3, 2023
536038c
Remove testsuite build
hainest Mar 3, 2023
299e0ae
Don't use clear
hainest Mar 3, 2023
638cf90
external-tests debugging
hainest Mar 3, 2023
387bccb
Enable whole pipeline
hainest Mar 4, 2023
7378b68
build_elfutils.sh: parse version from config file
hainest Mar 4, 2023
d6c63ce
Whitespace in docker/build.sh
hainest Mar 14, 2023
7a69dd5
Use updated container naming
hainest Mar 14, 2023
3baa23a
Rename matrix.container -> matrix.os in pr-tests.yaml
hainest Mar 14, 2023
bcd5b13
Use updated container names in pr-tests.yaml
hainest Mar 14, 2023
f07d318
Fix bug in build_elfutils.sh
hainest Mar 14, 2023
1686fb5
Use updated container names
hainest Mar 14, 2023
75a91fc
Debug containers
hainest Mar 14, 2023
3b09495
Debug containers
hainest Mar 14, 2023
4e3178b
Make compiler and flags configurable in docker/build.sh
hainest Mar 15, 2023
3d3387b
Add clang build to PR tests
hainest Mar 15, 2023
72d583f
Update PR test job names
hainest Mar 15, 2023
abeb674
Pass COMPILERS to cmake in build script...
hainest Mar 15, 2023
b476fcc
Debug build script
hainest Mar 15, 2023
6f5da6e
Add libomp
hainest Mar 15, 2023
767143d
use libomp-dev
hainest Mar 15, 2023
3c8faad
Debug builds
hainest Mar 15, 2023
03c0ee2
Undo debugging stuff
hainest Mar 15, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
79 changes: 0 additions & 79 deletions .github/workflows/base-containers.yaml

This file was deleted.

9 changes: 6 additions & 3 deletions .github/workflows/cmake-formatting.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@

name: Formatting
name: CMake Formatting

on:
pull_request:
branches: [ master ]
paths:
- '**.cmake'
- '**CMakeLists.txt'

jobs:
cmake-formatting:
runs-on: ubuntu-20.04
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update
Expand Down
46 changes: 46 additions & 0 deletions .github/workflows/dependency-version.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Ensure the minimum dependency versions found in the various CMake
# files match the expected values. This ensures we synchronize versions
# across containers and workflows.

name: Check dependency versions

on:
pull_request:
branches: [ master ]
paths:
- '**.cmake'
- '**CMakeLists.txt'
- 'docker/dependencies.versions'

jobs:
check-version:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Version check
run: |
res=0
current=$(awk 'match($0,/set\(_boost_min_version (.+)\)/,a){print a[1]}' cmake/Boost.cmake)
expected=$(awk 'match($0,/boost:(.+)/,a){print a[1]}' docker/dependencies.versions)
if test "$current" != "$expected"; then
echo "Boost mismatch: Found $current, expected $expected" >/dev/stderr
res=1
fi

current=$(awk 'match($0,/set\(_tbb_min_version (.+)\)/,a){print a[1]}' cmake/ThreadingBuildingBlocks.cmake)
expected=$(awk 'match($0,/tbb:(.+)/,a){print a[1]}' docker/dependencies.versions)
IFS=' ' read -a versions <<< $(echo $current)
if test "${versions[0]}" != "$expected" -a "${versions[1]}" != "$expected"; then
echo "TBB mismatch: Found ('${versions[0]}','${versions[1]}'), expected $expected" >/dev/stderr
res=1
fi

current=$(awk 'match($0,/set\(_min_version (.+)\)/,a){print a[1]}' cmake/ElfUtils.cmake)
expected=$(awk 'match($0,/elfutils:(.+)/,a){print a[1]}' docker/dependencies.versions)
if test "$current" != "$expected"; then
echo "Elfutils mismatch: Found $current, expected $expected" >/dev/stderr
res=1
fi
exit $res
37 changes: 37 additions & 0 deletions .github/workflows/dev-containers.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Build and Deploy Development Containers

on:
push:
branches:
- master

jobs:
build:
permissions:
packages: write
strategy:
fail-fast: false
matrix:
os: ["ubuntu-20.04"]
runs-on: ubuntu-latest
name: Build
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Build Dyninst Dev Container
run: |
cd docker/
docker build --build-arg base=ghcr.io/dyninst/amd64/${{ matrix.os }}-base:latest
-f Dockerfile \
-t ghcr.io/dyninst/amd64/${{ matrix.os }}:latest ../

- name: GHCR Login
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Deploy
run: docker push ghcr.io/dyninst/amd64/${{ matrix.os }}:latest
102 changes: 102 additions & 0 deletions .github/workflows/pr-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# On each pull request, we build Dyninst, the test suite, the examples from
# dyninst/examples, and the external test from dyninst/external-tests
#
# The builds are carried out for each supported OS using the base containers
# at https://github.com/orgs/dyninst/packages

name: Pull Request Tests

on:
pull_request:
branches:
- master
jobs:
gcc-build:
permissions:
packages: read
strategy:
fail-fast: false
matrix:
os: ['ubuntu-20.04']
runs-on: ubuntu-latest
container:
image: ghcr.io/dyninst/amd64/${{ matrix.os }}-base:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
name: gcc on ${{ matrix.os }}
steps:
- name: Checkout Dyninst
uses: actions/checkout@v3
with:
path: dyninst/src

- name: Build Dyninst
run: |
ln -s $PWD/dyninst /dyninst
export DYNINST_C_FLAGS="-Werror" DYNINST_CXX_FLAGS="-Werror"
export DYNINST_C_COMPILER="gcc" DYNINST_CXX_COMPILER="g++"
bash /dyninst/src/docker/build.sh /dyninst/src

- name: Checkout Test Suite
uses: actions/checkout@v3
with:
repository: dyninst/testsuite
path: testsuite

- name: Build testsuite
run: |
cd testsuite; mkdir build; cd build
cmake .. -DDyninst_DIR=/dyninst/install/lib/cmake/Dyninst
cmake --build .

- name: Checkout Examples
uses: actions/checkout@v3
with:
repository: dyninst/examples
path: examples

- name: Build examples
run: |
cd examples; mkdir build; cd build
cmake .. -DDyninst_DIR=/dyninst/install/lib/cmake/Dyninst
cmake --build .

- name: Checkout External Tests
uses: actions/checkout@v3
with:
repository: dyninst/external-tests
path: external-tests

- name: Build external tests
run: |
cd external-tests; mkdir build; cd build
cmake .. -DDyninst_DIR=/dyninst/install/lib/cmake/Dyninst
cmake --build .

clang-build:
permissions:
packages: read
strategy:
fail-fast: false
matrix:
os: ['ubuntu-20.04']
runs-on: ubuntu-latest
container:
image: ghcr.io/dyninst/amd64/${{ matrix.os }}-base:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
name: clang on ${{ matrix.os }}
steps:
- name: Checkout Dyninst
uses: actions/checkout@v3
with:
path: dyninst/src

- name: Build Dyninst
run: |
ln -s $PWD/dyninst /dyninst
export DYNINST_C_FLAGS="-Werror" DYNINST_CXX_FLAGS="-Werror"
export DYNINST_C_COMPILER="clang" DYNINST_CXX_COMPILER="clang++"
bash /dyninst/src/docker/build.sh /dyninst/src
48 changes: 0 additions & 48 deletions .github/workflows/release.yaml

This file was deleted.

39 changes: 0 additions & 39 deletions .github/workflows/test-dyninst.yaml

This file was deleted.