name: S3 backup on: workflow_dispatch: schedule: - cron: "0 6 * * *" jobs: s3-backup: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 # retrieve all history - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2 with: aws-access-key-id: ${{ secrets.AWS_S3_BACKUP_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_S3_BACKUP_SECRET_ACCESS_KEY }} aws-region: ca-central-1 - name: Create ZIP bundle run: | ZIP_FILE=`basename ${{ github.repository }}`-`date '+%Y-%m-%d'`.zip zip -rq "${ZIP_FILE}" . mkdir -p ${{ github.repository }} mv "${ZIP_FILE}" ${{ github.repository }} - name: Upload to S3 bucket run: | aws s3 sync . s3://${{ secrets.AWS_S3_BACKUP_BUCKET }} --exclude='*' --include='${{ github.repository }}/*' - name: Notify Slack channel if this job failed if: ${{ failure() }} run: | json='{"text":"S3 backup failed in !"}' curl -X POST -H 'Content-type: application/json' --data "$json" ${{ secrets.SLACK_NOTIFY_WEBHOOK }}