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

measure cmake run #880

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 1 addition & 48 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,58 +1,11 @@
---
name: DNF 5 CI
on:
pull_request_target:
types: [opened, reopened, synchronize]
pull_request:
merge_group:
types: [checks_requested]

jobs:
package-build:
name: Package Build
runs-on: ubuntu-latest
container: ghcr.io/rpm-software-management/dnf-ci-host
strategy:
fail-fast: false # don't fail all matrix jobs if one of them fails
matrix:
compiler: ['', clang] # gcc is the default
steps:
- name: Check out ci-dnf-stack
uses: actions/checkout@v2
with:
repository: rpm-software-management/ci-dnf-stack

- name: Setup CI
id: setup-ci
uses: ./.github/actions/setup-ci
with:
copr-user: ${{secrets.COPR_USER}}
copr-api-token: ${{secrets.COPR_API_TOKEN}}

- name: Check out sources
uses: actions/checkout@v2
with:
path: gits/${{github.event.repository.name}}
ref: ${{github.event.pull_request.head.sha}} # check out the PR HEAD
fetch-depth: 0

- name: Rebase the pull request on target branch
run: |
pushd gits/${{github.event.repository.name}}
git config user.name github-actions
git config user.email [email protected]
echo "Rebasing \"`git log --oneline -1`\" on ${{github.event.pull_request.base.ref}}: \"`git log --oneline -1 origin/${{github.event.pull_request.base.ref}}`\""
git rebase origin/${{github.event.pull_request.base.ref}}
popd

- name: Build in Copr
run: |
CHROOTS="fedora-37-x86_64, fedora-38-x86_64, fedora-rawhide-x86_64"
PROJECT_NAME="CI-libdnf5-pr${{github.event.pull_request.number}}"
if [[ -n "${{matrix.compiler}}" ]]; then
PROJECT_NAME+="-${{matrix.compiler}}"
fi
rpm-gitoverlay --gitdir=gits build-overlay -s overlays/dnf5-unstable rpm --with "${{matrix.compiler}}" copr --owner "${{steps.setup-ci.outputs.copr-user}}" --project "$PROJECT_NAME" --chroots "$CHROOTS" --delete-project-after-days=7 --additional-repos="copr://rpmsoftwaremanagement/dnf-nightly copr://rpmsoftwaremanagement/dnf5-unstable"

copr-build:
name: Copr Build
runs-on: ubuntu-latest
Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/clear-all-cache.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Clear cache

on:
workflow_dispatch:

permissions:
actions: write

jobs:
clear-cache:
runs-on: ubuntu-latest
steps:
- name: Clear cache
uses: actions/github-script@v6
with:
script: |
console.log("About to clear")
const caches = await github.rest.actions.getActionsCacheList({
owner: context.repo.owner,
repo: context.repo.repo,
})
for (const cache of caches.data.actions_caches) {
console.log(cache)
github.rest.actions.deleteActionsCacheById({
owner: context.repo.owner,
repo: context.repo.repo,
cache_id: cache.id,
})
}
console.log("Clear completed")
126 changes: 126 additions & 0 deletions .github/workflows/package-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
name: Package Build
on:
pull_request:
merge_group:
types: [checks_requested]

jobs:
ccache-build:
name: CCache Build
runs-on: ubuntu-latest
container:
image: fedora:rawhide
strategy:
fail-fast: false # don't fail all matrix jobs if one of them fails
matrix:
compiler: ['gcc', clang] # gcc is the default

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

# this step needs to be incorporated in our container that we use for testing
- name: Install dependencies
run: |
dnf install -y ccache clang && dnf builddep -y ./dnf5.spec

- name: Configure CC CXX env variables
id: configure_compiler
run: |
if [[ "${{matrix.compiler}}" -eq "clang" ]]; then
echo "cxx=/usr/lib64/ccache/clang++" >> "$GITHUB_OUTPUT"
echo "cc=/usr/lib64/ccache/clang" >> "$GITHUB_OUTPUT"
else
echo "cxx=/usr/lib64/ccache/g++" >> "$GITHUB_OUTPUT"
echo "cc=/usr/lib64/ccache/gcc" >> "$GITHUB_OUTPUT"
fi

