0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-10 23:36:14 -05:00

Updated fetching latest base commit

- unfortunately GitHub makes this incredibly hard and this commit
  doesn't even provide a full solution, but it should allow us to fetch
  the latest commit for PRs and pushes to a branch, but not force pushes
This commit is contained in:
Daniel Lockyer 2023-07-10 10:39:50 +02:00 committed by Daniel Lockyer
parent fb0807c8c5
commit c158aa7397

View file

@ -13,7 +13,6 @@ on:
env: env:
FORCE_COLOR: 1 FORCE_COLOR: 1
HEAD_COMMIT: ${{ github.sha }} HEAD_COMMIT: ${{ github.sha }}
BASE_COMMIT: ${{ github.event.pull_request.base.sha || github.event.before }}
GITHUB_CONTEXT: ${{ toJson(github) }} GITHUB_CONTEXT: ${{ toJson(github) }}
CACHED_DEPENDENCY_PATHS: | CACHED_DEPENDENCY_PATHS: |
${{ github.workspace }}/node_modules ${{ github.workspace }}/node_modules
@ -43,10 +42,22 @@ jobs:
- name: Get metadata - name: Get metadata
id: get_metadata id: get_metadata
run: | run: |
COMMIT_SHA=$(git rev-parse --short ${{ github.event.pull_request.head.sha || github.event.head_commit.id || env.HEAD_COMMIT }}) # get base commit for pushes
echo "COMMIT_SHA=$COMMIT_SHA" >> $GITHUB_ENV if [ "${{ github.event_name }}" = "push" ]; then
echo "COMMIT_MESSAGE=$(git log -n 1 --pretty=format:%s $COMMIT_SHA)" >> $GITHUB_ENV if [ -n "${{ github.event.before }}" ]; then
echo "COMMON_COMMIT=$(git merge-base HEAD ${{ env.BASE_COMMIT }})" >> $GITHUB_ENV if [ "${{ github.event.forced }}" = 'true' ]; then
NUMBER_OF_COMMITS=$(printf "%s\n" < '${{ env.GITHUB_CONTEXT }}' | jq '.event.commits | length')
echo "BASE_COMMIT=$(git rev-parse HEAD~$NUMBER_OF_COMMITS)" >> $GITHUB_ENV
else
# only set the base commit if it wasn't a force push (we can't get the base commit in that case)
echo "BASE_COMMIT=${{ github.event.before }}" >> $GITHUB_ENV
fi
fi
else
# get base commit for PRs
BASE_COMMIT=$(curl --location --request GET 'https://api.github.com/repos/TryGhost/Ghost/pulls/${{ github.event.pull_request.number }}' --header 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' | jq .base.sha | tr -d '"')
echo "BASE_COMMIT=$BASE_COMMIT" >> $GITHUB_ENV
fi
- name: Determine changed packages - name: Determine changed packages
uses: AurorNZ/paths-filter@v3.0.1 uses: AurorNZ/paths-filter@v3.0.1
@ -94,7 +105,7 @@ jobs:
changed_signup_form: ${{ steps.changed.outputs.signup-form }} changed_signup_form: ${{ steps.changed.outputs.signup-form }}
changed_sodo_search: ${{ steps.changed.outputs.sodo-search }} changed_sodo_search: ${{ steps.changed.outputs.sodo-search }}
changed_any_code: ${{ steps.changed.outputs.any-code }} changed_any_code: ${{ steps.changed.outputs.any-code }}
commit_label: '${{ env.COMMIT_SHA }}: ${{ env.COMMIT_MESSAGE }}' base_commit: ${{ env.BASE_COMMIT }}
is_canary_branch: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/arch') }} is_canary_branch: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/arch') }}
is_git_sync: ${{ github.head_ref == 'main' || github.ref == 'refs/heads/main' }} is_git_sync: ${{ github.head_ref == 'main' || github.ref == 'refs/heads/main' }}
@ -104,7 +115,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 15 timeout-minutes: 15
steps: steps:
- name: 'Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})' - name: 'Checkout current commit'
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
ref: ${{ env.HEAD_COMMIT }} ref: ${{ env.HEAD_COMMIT }}
@ -160,7 +171,7 @@ jobs:
path: ghost/**/.eslintcache path: ghost/**/.eslintcache
key: eslint-cache key: eslint-cache
- run: yarn lint --since ${{ env.COMMON_COMMIT }} - run: yarn lint --since ${{ needs.job_get_metadata.outputs.BASE_COMMIT }}
- uses: tryghost/actions/actions/slack-build@main - uses: tryghost/actions/actions/slack-build@main
if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main' if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'
@ -233,7 +244,7 @@ jobs:
env: env:
DEPENDENCY_CACHE_KEY: ${{ needs.job_install_deps.outputs.dependency_cache_key }} DEPENDENCY_CACHE_KEY: ${{ needs.job_install_deps.outputs.dependency_cache_key }}
- run: yarn test:unit --include-dependents --since ${{ env.COMMON_COMMIT }} - run: yarn test:unit --include-dependents --since ${{ needs.job_get_metadata.outputs.BASE_COMMIT }}
- uses: actions/upload-artifact@v3 - uses: actions/upload-artifact@v3
if: startsWith(matrix.node, '18') if: startsWith(matrix.node, '18')
@ -703,6 +714,7 @@ jobs:
name: All required tests passed or skipped name: All required tests passed or skipped
needs: needs:
[ [
job_get_metadata,
job_install_deps, job_install_deps,
job_lint, job_lint,
job_ghost-cli, job_ghost-cli,