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

Add GHA workflow to build and test RPMs #23

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
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
104 changes: 104 additions & 0 deletions .github/workflows/rpm-build-and-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: RPM Build and Test

env:
# TODO: Surely this is a GH variable of some sort for the name of the repo
NAME: argobots

on:
workflow_dispatch:
inputs:
pr-repos:
description: 'Any PR-repos that you want included in this build'
required: false
commit-message:
description: 'Commit message to use rather than the one from git'
required: false
rpm-test-version:
description: 'RPM version to test'
required: false
pull_request:
push:
branches:
- master

concurrency:
group: rpm-build-and-test-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

defaults:
run:
shell: bash --noprofile --norc -ueo pipefail {0}

permissions: {}

jobs:
Variables:
# What a dumb jobs this is
# Needed because of https://github.com/orgs/community/discussions/26671
# Ideally want to be able to use:
# with:
# NAME: ${{ env.NAME }}
# in the Call-RPM-Build job but the above issue prevents it
name: Compute outputs
runs-on: [self-hosted, light]
env:
# see https://github.com/organizations/daos-stack/settings/variables/actions for
# the organizational defaults values for these variables
# TODO: we really need to define a list of supported versions (ideally it's no more than 2)
# build is done on the lowest version and test on the highest with a "sanity test"
# stage done on all versions in the list ecept the highest
EL8_BUILD_VERSION: ${{ vars.EL8_BUILD_VERSION_MASTER }}
EL8_VERSION: ${{ vars.EL8_VERSION_MASTER }}
EL9_BUILD_VERSION: ${{ vars.EL9_BUILD_VERSION_MASTER }}
EL9_VERSION: ${{ vars.EL9_VERSION_MASTER }}
LEAP15_VERSION: ${{ vars.LEAP15_VERSION_MASTER }}
# Which distros to build for
DISTROS: ${{ vars.DISTROS_MASTER }}
TEST_TAG: ${{ vars.TEST_TAG }}
PACKAGING_DIR: ${{ vars.PACKAGING_DIR }}
outputs:
NAME: ${{ env.NAME }}
DISTROS: ${{ env.DISTROS }}
EL8_BUILD_VERSION: ${{ env.EL8_BUILD_VERSION }}
EL9_BUILD_VERSION: ${{ env.EL9_BUILD_VERSION }}
LEAP15_VERSION: ${{ env.LEAP15_VERSION }}
PACKAGING_DIR: ${{ env.PACKAGING_DIR }}
TEST_TAG: ${{ env.TEST_TAG }}
steps:
- name: Echo
if: false
run: echo

Call-RPM-Build:
name: Build RPM
needs: Variables
if: inputs.rpm-test-version == ''
permissions:
statuses: write
uses: daos-stack/actions-lib/.github/workflows/rpm-build.yml@v1
secrets: inherit
with:
NAME: ${{ needs.Variables.outputs.NAME }}
DISTROS: ${{ needs.Variables.outputs.DISTROS }}
EL8_BUILD_VERSION: ${{ needs.Variables.outputs.EL8_BUILD_VERSION }}
EL9_BUILD_VERSION: ${{ needs.Variables.outputs.EL9_BUILD_VERSION }}
LEAP15_VERSION: ${{ needs.Variables.outputs.LEAP15_VERSION }}
PACKAGING_DIR: ${{ needs.Variables.outputs.PACKAGING_DIR}}
# RUN_GHA: true

Call-RPM-Test:
# TODO: investigate how cancelling this can cancel the downstream job
name: Test RPMs with DAOS
needs: [Variables, Call-RPM-Build]
uses: daos-stack/actions-lib/.github/workflows/rpm-test.yml@v1
# it would be better if we could do this in rpm-test.yml but we can't because it causes:
# The nested job 'Test-with-DAOS' is requesting 'issues: write', but is only allowed
# 'issues: none'.
permissions:
issues: write
secrets: inherit
with:
NAME: ${{ needs.Variables.outputs.NAME }}
DISTROS: ${{ needs.Variables.outputs.DISTROS }}
TEST_TAG: ${{ needs.Variables.outputs.TEST_TAG }}
RUN_GHA: ${{ needs.Call-RPM-Build.outputs.run-gha == 'true' }}
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
_topdir/
*.tar.gz
*-workspace
*-workspace
mock_result/
23 changes: 23 additions & 0 deletions .yamllint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Yamllint configuration file, used by github actions and commit hooks.
#
# The yamllint tool will use .yamllint in preference to this file and it is in .gitignore so users
# can create one locally to overrule these settings for local commit hooks.

extends: default

rules:
line-length:
max: 100
indentation:
spaces: 2
truthy:
allowed-values: ['true', 'false', 'True', 'False']
check-keys: false
document-start:
present: false
document-end:
present: false

ignore: |
/_topdir/
/.git/
2 changes: 1 addition & 1 deletion packaging/get_base_branch
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

set -eux -o pipefail
IFS=' ' read -r -a add_bases <<< "${1:-}"
origin=origin
origin="${ORIGIN:-origin}"
mapfile -t all_bases < <(echo "master"
git branch -r | sed -ne "/^ $origin\\/release\\/[0-9]/s/^ $origin\\///p")
all_bases+=("${add_bases[@]}")
Expand Down