0

below workflow has 4 jobs.

I want job conditional-job to execute no matter whether the jobs it depends on are skipped i.e. skip-job and build.

Please let me know if and how is it possible.

name: My GitHub Actions Workflow

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: This job runs only on pull requests
        run: echo "JOB name build"    

  deploy:
    if: ${{ false }}  
    runs-on: ubuntu-latest
    steps:
      - name: This job runs only on pull requests
        run: echo "JOB name deploy"    
      # Your deployment steps go here...

  skip-job:
    if: ${{ false }} # This job will never run
    runs-on: ubuntu-latest
    steps:
      - name: This job is skipped
        run: echo "This job won't run because the if condition is set to false"

  conditional-job:
    needs:
      - skip-job  # This sets the 'skip-job' job as a dependency
      - deploy   # This sets the 'deploy' job as a dependency
    if: ${{ true }}
    runs-on: ubuntu-latest
    steps:
      - name: This job runs only on pull requests
        run: echo "JOB name conditional-job"

Kindly let me know.

Ashar
  • 2,942
  • 10
  • 58
  • 122

1 Answers1

0

Please use expression needs.skip-job.result == 'skipped' || needs. deploy.result == 'skipped'

If you are not sure about result value you can print it before adding condition

  conditional-job:
    needs:
      - skip-job  # This sets the 'skip-job' job as a dependency
      - deploy   # This sets the 'deploy' job as a dependency
    if: ${{ true }}
    runs-on: ubuntu-latest
    steps:
      - name: This job runs only on pull requests
        run: echo "JOB name conditional-job"
      - name: check result
        run: |
         echo 'needs.skip-job.result'
         echo 'needs.deploy.result'

Krzysztof Madej
  • 32,704
  • 10
  • 78
  • 107