fix: add test in s3 upload actions #24
This file contains hidden or 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
| name: Deploy | |
| on: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write # To push a branch | |
| pull-requests: write # To create a PR from that branch | |
| steps: | |
| - uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install latest mdbook | |
| run: | | |
| tag=$(curl 'https://api.github.com/repos/rust-lang/mdbook/releases/latest' | jq -r '.tag_name') | |
| url="https://github.com/rust-lang/mdbook/releases/download/${tag}/mdbook-${tag}-x86_64-unknown-linux-gnu.tar.gz" | |
| mkdir mdbook | |
| curl -sSL $url | tar -xz --directory=./mdbook | |
| echo `pwd`/mdbook >> $GITHUB_PATH | |
| - name: Deploy GitHub Pages | |
| run: | | |
| # This assumes your book is in the root of your repository. | |
| # Just add a `cd` here if you need to change to another directory. | |
| mdbook build | |
| git worktree add gh-pages | |
| git config user.name "Deploy from CI" | |
| git config user.email "" | |
| cd gh-pages | |
| # Delete the ref to avoid keeping history. | |
| git update-ref -d refs/heads/gh-pages | |
| rm -rf * | |
| mv ../book/* . | |
| git add . | |
| git commit -m "Deploy $GITHUB_SHA to gh-pages" | |
| git push --force --set-upstream origin gh-pages | |
| - name: Setup AWS CLI credentials | |
| run: | | |
| mkdir -p ~/.aws | |
| echo "[default]" > ~/.aws/credentials | |
| echo "aws_access_key_id = ${{ secrets.S3_ACCESS_KEY }}" >> ~/.aws/credentials | |
| echo "aws_secret_access_key = ${{ secrets.S3_SECRET_KEY }}" >> ~/.aws/credentials | |
| echo "[default]" > ~/.aws/config | |
| echo "region = ${{ secrets.S3_REGION }}" >> ~/.aws/config | |
| - name: Deploy to S3-compatible storage | |
| run: | | |
| # Navigate to where the built files are | |
| cd gh-pages | |
| # Create a dummy index file to upload first to ensure the bucket exists | |
| echo "Testing bucket access" > test.txt | |
| # Test upload to check if bucket exists | |
| aws s3 cp test.txt s3://${{ secrets.S3_BUCKET_NAME }}/test.txt \ | |
| --endpoint-url ${{ secrets.S3_ENDPOINT_URL }} \ | |
| --no-verify-ssl | |
| # Remove test file if succeeded | |
| aws s3 rm s3://${{ secrets.S3_BUCKET_NAME }}/test.txt \ | |
| --endpoint-url ${{ secrets.S3_ENDPOINT_URL }} \ | |
| --no-verify-ssl | |
| # Sync only specific content types to avoid failures | |
| # Exclude problematic files like .git directory | |
| aws s3 sync . s3://${{ secrets.S3_BUCKET_NAME }} \ | |
| --exclude ".git/*" \ | |
| --exclude "*.ttf" \ | |
| --exclude "*.eot" \ | |
| --exclude "*.svg" \ | |
| --delete \ | |
| --endpoint-url ${{ secrets.S3_ENDPOINT_URL }} \ | |
| --no-verify-ssl | |
| echo "Successfully deployed to S3-compatible storage" |