on: push: branches: - main paths-ignore: - '**/*.md' concurrency: group: deploy cancel-in-progress: true jobs: deploy: runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - name: Create Deployment uses: bobheadxi/deployments@v1 id: deployment with: step: start token: ${{ github.token }} env: aws - uses: actions/checkout@v3 ## means s3 sync will only sync things we need sync’d - uses: chetan/git-restore-mtime-action@v1 - uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 # cache-control of 10 mins because we *need* to be able to update # this and have people see the results can be fixed well with a static site builder - run: | aws s3 sync public s3://www.tea.xyz \ --metadata-directive REPLACE \ --cache-control max-age=600 \ --exclude '.git/*' --exclude '.github/*' \ --exclude 'pour.sh' \ --exclude 'tea.white-paper.pdf' \ --exclude '*.md' \ --delete #TODO create a github-action that can be used to parse the # output from `s3 sync` into invalidation commands. NOTE # I have already looked for something to do this and failed. - run: | aws cloudfront create-invalidation \ --distribution-id ${{ secrets.AWS_CF_DISTRIBUTION_ID }} \ --paths '/*' - name: Seal Deployment uses: bobheadxi/deployments@v1 if: always() with: step: finish token: ${{ github.token }} status: ${{ job.status }} deployment_id: ${{ steps.deployment.outputs.deployment_id }} env: ${{ steps.deployment.outputs.env }}