--- 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 steps: - name: Clear votes uses: lfit/gerrit-review-action@v0.3 with: host: ${{ vars.GERRIT_SERVER }} username: ${{ vars.GERRIT_SSH_USER }} key: ${{ secrets.GERRIT_SSH_PRIVKEY }} known_hosts: ${{ vars.GERRIT_KNOWN_HOSTS }} gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }} gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }} vote-type: clear - name: Allow replication run: sleep 10s actionlint: needs: prepare runs-on: ubuntu-latest steps: - uses: lfit/checkout-gerrit-change-action@v0.3 with: gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }} delay: "0s" - name: Download actionlint id: get_actionlint run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) shell: bash - name: Check workflow files run: ${{ steps.get_actionlint.outputs.executable }} -color shell: bash # run pre-commit tox env separately to get use of more parallel processing pre-commit: needs: prepare runs-on: ubuntu-latest steps: - uses: lfit/checkout-gerrit-change-action@v0.3 with: gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }} delay: "0s" - uses: actions/setup-python@v4 with: python-version: "3.11" - name: Run static analysis and format checkers run: pipx run pre-commit run --all-files --show-diff-on-failure jjb-validation: needs: prepare runs-on: ubuntu-latest steps: - uses: lfit/checkout-gerrit-change-action@v0.3 with: gerrit-refspec: ${{ inputs.GERRIT_REFSPEC }} delay: "0s" - uses: actions/setup-python@v4 id: setup-python with: python-version: "3.11" - name: Clone git submodules run: git submodule update --init - name: Run JJB Verify run: | python -m pip install --upgrade pip pip install jenkins-job-builder mkdir -p "${HOME}/.config/jenkins_jobs" cat << EOF > "${HOME}/.config/jenkins_jobs/jenkins_jobs.ini" [job_builder] ignore_cache=True keep_descriptions=False include_path=. recursive=True query_plugins_info=False config-xml=True EOF jenkins-jobs test -o archives/job-configs jjb/ vote: if: ${{ always() }} needs: [prepare, actionlint, pre-commit, jjb-validation] runs-on: ubuntu-latest steps: - uses: technote-space/workflow-conclusion-action@v3 - name: Set vote uses: lfit/gerrit-review-action@v0.3 with: host: ${{ vars.GERRIT_SERVER }} username: ${{ vars.GERRIT_SSH_USER }} key: ${{ secrets.GERRIT_SSH_PRIVKEY }} known_hosts: ${{ vars.GERRIT_KNOWN_HOSTS }} gerrit-change-number: ${{ inputs.GERRIT_CHANGE_NUMBER }} gerrit-patchset-number: ${{ inputs.GERRIT_PATCHSET_NUMBER }} vote-type: ${{ env.WORKFLOW_CONCLUSION }}