Process changed files #14
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Forked from eKatchko/public-bioinformatics-databases | |
name: Process changed files | |
# Controls when the workflow will run | |
on: | |
pull_request: | |
types: [opened, edited, reopened] | |
branches: | |
- 'main' | |
paths: | |
- 'databases/**.json' | |
workflow_dispatch: | |
inputs: | |
base: | |
type: string | |
default: main | |
required: true | |
head: | |
type: string | |
required: true | |
jobs: | |
# This workflow contains a single job called "changed-files" | |
changed-files: | |
# The type of runner that the job will run on | |
runs-on: [self-hosted, fts3-client-production ] | |
environment: APPROVAL_REQUIRED | |
outputs: | |
changed_files: ${{ steps.create-matrix.outputs.matrix }} | |
# 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@v4 | |
with: | |
fetch-depth: 0 | |
- name: Base SHA | |
id: base-sha | |
run: echo "sha=$(git rev-parse origin/${{ github.base_ref || github.event.inputs.base }})" >> $GITHUB_OUTPUT | |
- name: Run changed-files with the commit of the last successful test workflow run | |
id: changed-files-base-sha-push | |
uses: tj-actions/changed-files@v39 | |
with: | |
base_sha: "${{ steps.base-sha.outputs.sha }}" | |
files: | | |
databases/*.json | |
files_ignore: databases/database_schema.json | |
- name: Create matrix from changed files | |
id: create-matrix | |
run: | | |
if [[ -n "${{ steps.changed-files.outputs.all_files }}" ]]; then | |
echo "matrix=$(echo "${{ steps.changed-files.outputs.all_files }}" | tr '\n' ',')" >> $GITHUB_OUTPUT | |
else | |
echo "matrix=" >> $GITHUB_OUTPUT | |
fi | |
shell: bash | |
- name: Get changed files with git diff and send to fts3-connector | |
id: git-diff | |
run: | | |
declare -a CHANGED=($(git diff --name-only -r origin/${{ github.base_ref || github.event.inputs.base }} origin/${{ github.head_ref || github.event.inputs.head }} | grep databases/**)) | |
for file in "${CHANGED[@]}"; do | |
echo "Calling with $file" | |
curl -H "X-AUTH-HEADER: ${{ secrets.FTS3_CLIENT_API_KEY }}" -H "Content-Type: application/json" -X POST -d @$file "${{ vars.FTS3_CLIENT_ENDPOINT }}/transfer/dry" | |
done | |
validate_changed_jsons: | |
needs: changed-files | |
strategy: | |
fail-fast: false | |
matrix: | |
FILENAME: ${{ needs.changed-files.outputs.changed_files}} | |
uses: ./.github/workflows/validate_database_json.yml | |
with: | |
FILENAME: ${{ matrix.FILENAME }} | |
secrets: inherit |