Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove git from prebuild and use PNC Konflux tooling #2328

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion deploy/pipeline/mw-pipeline-v0.1.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ spec:
type: string
- name: JVM_BUILD_SERVICE_REQPROCESSOR_IMAGE
type: string
default: "quay.io/redhat-user-workloads/konflux-jbs-pnc-tenant/konflux-tooling:latest"
- name: NOTIFICATION_CONTEXT
type: string
default: ""
Expand Down Expand Up @@ -108,7 +109,7 @@ spec:
resolver: http
params:
- name: url
value: https://raw.githubusercontent.com/rnc/jvm-build-service/refs/heads/BR3/deploy/tasks/pre-build.yaml
value: https://raw.githubusercontent.com/rnc/jvm-build-service/refs/heads/BR1/deploy/tasks/pre-build.yaml
workspaces:
- name: source
workspace: source
Expand Down
1 change: 0 additions & 1 deletion deploy/tasks/maven-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ spec:
- name: JVM_BUILD_SERVICE_REQPROCESSOR_IMAGE
description: Name of the processor image. Useful to override for development.
type: string
default: "quay.io/redhat-user-workloads/konflux-jbs-pnc-tenant/jvm-build-service/build-request-processor:latest"
- name: caTrustConfigMapKey
description: The name of the key in the ConfigMap that contains the
CA bundle data.
Expand Down
94 changes: 94 additions & 0 deletions deploy/tasks/pre-build-git.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: pre-build-git
annotations:
tekton.dev/pipelines.minVersion: 0.12.1
tekton.dev/tags: image-build, konflux
labels:
app.kubernetes.io/version: "0.1"
build.appstudio.redhat.com/build_type: docker
spec:
description: |-
Sets up pre-build for pushing the source.
params:
- name: PRE_BUILD_IMAGE_DIGEST
description: Digest to use
type: string
- name: NAME
description: Name of the pipeline run (i.e. unique dependency build name)
type: string
- name: GIT_IDENTITY
description: Git username. If empty, deploy-pre-build-source step will be skipped.
type: string
default: ""
- name: GIT_URL
description: String to determine whether we're using gitlab or github
type: string
default: "github"
- name: GIT_SSL_VERIFICATION
description: Whether to disable ssl verification
type: string
default: "false"
- name: GIT_REUSE_REPOSITORY
description: Whether to reuse existing git repository or create new one
type: string
default: "false"
- name: SCM_URL
description: Reference to the git repository
type: string
- name: SCM_HASH
description: Git hash
type: string
- name: JVM_BUILD_SERVICE_REQPROCESSOR_IMAGE
description: Name of the processor image. Useful to override for development.
type: string
results:
- name: GIT_ARCHIVE
description: Git archive information
volumes:
- name: workdir
emptyDir: {}
stepTemplate:
volumeMounts:
- mountPath: /var/workdir
name: workdir
steps:
- name: restore-trusted-artifact
image: quay.io/redhat-appstudio/build-trusted-artifacts:latest@sha256:52f1391e6f1c472fd10bb838f64fae2ed3320c636f536014978a5ddbdfc6b3af
script: |
echo "Restoring source to workspace"
use-archive $PRE_BUILD_IMAGE_DIGEST=/var/workdir/
env:
- name: PRE_BUILD_IMAGE_DIGEST
value: $(params.PRE_BUILD_IMAGE_DIGEST)
- name: create-pre-build-source
image: $(params.JVM_BUILD_SERVICE_REQPROCESSOR_IMAGE)
securityContext:
runAsUser: 0
computeResources:
limits:
cpu: 300m
memory: 512Mi
requests:
cpu: 10m
memory: 512Mi
env:
- name: GIT_DEPLOY_TOKEN
valueFrom:
secretKeyRef:
optional: true
name: jvm-build-git-repo-secrets
key: gitdeploytoken
args:
- deploy-pre-build-source
- --source-path=/var/workdir
- --task-run-name=$(context.taskRun.name)
- --scm-uri=$(params.SCM_URL)
- --scm-commit=$(params.SCM_HASH)
- --image-id=$(params.NAME)
- --git-identity=$(params.GIT_IDENTITY)
- --git-url=$(params.GIT_URL)
- --git-disable-ssl-verification=$(params.GIT_SSL_VERIFICATION)
- --git-reuse-repository=$(params.GIT_REUSE_REPOSITORY)
91 changes: 16 additions & 75 deletions deploy/tasks/pre-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,59 +11,27 @@ metadata:
build.appstudio.redhat.com/build_type: docker
spec:
description: |-
Sets up pre-build running the preprocessor, pushing the source and creating the OCI image.
Sets up pre-build running the preprocessor creating the OCI image.
params:
- name: IMAGE_URL
description: URL of the OCI image to use.
type: string
- name: NAME
description: Name of the pipeline run (i.e. unique dependency build name)
type: string
- name: GIT_IDENTITY
description: Git username. If empty, deploy-pre-build-source step will be skipped.
type: string
default: ""
- name: GIT_URL
description: String to determine whether we're using gitlab or github
type: string
default: "github"
- name: GIT_SSL_VERIFICATION
description: Whether to disable ssl verification
type: string
default: "false"
- name: GIT_REUSE_REPOSITORY
description: Whether to reuse existing git repository or create new one
type: string
default: "false"
- name: SCM_URL
description: Reference to the git repository
type: string
- name: SCM_HASH
description: Git hash
type: string
- name: RECIPE_IMAGE
description: The image from the build recipe to use
- name: BUILD_TOOL
description: The build tool to use (ant, gradle, maven, sbt).
- name: BUILD_TOOL_VERSION
description: The build tool version to use (e.g. 3.9.5)
- name: JAVA_VERSION
description: Java version to use (7, 8, 9, 11, 17, 21, 22, 23)
- name: BUILD_PLUGINS
description: Optional comma separated list of build plugins that should be disabled.
default: ""
- name: BUILD_SCRIPT
description: The build script to embed with the Containerfile
- name: JAVA_VERSION
description: Java version to use (7, 8, 9, 11, 17, 21, 22, 23)
- name: IMAGE_URL
description: URL of the OCI image to use.
type: string
- name: JVM_BUILD_SERVICE_REQPROCESSOR_IMAGE
description: Name of the processor image. Useful to override for development.
type: string
default: "quay.io/ncross/hacbs-jvm-build-request-processor:latest"
# default: "quay.io/redhat-user-workloads/konflux-jbs-pnc-tenant/jvm-build-service/build-request-processor:latest"
- name: RECIPE_IMAGE
description: The image from the build recipe to use
results:
- name: PRE_BUILD_IMAGE_DIGEST
description: Digest of the image just built
- name: GIT_ARCHIVE
description: Git archive information
workspaces:
- description: The git repo will be cloned onto the volume backing this Workspace.
name: source
Expand All @@ -80,47 +48,20 @@ spec:
requests:
cpu: 10m
memory: 512Mi
script: |
/opt/jboss/container/java/run/run-java.sh $(params.BUILD_TOOL)-prepare --java-version=$(params.JAVA_VERSION) --build-tool-version=$(params.BUILD_TOOL_VERSION) --recipe-image=$(params.RECIPE_IMAGE) --request-processor-image=$(params.JVM_BUILD_SERVICE_REQPROCESSOR_IMAGE) --disabled-plugins=$(params.BUILD_PLUGINS) $(workspaces.source.path)/source
args:
- prepare
- --build-tool-version=$(params.BUILD_TOOL_VERSION)
- --java-version=$(params.JAVA_VERSION)
- --recipe-image=$(params.RECIPE_IMAGE)
- --request-processor-image=$(params.JVM_BUILD_SERVICE_REQPROCESSOR_IMAGE)
- --type=$(params.BUILD_TOOL)
- $(workspaces.source.path)/source
env:
- name: BUILD_SCRIPT
value: $(params.BUILD_SCRIPT)
# TODO: Look at making this optional until we know whether we need to store source
- name: create-pre-build-source
image: $(params.JVM_BUILD_SERVICE_REQPROCESSOR_IMAGE)
securityContext:
runAsUser: 0
computeResources:
limits:
cpu: 300m
memory: 512Mi
requests:
cpu: 10m
memory: 512Mi
env:
- name: GIT_DEPLOY_TOKEN
valueFrom:
secretKeyRef:
optional: true
name: jvm-build-git-repo-secrets
key: gitdeploytoken
args:
- deploy-pre-build-source
- --source-path=$(workspaces.source.path)/source
- --task-run-name=$(context.taskRun.name)
- --scm-uri=$(params.SCM_URL)
- --scm-commit=$(params.SCM_HASH)
- --image-id=$(params.NAME)
- --git-identity=$(params.GIT_IDENTITY)
- --git-url=$(params.GIT_URL)
- --git-disable-ssl-verification=$(params.GIT_SSL_VERIFICATION)
- --git-reuse-repository=$(params.GIT_REUSE_REPOSITORY)
- name: create-pre-build-image
image: quay.io/redhat-appstudio/build-trusted-artifacts:latest@sha256:52f1391e6f1c472fd10bb838f64fae2ed3320c636f536014978a5ddbdfc6b3af
script: |
set -x
echo "IMAGE is $(params.IMAGE_URL)"
cat $HOME/.docker/config.json || true
echo "Creating pre-build-image archive"
create-archive --store $(params.IMAGE_URL) $(results.PRE_BUILD_IMAGE_DIGEST.path)=$(workspaces.source.path)/source
env:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
* We keep all the options the same between maven, gradle, sbt and ant for now to keep the pipeline setup simpler.
* Some of these may be ignored by different processors
*/
public abstract class AbstractPreprocessor implements Runnable {
@CommandLine.Command(name = "prepare")
public class AbstractPreprocessor implements Runnable {

/**
* Equivalent to <code>$(workspaces.source.path)/source</code>
Expand All @@ -29,16 +30,19 @@ public abstract class AbstractPreprocessor implements Runnable {
protected List<String> disabledPlugins;

@CommandLine.Option(names = "--recipe-image", required = true)
String recipeImage;
protected String recipeImage;

@CommandLine.Option(names = "--request-processor-image", required = true)
String buildRequestProcessorImage;
protected String buildRequestProcessorImage;

@CommandLine.Option(names = "--java-version", required = true)
String javaVersion;
protected String javaVersion;

@CommandLine.Option(names = "--build-tool-version", required = true)
String buildToolVersion;
protected String buildToolVersion;

@CommandLine.Option(names = "--type")
protected ToolType type;

protected enum ToolType {
ANT,
Expand All @@ -52,8 +56,6 @@ public String toString() {
}
}

protected ToolType type;

/**
* This section creates two files within a <code>.jbs</code> subdirectory. The Containerfile is used
* by Konflux to initiate a build and the <code>run-build.sh</code> contains generic setup
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ protected GitStatus pushRepository(Path path, String httpTransportUrl, String co
}
var branchName = tagName + "-jbs-branch";
var createBranch = jGit.branchList().call().stream().map(Ref::getName).noneMatch(("refs/heads/" + branchName)::equals);
Log.infof("Will create branch %s for tag %s and branch name %s", createBranch, tagName, branchName);
var ref = jGit.checkout().setStartPoint(tagName).setName(branchName).setCreateBranch(createBranch).call();
StoredConfig jConfig = jRepo.getConfig();
Log.infof("Updating current origin of %s to %s", jConfig.getString("remote", "origin", "url"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,6 @@ public void testNotify() throws IOException, URISyntaxException {
.uri(new URI(wireMockServer.baseUrl() + "/internal/completed"))
.build();

System.err.println("### wiremock uri: " + wireMockServer.baseUrl());
// {"method":"PUT","uri":"http://localhost:8081/internal/completed","headers":[{"name":"Content-Type","value":"application/json"}],"attachment":null}

NotifyCommand notifyCommand = new NotifyCommand();
notifyCommand.status = "Succeeded";
notifyCommand.buildId = "1234";
Expand Down
5 changes: 3 additions & 2 deletions pkg/apis/jvmbuildservice/v1alpha1/systemconfig_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ type SystemConfigList struct {

const (
KonfluxGitDefinition = "https://raw.githubusercontent.com/konflux-ci/build-definitions/refs/heads/main/task/git-clone/0.1/git-clone.yaml"
KonfluxPreBuildDefinitions = "https://raw.githubusercontent.com/redhat-appstudio/jvm-build-service/main/deploy/tasks/pre-build.yaml"
KonfluxPreBuildDefinitions = "https://raw.githubusercontent.com/rnc/jvm-build-service/BR1/deploy/tasks/pre-build.yaml"
KonfluxPreBuildGitDefinitions = "https://raw.githubusercontent.com/rnc/jvm-build-service/BR1/deploy/tasks/pre-build-git.yaml"
KonfluxBuildDefinitions = "https://raw.githubusercontent.com/redhat-appstudio/jvm-build-service/main/deploy/tasks/buildah-oci-ta.yaml"
KonfluxMavenDeployDefinitions = "https://raw.githubusercontent.com/redhat-appstudio/jvm-build-service/main/deploy/tasks/maven-deployment.yaml"
KonfluxMavenDeployDefinitions = "https://raw.githubusercontent.com/rnc/jvm-build-service/BR1/deploy/tasks/maven-deployment.yaml"
)
Loading
Loading