diff --git a/.github/workflows/rpm-build-and-test.yml b/.github/workflows/rpm-build-and-test.yml new file mode 100644 index 00000000..61acc49c --- /dev/null +++ b/.github/workflows/rpm-build-and-test.yml @@ -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' }} diff --git a/.gitignore b/.gitignore index 6daaa65c..9674066f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ _topdir/ *.tar.gz -*-workspace \ No newline at end of file +*-workspace +mock_result/ diff --git a/.yamllint.yaml b/.yamllint.yaml new file mode 100644 index 00000000..cd8fe31a --- /dev/null +++ b/.yamllint.yaml @@ -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/ diff --git a/packaging/get_base_branch b/packaging/get_base_branch index 27515a71..75eb90ba 100755 --- a/packaging/get_base_branch +++ b/packaging/get_base_branch @@ -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[@]}")