Comparison betwwen different tags not working where as it compares with default branch
Opened this issue · 4 comments
Hello,
When i run this workflow against develop/ (i.e merge PR to develop/)
, it compares default branch rather than tags
eg: Changes will be detected between default branch and feature branch
This shows incorrect behaviour. It compare between 2 tags
eg: Change detection refs/remotes/origin/release/1.10.0...refs/remotes/origin/release/1.10.1
It should be compared between the tags
and not with develop
Here is my workflow file. The issue is on step: - uses: dorny/paths-filter@v2.11.1
on:
workflow_call:
inputs:
profile:
description: "Environment to deploy, must be one of (dev|master|int|prod)"
required: true
type: string
region:
description: "Region to deploy, must be one of (emea|cn)"
required: true
type: string
git_tag:
description: "Git tag of the release to deploy"
required: true
type: string
jobs:
deploy:
runs-on: [self-hosted, linux, X64, build-node]
steps:
- uses: ./workflows/actions/com/github/actions/checkout/v3
with:
path: repo
ref: ${{ inputs.git_tag }}
fetch-depth: 0
- name: Get previous deployed version from release.yaml
id: getversion
working-directory: repo
run: |
if [ -z ${{ inputs.tenant }} ]; then
echo "git_previous_tag=$(cat environments/${{ inputs.profile }}/${{ inputs.region }}/release.yaml | yq e '.previousVer')"
echo "git_previous_tag=$git_previous_tag" >> $GITHUB_OUTPUT
else
echo "git_previous_tag=develop" >> $GITHUB_OUTPUT
fi
- uses: ./workflows/actions/com/github/dorny/paths-filter/4512585405083f25c027a35db413c2b3b9006d50
id: changes
with:
base: ${{ steps.getversion.outputs.git_previous_tag }}
working-directory: meid
filters: |
values: ['environments/${{ inputs.profile }}/${{ inputs.region }}/values.yaml']
tokenstore: ['environments/${{ inputs.profile }}/${{ inputs.region }}/token-values.yaml']
userstore: ['environments/${{ inputs.profile }}/${{ inputs.region }}/user-values.yaml']
clients: ['environments/${{ inputs.profile }}/${{ inputs.region }}/clients.yaml', 'clients/**']
@maazmmd did you manage to figure it out?
I figured it out.
If you define both ref
and base
it will compare them.
@maazmmd did you manage to figure it out?
Yes I was able to figure out but not using dorny/paths-filter
for comparison with tags
- name: Detect changes in feature branches
uses: ./workflows/actions/com/github/dorny/paths-filter/4512585405083f25c027a35db413c2b3b9006d50
id: changes
if: github.ref_type == 'branch'
with:
base: master
working-directory: repo
filters: |
docs: ['docs/**']
src: ['src/**']
- name: Detect tag changes for [DEPLOYMENTS]
id: tag-changes
if: github.ref_type == 'tag'
working-directory: repo
run: |
set -o xtrace
declare -A paths=(
[docs]='docs/**'
[src]='src/**')
# Get previous tag from a step (Not added here)
git_previous_tag=${{ steps.getversion.outputs.git_previous_tag }}
for key in "${!paths[@]}"; do
changed_files=$(git diff --name-only "${{ github.ref_name }}" "$git_previous_tag" -- ${paths[$key]})
if [ -z "$changed_files" ]; then
echo "$key=false" >> $GITHUB_OUTPUT
else
echo "$key=true" >> $GITHUB_OUTPUT
echo "Changes detected in $key: $changed_files"
fi
done
I figured it out. If you define both
ref
andbase
it will compare them.
Not working, also tried with working-directory