argo-workflows icon indicating copy to clipboard operation
argo-workflows copied to clipboard

Git artifacts detached from revision

Open wsams opened this issue 3 years ago • 7 comments

Pre-requisites

  • [X] I have double-checked my configuration
  • [X] I can confirm the issues exists when I tested with :latest
  • [ ] I'd like to contribute the fix myself (see contributing guide) (I would fix myself but I am not allowed at my organization. I may only report during business hours.)

What happened/what you expected to happen?

When using a standard git input artifact in Argo Workflows v3.4.3 or latest to clone a repository, the resulting source directory will not be on the branch that was cloned.

If you were to exec into the container that ran a git clone and run git branch you will see (based on the workflow I provided),

* (no branch)
  main
  feature/2022q4

We recently upgraded from v3.2.7 where the clone would have been on the branch feature/2022q4 based on the sample workflow I've provided.

Version

v3.4.3

Paste a small workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: test-git-clone-
spec:
  entrypoint: git-clone
  templates:
    - name: git-clone
      inputs:
        artifacts:
          - name: repo-source
            path: /clone
            git:
              # Any repo and revision can be used here
              repo: https://github.com/wsams/latex
              revision: "release/2022q4"
      script:
        image: golang:1.19.2
        command: ["sh"]
        workingDir: /clone
        source: |
          git status
          git branch

Logs from the workflow controller

I ran,

kubectl logs -n argo-ns deploy/workflow-controller | grep ${workflow}

but as far as I can tell nothing related to this git clone was logged.

msg="Get leases 200"
msg="Update leases 200"
msg="Alloc=4653 TotalAlloc=336634 Sys=20305 NumGC=818 Goroutines=14"
msg="Get leases 200"
msg="Processing workflow" namespace=argo-ns workflow=test-git-clone-dm2lr
msg="Get configmaps 404"
ng msg="Non-transient error: configmaps \"artifact-repositories\" not found"
msg="resolved artifact repository" artifactRepositoryRef=default-artifact-repository
msg="Updated phase  -> Running" namespace=argo-ns workflow=test-git-clone-dm2lr
msg="Pod node test-git-clone-dm2lr initialized Pending" namespace=argo-ns workflow=test-git-clone-dm2lr
msg="Create events 201"
msg="Create pods 201"
msg="Created pod: test-git-clone-dm2lr (test-git-clone-dm2lr)" namespace=argo-ns workflow=test-git-clone-dm2lr
msg="TaskSet Reconciliation" namespace=argo-ns workflow=test-git-clone-dm2lr
msg=reconcileAgentPod namespace=argo-ns workflow=test-git-clone-dm2lr
msg="Workflow to be dehydrated" Workflow Size=1607
msg="Update workflows 200"
msg="Workflow update successful" namespace=argo-ns phase=Running resourceVersion=258834004 workflow=test-git-clone-dm2lr
msg="Get leases 200"
msg="Update leases 200"
msg="Get leases 200"
msg="Get leases 200"
msg="Update leases 200"
msg="Get leases 200"
msg="Processing workflow" namespace=argo-ns workflow=test-git-clone-dm2lr
msg="Task-result reconciliation" namespace=argo-ns numObjs=0 workflow=test-git-clone-dm2lr
ng msg="workflow uses legacy/insecure pod patch, see https://argoproj.github.io/argo-workflows/workflow-rbac/" namespace=argo-ns workflow=test-git-clone-dm2lr
msg="node changed" namespace=argo-ns new.message= new.phase=Succeeded new.progress=0/1 nodeID=test-git-clone-dm2lr old.message= old.phase=Pending old.progress=0/1 workflow=test-git-clone-dm2lr
msg="TaskSet Reconciliation" namespace=argo-ns workflow=test-git-clone-dm2lr
msg=reconcileAgentPod namespace=argo-ns workflow=test-git-clone-dm2lr
msg="Updated phase Running -> Succeeded" namespace=argo-ns workflow=test-git-clone-dm2lr
msg="Marking workflow completed" namespace=argo-ns workflow=test-git-clone-dm2lr
msg="Checking daemoned children of " namespace=argo-ns workflow=test-git-clone-dm2lr
msg="Workflow to be dehydrated" Workflow Size=2195
msg="cleaning up pod" action=deletePod key=argo-ns/test-git-clone-dm2lr-1340600742-agent/deletePod
msg="Create events 201"
msg="Delete pods 404"
msg="Update workflows 200"
msg="Workflow update successful" namespace=argo-ns phase=Succeeded resourceVersion=258834066 workflow=test-git-clone-dm2lr
msg="DeleteCollection workflowtaskresults 200"
msg="Create events 201"
msg="cleaning up pod" action=labelPodCompleted key=argo-ns/test-git-clone-dm2lr/labelPodCompleted

Logs from in your workflow's wait container

I ran the following because this workflow completes successfully. There are no errors in any of these steps.