# make sure that for every build the GitHub Actions cache key is unique
- name: Prepare CCache timestamp
id: ccache_cache_timestamp
run:
echo "timestamp=$(date +%Y-%m-%d-%H:%M:%S)-UTC" >> "$GITHUB_OUTPUT"

- name: Cache CCache files
uses: actions/cache@v3
with:
path: ~/.cache/ccache
# cache is saved with this hierarchy
# dnf5-ccache-gcc-pr-main-111-2023-01-01-00:00:00-UTC
# -clang-pr-main-111-2023-01-01-00:00:00-UTC
key: ${{ github.event.repository.name }}-ccache-${{ matrix.compiler }}-pr-${{ github.base_ref }}-${{ github.event.number }}-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
# we want to match the latest cache prioritizing the same PR (e.g.
# 111), then the same branch (e.g. main), and, in all cases, we want
# to match the project-compiler (gcc,clang) match by date is not
# needed since caches are always matched by date.
#
# Example: dnf5-ccache-clang-pr-devel-111-2023-01-01-00:00:00-UTC will
# try to fetch cache from the same pr, 111 against devel. if no pr is
# found it will try to fetch any pr against devel branch.
restore-keys: |
${{ github.event.repository.name }}-ccache-${{ matrix.compiler }}pr-${{ github.base_ref }}-${{ github.event.number }}-
${{ github.event.repository.name }}-ccache-${{ matrix.compiler }}pr-${{ github.base_ref }}-

- name: Zero CCache statistics
run: ccache -z

- name: Configure DNF5 with CMake
run: CXX=${{ steps.configure_compiler.outputs.cxx }} CC=${{ steps.configure_compiler.outputs.cc }} cmake -S . -B build

- name: Build DNF5
id: ccache-build
run: cmake --build build

- name: Display CCache statistics
run: ccache -s

rpm-gitoverlay-build:
name: Git Overlay Build
needs: [ ccache-build ]
# If any of the jobs listed in needs return "failure" then run this job
if: ${{ always() && contains(needs.*.result, 'failure') }}
runs-on: ubuntu-latest
container: ghcr.io/rpm-software-management/dnf-ci-host
strategy:
fail-fast: false # don't fail all matrix jobs if one of them fails
matrix:
compiler: ['', clang] # gcc is the default
steps:
- name: Check out ci-dnf-stack
uses: actions/checkout@v2
with:
repository: rpm-software-management/ci-dnf-stack

- name: Setup CI
id: setup-ci
uses: ./.github/actions/setup-ci
with:
copr-user: ${{secrets.COPR_USER}}
copr-api-token: ${{secrets.COPR_API_TOKEN}}

- name: Check out sources
uses: actions/checkout@v2
with:
path: gits/${{github.event.repository.name}}
ref: ${{github.event.pull_request.head.sha}} # check out the PR HEAD
fetch-depth: 0

- name: Rebase the pull request on target branch
run: |
pushd gits/${{github.event.repository.name}}
git config user.name github-actions
git config user.email [email protected]
echo "Rebasing \"`git log --oneline -1`\" on ${{github.event.pull_request.base.ref}}: \"`git log --oneline -1 origin/${{github.event.pull_request.base.ref}}`\""
git rebase origin/${{github.event.pull_request.base.ref}}
popd

- name: Build in Copr
run: |
CHROOTS="fedora-37-x86_64, fedora-38-x86_64, fedora-rawhide-x86_64"
PROJECT_NAME="CI-libdnf5-pr${{github.event.pull_request.number}}"
if [[ -n "${{matrix.compiler}}" ]]; then
PROJECT_NAME+="-${{matrix.compiler}}"
fi
rpm-gitoverlay --gitdir=gits build-overlay -s overlays/dnf5-unstable rpm --with "${{matrix.compiler}}" copr --owner "${{steps.setup-ci.outputs.copr-user}}" --project "$PROJECT_NAME" --chroots "$CHROOTS" --delete-project-after-days=7 --additional-repos="copr://rpmsoftwaremanagement/dnf-nightly copr://rpmsoftwaremanagement/dnf5-unstable"
2 changes: 2 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
name: Pre Commit
on:
pull_request:
merge_group:
types: [checks_requested]


jobs:
Expand Down
Loading