Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to execute a a remote script in a reusable github workflow

I have this workflow in a repo called terraform-do-database and I'm trying to use a reusable workflow coming from the public repo foo/git-workflows/.github/workflows/tag_validation.yaml@master

name: Tag Validation

on:
  pull_request:
    branches: [master]
  push:
    branches:    
      - '*'         # matches every branch that doesn't contain a '/'
      - '*/*'       # matches every branch containing a single '/'
      - '**'        # matches every branch
      - '!master'   # excludes master
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:

  tag_check:
    uses: foo/git-workflows/.github/workflows/tag_validation.yaml@master

And this is the reusable workflow file from the public git-workflows repo that has the script that should run on it. What is happening is that the workflow is trying to use a script inside the repo terraform-do-database

name: Tag Validation

on:
  pull_request:
    branches: [master]
  workflow_call:

jobs:

  tag_check:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v3

      # Runs a single command using the runners shell
      - name: Verify the tag value
        run: ./scripts/tag_verify.sh

So the question: How can I make the workflow use the script stored in the git-worflows repo instead of the terraform-do-database?

I want to have a single repo where I can call the workflow and the scripts, I don't want to have everything duplicated inside all my repos.

like image 686
Kaleby Cadorin Avatar asked Feb 06 '26 18:02

Kaleby Cadorin


1 Answers

One way to go about this is perform a checkout inside your reusable workflow that essentially clones the content of the repo where your scripts are and only then you can access it. It's not the cleanest solution but it works.

Perform a second checkout, to clone your repo that has the reusable workflow into a dir reusable-workflow-repo

- name: Checkout reusable workflow dir
  uses: actions/checkout@v3
  with:
    repository: <your-org>/terraform-do-database
    token: ${{ secrets.GIT_ACCESS_TOKEN }}
    path: reusable-workflow-repo

Now you have all the code you need inside reusable-workflow-repo. Use ${GITHUB_WORKSPACE} to find the current path and simply append the path to the script.

- name: Verify the tag value
  run: ${GITHUB_WORKSPACE}/reusable-workflow-repo/scripts/tag_verify.sh
like image 74
Daniel Avatar answered Feb 09 '26 11:02

Daniel



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!