Skip to content

Commit

Permalink
CI: Add GitHub Actions verify
Browse files Browse the repository at this point in the history
Issue: RELENG-4563
Signed-off-by: Andrew Grimberg <[email protected]>
Change-Id: I5f37fa7d4cf278d48e4b6eae38f9f477781c36e3
  • Loading branch information
tykeal committed Apr 12, 2023
1 parent c93773e commit 1061d91
Showing 1 changed file with 155 additions and 0 deletions.
155 changes: 155 additions & 0 deletions .github/workflows/gerrit-verify.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
---
name: Gerrit Verify

# yamllint disable-line rule:truthy
on:
workflow_dispatch:
inputs:
GERRIT_BRANCH:
description: "Branch that change is against"
required: true
type: string
GERRIT_CHANGE_ID:
description: "The ID for the change"
required: true
type: string
GERRIT_CHANGE_NUMBER:
description: "The Gerrit number"
required: true
type: string
GERRIT_CHANGE_URL:
description: "URL to the change"
required: true
type: string
GERRIT_EVENT_TYPE:
description: "Type of Gerrit event"
required: true
type: string
GERRIT_PATCHSET_NUMBER:
description: "The patch number for the change"
required: true
type: string
GERRIT_PATCHSET_REVISION:
description: "The revision sha"
required: true
type: string
GERRIT_PROJECT:
description: "Project in Gerrit"
required: true
type: string
GERRIT_REFSPEC:
description: "Gerrit refspec of change"
required: true
type: string

concurrency:
group: ${{ github.event.inputs.GERRIT_CHANGE_ID || github.run_id }}
cancel-in-progress: true

jobs:
prepare:
runs-on: ubuntu-latest
outputs:
wheel-distribution: ${{ steps.wheel-distribution.outputs.path }}
steps:
- name: Clear votes
uses: lfit/[email protected]
with:
host: ${{ vars.LFIT_GERRIT_SERVER }}
username: ${{ vars.LFIT_GERRIT_SSH_USER }}
key: ${{ secrets.LFIT_GERRIT_SSH_PRIVKEY_NP }}
known_hosts: ${{ vars.LFIT_GERRIT_KNOWN_HOSTS }}
gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }}
gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }}
vote-type: clear
- name: Checkout change
uses: lfit/[email protected]
with:
gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
- name: Configure Python
uses: actions/setup-python@v4
with:
python-version: '3.7'
- name: Run static analysis and format checkers
run: pipx run pre-commit run --all-files --show-diff-on-failure
- name: Build package distribution files
run: >-
pipx run tox -e clean,build
- name: Record the path of wheel distribution
id: wheel-distribution
run: echo "path=$(ls dist/*.whl)" >> $GITHUB_OUTPUT
- name: Store the distribution files for use in other stages
# `tests` and `publish` will use the same pre-built distributions,
# so we make sure to release the exact same package that was tested
uses: actions/upload-artifact@v3
with:
name: python-distribution-files
path: dist/
retention-days: 1

test:
needs: prepare
runs-on: ubuntu-latest
strategy:
matrix:
python:
- "3.6"
- "3.7"
- "3.8"
steps:
- name: Checkout change
uses: lfit/[email protected]
with:
gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
delay: "0s"
- name: Configure Python
uses: actions/setup-python@v4
id: setup-python
with:
python-version: ${{ matrix.python }}
- name: Retrieve pre-built distribution files
uses: actions/download-artifact@v3
with: {name: python-distribution-files, path: dist/}
- name: Run tests
run: >-
TOX_SKIP_ENV='(docs*|license|pre-commit)'
pipx run --python '${{ steps.setup-python.outputs.python-path }}'
tox --installpkg '${{ needs.prepare.outputs.wheel-distribution }}'
-- -rFEx --durations 10 --color yes # pytest args
docs:
needs: prepare
runs-on: ubuntu-latest
steps:
- name: Checkout change
uses: lfit/[email protected]
with:
gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }}
delay: "0s"
fetch-depth: "0"
- name: Configure Python
uses: actions/setup-python@v4
id: setup-python
with:
python-version: "3.7"
- name: Run docs tests
run: >-
pipx run tox -e docs,docs-linkcheck,license
vote:
if: ${{ always() }}
needs: [prepare, test, docs]
runs-on: ubuntu-latest
steps:
- name: Get workflow conclusion
uses: technote-space/workflow-conclusion-action@v3
- name: Set vote
uses: lfit/[email protected]
with:
host: ${{ vars.LFIT_GERRIT_SERVER }}
username: ${{ vars.LFIT_GERRIT_SSH_USER }}
key: ${{ secrets.LFIT_GERRIT_SSH_PRIVKEY_NP }}
known_hosts: ${{ vars.LFIT_GERRIT_KNOWN_HOSTS }}
gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }}
gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }}
vote-type: ${{ env.WORKFLOW_CONCLUSION }}

0 comments on commit 1061d91

Please sign in to comment.