Enabled developer to input PR number for lsp4ij checkout input #1807
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
workflow_call: | |
inputs: | |
refLsp4ij: | |
description: 'Reference/branch for Lsp4ij checkout' | |
type: string | |
required: true | |
default: main | |
lsp4ijBranch: | |
description: 'PR number or branch name for Artifact upload' | |
type: string | |
required: true | |
useLocalPlugin: | |
description: 'Use lsp4ij locally' | |
required: true | |
type: boolean | |
default: false | |
refLTITag: | |
description: 'Reference LTI Tag/Branch' | |
type: string | |
required: true | |
default: main | |
workflow_dispatch: | |
inputs: | |
useLocalPlugin: | |
description: 'Use lsp4ij locally' | |
required: true | |
type: boolean | |
default: false | |
lsp4ijPrNumber: | |
description: 'Run build with an LSP4IJ PR. Make sure to enter the LSP4IJ PR number in the "Reference/branch/PR for LSP4IJ checkout" input box.' | |
required: true | |
type: boolean | |
default: false | |
refLsp4ij: | |
description: 'Reference/branch/PR for LSP4IJ checkout' | |
type: string | |
required: true | |
default: main | |
refLTITag: | |
description: 'Reference LTI Tag/Branch' | |
type: string | |
required: false | |
default: main | |
push: | |
branches: '**' | |
pull_request: | |
branches: [ main ] | |
jobs: | |
fetch_merge_commit_sha_from_lsp4ij_PR: | |
runs-on: ubuntu-latest | |
outputs: | |
pr_details: ${{ steps.extract.outputs.pr_details }} | |
checkout_name: ${{ steps.extract.outputs.checkout_name }} | |
env: | |
API_URL: https://api.github.com/repos/redhat-developer/lsp4ij/pulls | |
REF_LSP4IJ: ${{ inputs.refLsp4ij }} | |
LSP4IJ_BRANCH: ${{ inputs.lsp4ijBranch }} | |
name: Fetch Commit ${{ inputs.refLsp4ij || '' }} | |
steps: | |
- name: Extract Merge Commit SHA | |
shell: bash | |
id: extract | |
run: | | |
pr_details="${{ env.REF_LSP4IJ }}" | |
checkout_name="${{ env.LSP4IJ_BRANCH }}" | |
if [ "${{ inputs.lsp4ijPrNumber }}" == "true" ]; then | |
url="${{ env.API_URL }}/${{ env.REF_LSP4IJ }}" | |
pr_detail=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "$url") | |
pr_details=$(jq -r '.merge_commit_sha' <<< "$pr_detail" | xargs) | |
echo "Merge commit SHA of PR ${{ env.REF_LSP4IJ }}: $pr_details" | |
checkout_name="${{ env.REF_LSP4IJ }}" | |
if [[ "$pr_details" == "null" ]]; then | |
echo "::warning file=::The merge commit SHA of the entered PR is 'null'. Please try again later or use a different PR number." | |
fi | |
elif [ -z "$pr_details" ]; then | |
echo "No LSP4IJ checkout found. Using default case." | |
elif [ -z "$checkout_name" ]; then | |
echo "Merge Commit SHA/Branch Name/Tag : $pr_details" | |
checkout_name="${{ env.REF_LSP4IJ }}" | |
else | |
echo "Merge Commit SHA/Branch Name/Tag : $pr_details" | |
fi | |
# Set output for further steps | |
echo "pr_details=$pr_details" >> $GITHUB_OUTPUT | |
echo "checkout_name=$checkout_name" >> $GITHUB_OUTPUT | |
build: | |
needs: fetch_merge_commit_sha_from_lsp4ij_PR | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
runtime: [ linux, mac, windows ] | |
include: | |
- runtime: linux | |
os: ubuntu-latest | |
reportName: linux-test-report | |
- runtime: mac | |
os: macOS-latest | |
reportName: mac-test-report | |
- runtime: windows | |
os: windows-latest | |
reportName: windows-test-report | |
env: | |
USE_LOCAL_PLUGIN: ${{ inputs.useLocalPlugin || false }} | |
REF_LSP4IJ: ${{ needs.fetch_merge_commit_sha_from_lsp4ij_PR.outputs.pr_details }} | |
LSP4IJ_BRANCH: ${{ needs.fetch_merge_commit_sha_from_lsp4ij_PR.outputs.checkout_name }} | |
REF_LTI_TAG: ${{ inputs.refLTITag }} | |
steps: | |
- name: Configure pagefile | |
if: contains(matrix.os, 'windows') | |
uses: al-cheb/[email protected] | |
with: | |
minimum-size: 8GB | |
maximum-size: 10GB | |
disk-root: "C:" | |
- name: 'Checkout liberty-tools-intellij' | |
uses: actions/checkout@v4 | |
with: | |
path: liberty-tools-intellij | |
ref: ${{ env.REF_LTI_TAG }} | |
- name: 'Install required integration test software' | |
working-directory: ./liberty-tools-intellij | |
run: bash ./src/test/resources/ci/scripts/setup.sh | |
# Checkout and build lsp4ij only if USE_LOCAL_PLUGIN is true | |
- name: 'Checkout lsp4ij' | |
if: ${{ inputs.useLocalPlugin == true }} | |
uses: actions/checkout@v4 | |
with: | |
repository: redhat-developer/lsp4ij | |
path: lsp4ij | |
ref: ${{ env.REF_LSP4IJ }} | |
- name: 'Build Lsp4ij' | |
if: ${{ inputs.useLocalPlugin == true }} | |
working-directory: ./lsp4ij | |
run: bash ./gradlew buildPlugin | |
- name: 'Unzip lsp4ij file' | |
if: ${{ inputs.useLocalPlugin == true }} | |
working-directory: ./lsp4ij/build/distributions | |
run: | | |
unzip -o '*.zip' -d . | |
- name: 'Build Liberty-Tools-Intellij' | |
working-directory: ./liberty-tools-intellij | |
run: bash ./gradlew buildPlugin -PuseLocal=${{ env.USE_LOCAL_PLUGIN }} | |
- name: 'Archive artifacts' | |
if: ${{ runner.os == 'Linux' && !failure() }} | |
uses: actions/[email protected] | |
with: | |
name: liberty-tools-intellij-LTI-${{ env.REF_LTI_TAG || 'default' }}-LSP4IJ-${{ env.LSP4IJ_BRANCH || 'default' }} | |
path: | | |
./**/*liberty-tools-intellij*.zip | |
./**/libs/*liberty-tools-intellij*.jar | |
if-no-files-found: warn | |
retention-days: 7 | |
- name: 'Run UI integration tests' | |
id: run_tests | |
working-directory: ./liberty-tools-intellij | |
run: bash ./src/test/resources/ci/scripts/run.sh | |
- name: 'Archive Test logs and reports' | |
if: ${{ failure() && steps.run_tests.conclusion == 'failure' }} | |
uses: actions/[email protected] | |
with: | |
name: ${{ matrix.reportName }}-LTI-${{ env.REF_LTI_TAG || 'default' }}-LSP4IJ-${{ env.LSP4IJ_BRANCH || 'default' }} | |
path: | | |
liberty-tools-intellij/build/reports/ |