name: Release the book and website on: push: branches: - main env: LATEST_IMAGE: ghcr.io/${{ github.repository }}:latest jobs: build-and-push-image: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@v3 - name: Log in to the Container registry uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} # Buildx for caching - uses: docker/setup-buildx-action@v3 - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . push: true tags: ghcr.io/${{ github.repository }}:latest cache-from: type=gha cache-to: type=gha,mode=max release-book-website: needs: build-and-push-image runs-on: ubuntu-latest steps: - name: Set up git repository uses: actions/checkout@v3 - name: Print dependency versions uses: addnab/docker-run-action@v3 with: image: ${{ env.LATEST_IMAGE }} options: -v ${{ github.workspace }}:/app run: | cd /app/book make show_tools_version - name: Print build variables uses: addnab/docker-run-action@v3 with: image: ${{ env.LATEST_IMAGE }} options: -v ${{ github.workspace }}:/app run: | cd /app/book make printvars - name: Bake the book uses: addnab/docker-run-action@v3 with: image: ${{ env.LATEST_IMAGE }} options: -v ${{ github.workspace }}:/app run: | cd /app/book make bake - name: Release baked book to S3 uses: shallwefootball/s3-upload-action@master with: aws_key_id: ${{ secrets.AWS_KEY_ID }} aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}} aws_bucket: ${{ secrets.AWS_BUCKET_BOOK }} source_dir: book/release destination_dir: release - name: Upload book Artifacts uses: actions/upload-artifact@v3 with: name: books path: | book/book_serif/book.log book/book_serif/book.pdf book/book-epub/book.epub - name: Bake the website uses: addnab/docker-run-action@v3 with: image: ${{ env.LATEST_IMAGE }} options: -v ${{ github.workspace }}:/app run: | cd /app/book make mrproper && make website - name: Release baked website to S3 uses: shallwefootball/s3-upload-action@master with: aws_key_id: ${{ secrets.AWS_KEY_ID }} aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}} aws_bucket: ${{ secrets.AWS_BUCKET_WEBSITE }} source_dir: website/static_website_html destination_dir: static_html_root - name: Upload website Artifacts uses: actions/upload-artifact@v3 with: name: website path: website/static_website_html invalidate-book-website-cache: needs: release-book-website runs-on: ubuntu-latest steps: - name: Invalidate Cloudfront book cache uses: chetan/invalidate-cloudfront-action@v2 env: DISTRIBUTION: ${{ secrets.CLOUDFRONT_DISTRIBUTION_BOOK }} PATHS: "/*" AWS_REGION: "us-east-1" AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Invalidate Cloudfront website cache uses: chetan/invalidate-cloudfront-action@v2 env: DISTRIBUTION: ${{ secrets.CLOUDFRONT_DISTRIBUTION_WEBSITE }} PATHS: "/*" AWS_REGION: "us-east-1" AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}