kubectl logs -n argo-ns -c wait -l workflows.argoproj.io/workflow=${workflow},workflow.argoproj.io/phase!=Completed
time="2022-11-11T19:38:40.099Z" level=info msg="Starting Workflow Executor" version=v3.4.3
time="2022-11-11T19:38:40.102Z" level=info msg="Using executor retry strategy" Duration=1s Factor=1.6 Jitter=0.5 Steps=5
time="2022-11-11T19:38:40.102Z" level=info msg="Starting deadline monitor"
time="2022-11-11T19:38:43.102Z" level=info msg="Main container completed" error="<nil>"
time="2022-11-11T19:38:43.102Z" level=info msg="No Script output reference in workflow. Capturing script output ignored"
time="2022-11-11T19:38:43.102Z" level=info msg="No output parameters"
time="2022-11-11T19:38:43.102Z" level=info msg="No output artifacts"
time="2022-11-11T19:38:43.102Z" level=info msg="S3 Save path: /tmp/argo/outputs/logs/main.log, key: archive-logs/argo-ns/2022/11/11/test-git-clone-dm2lr/test-git-clone-dm2lr/main.log"
time="2022-11-11T19:38:43.102Z" level=info msg="Creating minio client using static credentials" endpoint=s3.endpoint
time="2022-11-11T19:38:43.110Z" level=info msg="Saving file to s3" bucket=argo-snd endpoint=s3.endpoint key=archive-logs/argo-ns/2022/11/11/test-git-clone-dm2lr/test-git-clone-dm2lr/main.log path=/tmp/argo/outputs/logs/main.log
time="2022-11-11T19:38:44.364Z" level=info msg="Save artifact" artifactName=main-logs duration=1.261411633s error="<nil>" key=archive-logs/argo-ns/2022/11/11/test-git-clone-dm2lr/test-git-clone-dm2lr/main.log
time="2022-11-11T19:38:44.364Z" level=info msg="not deleting local artifact" localArtPath=/tmp/argo/outputs/logs/main.log
time="2022-11-11T19:38:44.364Z" level=info msg="Successfully saved file: /tmp/argo/outputs/logs/main.log"
time="2022-11-11T19:38:44.371Z" level=info msg="Create workflowtaskresults 403"
time="2022-11-11T19:38:44.371Z" level=warning msg="failed to patch task set, falling back to legacy/insecure pod patch, see https://argoproj.github.io/argo-workflows/workflow-rbac/" error="workflowtaskresults.argoproj.io is forbidden: User \"system:serviceaccount:argo-ns:default\" cannot create resource \"workflowtaskresults\" in API group \"argoproj.io\" in the namespace \"argo-ns\""
time="2022-11-11T19:38:44.381Z" level=info msg="Patch pods 200"
time="2022-11-11T19:38:44.385Z" level=info msg="Alloc=8351 TotalAlloc=16773 Sys=22994 NumGC=5 Goroutines=10"

wsams avatar Nov 11 '22 19:11 wsams

We changed the Git library in v3.4. That is probably the cause, but a revert isn’t going to happen anytime soon.

I think there might be a workaround. Have you tried branch: instead?

alexec avatar Nov 16 '22 15:11 alexec

Also, please make sure you don’t have both a label and branch with the same name. Git does allow that.

alexec avatar Nov 16 '22 15:11 alexec

Hi @alexec , thanks for the update. I'll give branch a try. It looks like we have to switch to singleBranch mode, but I think that will be okay - we're only interested in one of the branches. I do have a workaround in place, but if branch works that would be cleaner. Here's what I have at the moment. I added a revision input parameter that will set the revision on the git artifact. And then in the script body I checked it out. These workarounds should be fine for now.

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: test-git-clone-
spec:
  entrypoint: git-clone
  templates:
    - name: git-clone
      inputs:
        parameters:
          - name: revision
            value: "release/2022q4"
        artifacts:
          - name: repo-source
            path: /clone
            git:
              repo: https://github.com/wsams/latex
              revision: "{{inputs.parameters.revision}}"
      script:
        image: golang:1.19.2
        command: ["sh"]
        workingDir: /clone
        source: |
          git checkout {{inputs.parameters.revision}}

wsams avatar Nov 16 '22 17:11 wsams

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If this is a mentoring request, please provide an update here. Thank you for your contributions.

stale[bot] avatar Jan 21 '23 20:01 stale[bot]

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If this is a mentoring request, please provide an update here. Thank you for your contributions.

stale[bot] avatar Mar 25 '23 06:03 stale[bot]

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If this is a mentoring request, please provide an update here. Thank you for your contributions.

stale[bot] avatar Jun 18 '23 04:06 stale[bot]

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

stale[bot] avatar Sep 17 '23 03:09 stale[bot]

@wsams should this be closed?

tooptoop4 avatar Nov 14 '24 20:11 tooptoop4