Skip to content

Remove some synchronization in Reference to avoid deadlock #43990

Remove some synchronization in Reference to avoid deadlock

Remove some synchronization in Reference to avoid deadlock #43990

Workflow file for this run

###############################################################################
# Copyright IBM Corp. and others 2021
#
# This program and the accompanying materials are made available under
# the terms of the Eclipse Public License 2.0 which accompanies this
# distribution and is available at https://www.eclipse.org/legal/epl-2.0/
# or the Apache License, Version 2.0 which accompanies this distribution and
# is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# This Source Code may also be made available under the following
# Secondary Licenses when the conditions for such availability set
# forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
# General Public License, version 2 with the GNU Classpath
# Exception [1] and GNU General Public License, version 2 with the
# OpenJDK Assembly Exception [2].
#
# [1] https://www.gnu.org/software/classpath/license.html
# [2] https://openjdk.org/legal/assembly-exception.html
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0 OR GPL-2.0-only WITH OpenJDK-assembly-exception-1.0
###############################################################################/
name: "PR Comment Build Action for openj9"
on:
issue_comment:
types: [created]
jobs:
parseComment:
runs-on: ubuntu-latest
if: startsWith(github.event.comment.body, 'run aqa') && github.event.issue.pull_request
outputs:
workflow_url: ${{ steps.workflow_run_info.outputs.url }}
workflow_id: ${{ steps.workflow_run_info.outputs.id }}
build_parameters: ${{ steps.argparse.outputs.build_parameters }}
failed: ${{ steps.failure_report.outputs.failed }} # For reportStatus to check if parseComment has already reported a failure (in parsing).
steps:
- name: Get workflow run info
run: |
echo ::set-output name=url::$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
echo ::set-output name=id::$GITHUB_RUN_ID
id: workflow_run_info
# Checkout current repo to access the repo-specific config file `.github/workflows/runAqaConfig.json`
- name: Checkout current repo
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
with:
path: 'main'
# Checkout the main TKG repo to access the shared script `scripts/testRepo/runAqaArgParse.py`
- name: Checkout main TKG repo
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
with:
repository: 'adoptium/TKG.git'
ref: 'master'
path: 'TKG'
- name: Parse parameters
env:
args: ${{ github.event.comment.body }}
run: python3 TKG/scripts/testBot/runAqaArgParse.py $args 2> log.txt
id: argparse
- name: Output log
if: failure()
# Store the contents of log.txt into an environment variable and escape characters to preserve newlines and other symbols.
run: |
log=$(cat log.txt)
log="${log//'%'/'%25'}"
log="${log//$'\n'/'%0A'}"
log="${log//$'\r'/'%0D'}"
log="${log/$'`'/'\`'}"
echo ::set-output name=log::$log
id: output_log
- name: Create error comment
if: failure()
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
comment_body = `
@${{ github.actor }}
\`\`\`
${{ steps.output_log.outputs.log }}
\`\`\`
No builds were started.
`;
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment_body
})
- name: Failure report
if: failure()
run: echo ::set-output name=failed::true
id: failure_report
- name: Create success comment
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
comment_body = `
@${{ github.actor }} Build(s) started with the following parameters:
- sdk_resource: ${{ steps.argparse.outputs.sdk_resource }}
- customized_sdk_url: ${{ steps.argparse.outputs.customized_sdk_url }}
- archive_extension: ${{ steps.argparse.outputs.archive_extension }}
- build_list: ${{ steps.argparse.outputs.build_list }}
- target: ${{ steps.argparse.outputs.target }}
- platform: ${{ steps.argparse.outputs.platform }}
- jdk_version: ${{ steps.argparse.outputs.jdk_version }}
- jdk_impl: ${{ steps.argparse.outputs.jdk_impl }}
- openjdk_testrepo: ${{ steps.argparse.outputs.openjdk_testrepo }}
- tkg_repo: ${{ steps.argparse.outputs.tkg_repo }}
Workflow Run ID: [${{ steps.workflow_run_info.outputs.id }}](${{ steps.workflow_run_info.outputs.url }})
`;
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment_body
})
- name: Echo parameters
run: |
echo ${{ steps.argparse.outputs.build_parameters }}
runBuild:
runs-on: ${{ matrix.platform }}
needs: parseComment
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.parseComment.outputs.build_parameters) }}
steps:
- uses: AdoptOpenJDK/install-jdk@2f15d3f82051aa50984186fc1184467d0d9f87d0 # v1.1.1
if: matrix.sdk_resource != 'customized'
with:
version: ${{ matrix.jdk_version }}
source: ${{ matrix.sdk_resource }}
sourceType: 'buildType'
impl: ${{ matrix.jdk_impl }}
- uses: AdoptOpenJDK/install-jdk@2f15d3f82051aa50984186fc1184467d0d9f87d0 # v1.1.1
if: matrix.sdk_resource == 'customized'
with:
version: ${{ matrix.jdk_version }}
source: ${{ matrix.customized_sdk_url }}
archiveExtension: ${{ matrix.archive_extension }}
sourceType: 'url'
impl: ${{ matrix.jdk_impl }}
# get-pr step by @Simran-B https://github.com/actions/checkout/issues/331#issuecomment-707103442
- uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
id: get-pr
with:
script: |
const request = {
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number
}
core.info(`Getting PR #${request.pull_number} from ${request.owner}/${request.repo}`)
try {
const result = await github.pulls.get(request)
return result.data
} catch (err) {
core.setFailed(`Request failed with error ${err}`)
}
- name: AQA
uses: adoptium/run-aqa@c6cda6b996deaf508e968d1063efc5e7f34680d8 # v2.0.1
with:
build_list: ${{ matrix.build_list }}
target: ${{ matrix.target }}
jdksource: 'install-jdk'
version: ${{ matrix.jdk_version }}
openj9_repo: '${{ fromJSON(steps.get-pr.outputs.result).head.repo.full_name }}:${{ fromJSON(steps.get-pr.outputs.result).head.ref }}'
openjdk_testRepo: ${{ matrix.openjdk_testrepo }}
tkg_Repo: ${{ matrix.tkg_repo }}
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
if: failure()
with:
name: test_output
path: ./**/output_*/
reportFailure:
runs-on: ubuntu-latest
needs: [parseComment, runBuild]
if: failure() && !needs.parseComment.outputs.failed
steps:
- name: Create comment
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
comment_body = `
@${{ github.actor }} Build(s) failed.
Workflow Run ID: [${{ needs.parseComment.outputs.workflow_id }}](${{ needs.parseComment.outputs.workflow_url }})
`;
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment_body
})
reportCancelled:
runs-on: ubuntu-latest
needs: [parseComment, runBuild]
if: cancelled()
steps:
- name: Create comment
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
comment_body = `
@${{ github.actor }} Build(s) cancelled.
Workflow Run ID: [${{ needs.parseComment.outputs.workflow_id }}](${{ needs.parseComment.outputs.workflow_url }})
`;
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment_body
})
reportSuccess:
runs-on: ubuntu-latest
needs: [parseComment, runBuild]
if: success()
steps:
- name: Create comment
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
comment_body = `
@${{ github.actor }} Build(s) successful.
Workflow Run ID: [${{ needs.parseComment.outputs.workflow_id }}](${{ needs.parseComment.outputs.workflow_url }})
`;
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment_body
})