diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml new file mode 100644 index 000000000..344029a49 --- /dev/null +++ b/.github/workflows/create_release.yml @@ -0,0 +1,75 @@ +name: Create release with _freeze + +on: + workflow_dispatch: + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Julia + uses: julia-actions/setup-julia@v2 + with: + version: '1.10' + + - name: Load Julia packages from cache + uses: julia-actions/cache@v2 + + - name: Set up Quarto + uses: quarto-dev/quarto-actions/setup@v2 + with: + # Needs Quarto 1.6 (which is currently a pre-release version) to fix #533 + version: pre-release + + - name: Restore cached _freeze folder + id: cache-restore + uses: actions/cache/restore@v4 + with: + path: | + ./_freeze/ + key: | + ${{ runner.os }}-${{ hashFiles('**/Manifest.toml') }}-${{ hashFiles('**/index.qmd') }} + restore-keys: | + ${{ runner.os }}-${{ hashFiles('**/Manifest.toml') }} + + - name: Render + run: quarto render + + - name: Compress _freeze folder + run: tar -czf _freeze.tar.gz _freeze + + - name: Generate tag name for release + id: tag + run: echo "tag_name=freeze_$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Create GitHub release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ steps.tag.outputs.tag_name }} + files: | + _freeze.tar.gz + Manifest.toml + body: | + This release contains the `_freeze` folder generated by Quarto when + rendering the docs. You can use this to speed up the rendering + process on your local machine by downloading and extracting the + `_freeze` folder, then placing it at the root of the project. + + Note that the contents of the `_freeze` folder only hash the + contents of the .qmd files, and do not include information about + the Julia environment. Thus, each `_freeze` folder is only valid + for a given Julia environment, which is specified in the + Manifest.toml file included in this release. To ensure + reproducibility, you should make sure to use the Manifest.toml file + locally as well. + + These releases are not automatically generated. To make an updated + release with the contents of the `_freeze` folder from the main + branch, you can run the `Create release with _freeze` workflow from + https://github.com/TuringLang/docs/actions/workflows/create_release.yml.