sathiya
sathiya

Reputation: 261

run delay job conditionally gitlab ci

run delay job conditionally gitlab ci pipeline

stage: timeout1

timeout1:
  dependencies:
    - prepare_tag
  rules:
    - if: $TIMER == "3 days"
      when: delayed
      start_in: 1 minute
    - if: $TIMER == "2 days"
      when: always
      start_in: 2 minutes
  script:
    - echo -e "$TIMER"
  stage: timeout1

Upvotes: 0

Views: 757

Answers (1)

sathiya
sathiya

Reputation: 261

I was able to achieve this using gitlab ci dynamic child pipeline

create_timeout_pipeline:
  stage: create_timeout_pipeline
  script:
  - echo -e "$flag"
  - CURRENT=$(date +%s)
  - FUTURE=$(date --date "$flag 1446 minutes ago" +%s)
  - ANS=$((FUTURE - CURRENT)) 
  - |
    cat > dynamic.yml << EOF
    timeout_job:
      script:
        - ls
      when: delayed
      start_in: ${ANS} seconds
    EOF
  artifacts:
    paths:
      - dynamic.yml

### stage: timeout_job #########################################################
timeout_job:
  stage: timeout_job
  trigger:
    include:
      - artifact: dynamic.yml
        job: create_timeout_pipeline
    strategy: depend

Upvotes: 1

Related Questions