Skip to content

A GitHub Workflow Action which restores timestamps of files in the current tree

License

Notifications You must be signed in to change notification settings

step-security/git-restore-mtime-action

Repository files navigation

git-restore-mtime action

A GitHub Workflow Action which restores timestamps of files in the current tree based on their last commit times. Uses the git-restore-mtime script.

Usage

The sample workflow below illustrates a static site build and deploy using the S3 Sync Action. The aws s3 sync command relies on having the correct timestamps for the files to be uploaded, thus, we must reset them before running that action.

NOTE: git-restore-mtime uses the ref log to find the correct timestamp for each file. This requires a full git history. See checkout dist task in the example below.

name: Build and Deploy
on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v4

    # Note: This is *only* for the very next step, it is not required by
    # git-restore-mtime-action.
    - name: setup node
      uses: actions/setup-node@v4
      with:
        node-version: 'latest'

    # Run the build script which populates the ./dist folder
    - name: build
      run: |
        yarn
        yarn run build

    # Merge ./dist into the 'gh-pages' branch (dist in this case)
    - name: update dist branch
      uses: peaceiris/[email protected]
      env:
        PERSONAL_TOKEN: ${{ secrets.ACCESS_TOKEN }}
        PUBLISH_BRANCH: dist
        PUBLISH_DIR: ./dist

    # Check out the new branch
    - name: checkout dist
      uses: actions/checkout@v4
      with:
        ref: dist
        # git-restore-mtime-bare uses the ref log to find the correct timestamp
        # for each file. This requires a full git history. The default value (1)
        # creates a shallow checkout.
        fetch-depth: 0

      # Fix timestamps
      - name: restore timestamps
        uses: step-security/git-restore-mtime-action@v2

    # Upload to S3
    - name: sync s3
      uses: jakejarvis/s3-sync-action@2fb81a9e9fea11e078587911c27754e42e6a6e88
      with:
        args: --exclude '.git*/*' --delete --follow-symlinks
      env:
        SOURCE_DIR: './'
        AWS_REGION: 'us-east-1'
        AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

Configuration

- name: restore timestamps
  uses: step-security/git-restore-mtime-action@v2
  with:
    # Directory to change to before running the action. (Optional)
    # Default: '.'
    working-directory: '.'

About

A GitHub Workflow Action which restores timestamps of files in the current tree

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages