All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.jenkins.results.parser.PullRequestSubrepositoryTopLevelBuild Maven / Gradle / Ivy

/**
 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

package com.liferay.jenkins.results.parser;

/**
 * @author Michael Hashimoto
 */
public class PullRequestSubrepositoryTopLevelBuild
	extends DefaultTopLevelBuild
	implements AnalyticsCloudBranchInformationBuild,
			   PluginsBranchInformationBuild, PortalBranchInformationBuild,
			   PullRequestBuild, WorkspaceBuild {

	public PullRequestSubrepositoryTopLevelBuild(
		String url, TopLevelBuild topLevelBuild) {

		super(url, topLevelBuild);
	}

	@Override
	public String getBranchName() {
		String branchName = getParameterValue("GITHUB_UPSTREAM_BRANCH_NAME");

		if (!JenkinsResultsParserUtil.isNullOrEmpty(branchName)) {
			return branchName;
		}

		return getBranchName();
	}

	@Override
	public BranchInformation getOSBAsahBranchInformation() {
		Workspace workspace = getWorkspace();

		return new WorkspaceBranchInformation(
			workspace.getWorkspaceGitRepository(
				"com-liferay-osb-asah-private"));
	}

	@Override
	public BranchInformation getPluginsBranchInformation() {
		Workspace workspace = getWorkspace();

		if (!(workspace instanceof SubrepositoryWorkspace)) {
			return null;
		}

		SubrepositoryWorkspace subrepositoryWorkspace =
			(SubrepositoryWorkspace)workspace;

		return new WorkspaceBranchInformation(
			subrepositoryWorkspace.getPluginsWorkspaceGitRepository());
	}

	@Override
	public BranchInformation getPortalBaseBranchInformation() {
		return null;
	}

	@Override
	public BranchInformation getPortalBranchInformation() {
		Workspace workspace = getWorkspace();

		if (!(workspace instanceof SubrepositoryWorkspace)) {
			return null;
		}

		SubrepositoryWorkspace subrepositoryWorkspace =
			(SubrepositoryWorkspace)workspace;

		return new WorkspaceBranchInformation(
			subrepositoryWorkspace.getPortalWorkspaceGitRepository());
	}

	public String getPortalUpstreamBranchName() {
		String portalUpstreamBranchName = getParameterValue(
			"PORTAL_UPSTREAM_BRANCH_NAME");

		if (!JenkinsResultsParserUtil.isNullOrEmpty(portalUpstreamBranchName)) {
			return portalUpstreamBranchName;
		}

		return getBranchName();
	}

	@Override
	public PullRequest getPullRequest() {
		if (_pullRequest != null) {
			return _pullRequest;
		}

		StringBuilder sb = new StringBuilder();

		sb.append("https://github.com/");
		sb.append(getParameterValue("GITHUB_RECEIVER_USERNAME"));
		sb.append("/");
		sb.append(getParameterValue("REPOSITORY_NAME"));
		sb.append("/pull/");
		sb.append(getParameterValue("GITHUB_PULL_REQUEST_NUMBER"));

		_pullRequest = PullRequestFactory.newPullRequest(sb.toString());

		return _pullRequest;
	}

	@Override
	public Workspace getWorkspace() {
		PullRequest pullRequest = getPullRequest();

		Workspace workspace = WorkspaceFactory.newWorkspace(
			pullRequest.getGitRepositoryName(),
			pullRequest.getUpstreamRemoteGitBranchName(), getJobName());

		if (workspace instanceof SubrepositoryWorkspace) {
			SubrepositoryWorkspace subrepositoryWorkspace =
				(SubrepositoryWorkspace)workspace;

			subrepositoryWorkspace.setBuildProfile(getBuildProfile());
			subrepositoryWorkspace.setPortalUpstreamBranchName(
				getPortalUpstreamBranchName());
		}

		WorkspaceGitRepository workspaceGitRepository =
			workspace.getPrimaryWorkspaceGitRepository();

		workspaceGitRepository.setGitHubURL(pullRequest.getHtmlURL());

		String senderBranchSHA = _getSenderBranchSHA();

		if (JenkinsResultsParserUtil.isSHA(senderBranchSHA)) {
			workspaceGitRepository.setSenderBranchSHA(senderBranchSHA);
		}

		String upstreamBranchSHA = _getUpstreamBranchSHA();

		if (JenkinsResultsParserUtil.isSHA(upstreamBranchSHA)) {
			workspaceGitRepository.setBaseBranchSHA(upstreamBranchSHA);
		}

		return workspace;
	}

	private String _getSenderBranchSHA() {
		String senderBranchSHA = getParameterValue("GITHUB_SENDER_BRANCH_SHA");

		if (JenkinsResultsParserUtil.isSHA(senderBranchSHA)) {
			return senderBranchSHA;
		}

		return null;
	}

	private String _getUpstreamBranchSHA() {
		String upstreamBranchSHA = getParameterValue(
			"GITHUB_UPSTREAM_BRANCH_SHA");

		if (JenkinsResultsParserUtil.isSHA(upstreamBranchSHA)) {
			return upstreamBranchSHA;
		}

		return null;
	}

	private PullRequest _pullRequest;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy