diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4a2959942..548adaa11 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -120,13 +120,9 @@ jobs: version: "1" - uses: julia-actions/julia-buildpkg@v1 - name: Set up documentation environment - run: | - using Pkg - Pkg.develop(path=".") - Pkg.instantiate() - shell: julia --color=yes --project=docs/ {0} + run: make docs-manifest - name: Build & deploy the documentation - run: julia --color=yes --project=docs/ --code-coverage docs/make.jl + run: make docs env: DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 43689a17a..de5624e54 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /Manifest.toml +/docs/src/release-notes.md /docs/build/ /docs/Manifest.toml /test/testdata/large.dat diff --git a/CHANGELOG.md b/CHANGELOG.md index fbcc2dc2b..4df8afb55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,95 +2,135 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## Version [v0.1.11] - 2024-06-27 ### Added -* The `JuliaHub.authenticate` function now supports a two-argument form, where you can pass the JuliaHub token in directly, bypassing interactive authentication. (#58) -* The `JuliaHub.submit_job` function now allows submitting jobs that expose ports (via the `expose` argument). Related to that, the new `JuliaHub.request` function offers a simple interface for constructing authenticated HTTP.jl requests against the job, and the domain name of the job can be accessed via the new `.hostname` property of the `Job` object. (#14, #52) +* The `JuliaHub.authenticate` function now supports a two-argument form, where you can pass the JuliaHub token in directly, bypassing interactive authentication. ([#58]) +* The `JuliaHub.submit_job` function now allows submitting jobs that expose ports (via the `expose` argument). Related to that, the new `JuliaHub.request` function offers a simple interface for constructing authenticated HTTP.jl requests against the job, and the domain name of the job can be accessed via the new `.hostname` property of the `Job` object. ([#14], [#52]) -## Version v0.1.10 - 2024-05-31 +## Version [v0.1.10] - 2024-05-31 ### Changed -* When submitting an appbundle with the two-argument `JuliaHub.appbundle(bundle_directory, codefile)` method, JuliaHub.jl now ensures that `@__DIR__` `@__FILE`, and `include()` in the user code now work correctly. There is a subtle behavior change due to this, where now the user script _must_ be present within the uploaded appbundle tarball (previously it was possible to use a file that would get filtered out by `.juliabundleignore`). (#37, #53) +* When submitting an appbundle with the two-argument `JuliaHub.appbundle(bundle_directory, codefile)` method, JuliaHub.jl now ensures that `@__DIR__` `@__FILE`, and `include()` in the user code now work correctly. There is a subtle behavior change due to this, where now the user script _must_ be present within the uploaded appbundle tarball (previously it was possible to use a file that would get filtered out by `.juliabundleignore`). ([#37], [[#53]]) -## Version v0.1.9 - 2024-03-13 +## Version [v0.1.9] - 2024-03-13 ### Fixed -* `JuliaHub.nodespec` now correctly prioritizes the GPU, CPU, and memory counts, rather than the hourly price, when picking a "smallest node for a given spec". (#49) +* `JuliaHub.nodespec` now correctly prioritizes the GPU, CPU, and memory counts, rather than the hourly price, when picking a "smallest node for a given spec". ([#49]) -## Version v0.1.8 - 2024-02-21 +## Version [v0.1.8] - 2024-02-21 ### Added -* The progress output printing in `JuliaHub.upload_dataset` can now be disabled by setting `progress=false`. (#48) +* The progress output printing in `JuliaHub.upload_dataset` can now be disabled by setting `progress=false`. ([#48]) -## Version v0.1.7 - 2024-01-22 +## Version [v0.1.7] - 2024-01-22 ### Fixed -* `JuliaHub.datasets` and `JuliaHub.dataset` now handle problematic backend responses more gracefully. (#46) +* `JuliaHub.datasets` and `JuliaHub.dataset` now handle problematic backend responses more gracefully. ([#46]) -## Version v0.1.6 - 2023-11-27 +## Version [v0.1.6] - 2023-11-27 ### Fixed -* `JuliaHub.appbundle`, when it has to generate a `Project.toml` file, now correctly includes it in the appbundle tarball. (#44) -* `JuliaHub.appbundle` now works with relative paths such as `"."`. (#44) +* `JuliaHub.appbundle`, when it has to generate a `Project.toml` file, now correctly includes it in the appbundle tarball. ([#44]) +* `JuliaHub.appbundle` now works with relative paths such as `"."`. ([#44]) -## Version v0.1.5 - 2023-09-27 +## Version [v0.1.5] - 2023-09-27 ### Added -* The job submission APIs now support jobs with no time limit, and also can be used to submit jobs that trigger system image builds. (#28) +* The job submission APIs now support jobs with no time limit, and also can be used to submit jobs that trigger system image builds. ([#28]) ### Fixed -* Fixed the submission of application-type jobs. (#31, #32, #33, #35) -* `JuliaHub.applications()` no longer throws a type error when the user has no registered and user applications. (#33) -* Fixed the `show(io, x)` methods for `ComputeConfig` and `NodeSpec`. (#34) +* Fixed the submission of application-type jobs. ([#31], [#32], [#33], [#35]) +* `JuliaHub.applications()` no longer throws a type error when the user has no registered and user applications. ([#33]) +* Fixed the `show(io, x)` methods for `ComputeConfig` and `NodeSpec`. ([#34]) -## Version v0.1.4 - 2023-08-21 +## Version [v0.1.4] - 2023-08-21 ### Fixed -* `upload_dataset` and `download_dataset` no longer use the deprecated do-syntax to call the `rclone` binary. (#18) +* `upload_dataset` and `download_dataset` no longer use the deprecated do-syntax to call the `rclone` binary. ([#18]) -## Version v0.1.3 - 2023-07-17 +## Version [v0.1.3] - 2023-07-17 ### Changed -* The `name` keyword argument to `submit_job` has been deprecated and replaced with `alias`. (#13) +* The `name` keyword argument to `submit_job` has been deprecated and replaced with `alias`. ([#13]) ### Fixed -* `extend_job` now correctly handles the `200` but `success: false` response. (#13) -* An assortment of small bugfixes revealed by JET. (#9) (#12) +* `extend_job` now correctly handles the `200` but `success: false` response. ([#13]) +* An assortment of small bugfixes revealed by JET. ([#9]) ([#12]) ### Tests -* The test suite now runs successfully when the package is `Pkg.add`ed and the package files have only read-only permissions. (#11) +* The test suite now runs successfully when the package is `Pkg.add`ed and the package files have only read-only permissions. ([#11]) -## Version v0.1.2 - 2023-06-26 +## Version [v0.1.2] - 2023-06-26 ### Fixed -* If TimeZones.jl fails to determine the system's timezone, JuliaHub.jl now gracefully falls back to UTC to represent dates and times. (#7) +* If TimeZones.jl fails to determine the system's timezone, JuliaHub.jl now gracefully falls back to UTC to represent dates and times. ([#7]) -## Version v0.1.1 - 2023-06-24 +## Version [v0.1.1] - 2023-06-24 ### Changed -* The `JuliaHub.download_job_file` function now returns the path of the relevant local file. (#3) +* The `JuliaHub.download_job_file` function now returns the path of the relevant local file. ([#3]) ### Fixed -* Jobs with files that have missing data are now handled gracefully by defaulting the `.size` property to `0` and `.hash` property to `nothing`. (#3) -* Information about dataset versions can now be accessed via the the `.versions` property of a `Dataset` object. (#2) -* The automatic backend API version detection is now more reliable in some edge cases. (#1) +* Jobs with files that have missing data are now handled gracefully by defaulting the `.size` property to `0` and `.hash` property to `nothing`. ([#3]) +* Information about dataset versions can now be accessed via the the `.versions` property of a `Dataset` object. ([#2]) +* The automatic backend API version detection is now more reliable in some edge cases. ([#1]) -## Version v0.1.0 - 2023-06-20 +## Version [v0.1.0] - 2023-06-20 Initial package release. + + + + +[v0.1.0]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.0 +[v0.1.1]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.1 +[v0.1.2]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.2 +[v0.1.3]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.3 +[v0.1.4]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.4 +[v0.1.5]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.5 +[v0.1.6]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.6 +[v0.1.7]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.7 +[v0.1.8]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.8 +[v0.1.9]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.9 +[v0.1.10]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.10 +[v0.1.11]: https://github.com/JuliaComputing/JuliaHub.jl/releases/tag/v0.1.11 +[#1]: https://github.com/JuliaComputing/JuliaHub.jl/issues/1 +[#2]: https://github.com/JuliaComputing/JuliaHub.jl/issues/2 +[#3]: https://github.com/JuliaComputing/JuliaHub.jl/issues/3 +[#7]: https://github.com/JuliaComputing/JuliaHub.jl/issues/7 +[#9]: https://github.com/JuliaComputing/JuliaHub.jl/issues/9 +[#11]: https://github.com/JuliaComputing/JuliaHub.jl/issues/11 +[#12]: https://github.com/JuliaComputing/JuliaHub.jl/issues/12 +[#13]: https://github.com/JuliaComputing/JuliaHub.jl/issues/13 +[#14]: https://github.com/JuliaComputing/JuliaHub.jl/issues/14 +[#18]: https://github.com/JuliaComputing/JuliaHub.jl/issues/18 +[#28]: https://github.com/JuliaComputing/JuliaHub.jl/issues/28 +[#31]: https://github.com/JuliaComputing/JuliaHub.jl/issues/31 +[#32]: https://github.com/JuliaComputing/JuliaHub.jl/issues/32 +[#33]: https://github.com/JuliaComputing/JuliaHub.jl/issues/33 +[#34]: https://github.com/JuliaComputing/JuliaHub.jl/issues/34 +[#35]: https://github.com/JuliaComputing/JuliaHub.jl/issues/35 +[#37]: https://github.com/JuliaComputing/JuliaHub.jl/issues/37 +[#44]: https://github.com/JuliaComputing/JuliaHub.jl/issues/44 +[#46]: https://github.com/JuliaComputing/JuliaHub.jl/issues/46 +[#48]: https://github.com/JuliaComputing/JuliaHub.jl/issues/48 +[#49]: https://github.com/JuliaComputing/JuliaHub.jl/issues/49 +[#52]: https://github.com/JuliaComputing/JuliaHub.jl/issues/52 +[#53]: https://github.com/JuliaComputing/JuliaHub.jl/issues/53 +[#58]: https://github.com/JuliaComputing/JuliaHub.jl/issues/58 diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..95c287b54 --- /dev/null +++ b/Makefile @@ -0,0 +1,26 @@ +JULIA:=julia + +help: + @echo "The following make commands are available:" + @echo " - make docs: build the documentation" + @echo " - make docs-environment: instantiate the docs environment" + @echo " - make test: run the tests" + +docs/Manifest.toml: docs/Project.toml + @echo "Instantiating the docs/ environment:" + ${JULIA} --color=yes --project=docs/ -e 'using Pkg; Pkg.develop(path="."); Pkg.instantiate()' + +docs-manifest: + rm -f docs/Manifest.toml + $(MAKE) docs/Manifest.toml + +docs: docs/Manifest.toml + ${JULIA} --project=docs/ docs/make.jl + +changelog: + ${JULIA} --project=docs/ docs/changelog.jl + +test: + ${JULIA} --project -e 'using Pkg; Pkg.test()' + +.PHONY: default docs-manifest docs test diff --git a/Project.toml b/Project.toml index 66fdcc694..eca3cde93 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "JuliaHub" uuid = "bc7fa6ce-b75e-4d60-89ad-56c957190b6e" authors = ["JuliaHub Inc."] -version = "0.1.10" +version = "0.1.11" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" diff --git a/docs/Project.toml b/docs/Project.toml index 86f2b74a6..40ea80183 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -1,4 +1,5 @@ [deps] +Changelog = "5217a498-cd5d-4ec6-b8c2-9b85a09b6e3e" Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" DocumenterMermaid = "a078cd44-4d9c-4618-b545-3ab9d77f9177" JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" @@ -8,5 +9,6 @@ TimeZones = "f269a46b-ccf7-5d73-abea-4c690281aa53" URIs = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" [compat] +Changelog = "1" Documenter = "1" DocumenterMermaid = "0.1" diff --git a/docs/changelog.jl b/docs/changelog.jl new file mode 100644 index 000000000..a08d0b855 --- /dev/null +++ b/docs/changelog.jl @@ -0,0 +1,7 @@ +using Changelog + +Changelog.generate( + Changelog.CommonMark(), + joinpath(@__DIR__, "..", "CHANGELOG.md"); + repo="JuliaComputing/JuliaHub.jl", +) diff --git a/docs/make.jl b/docs/make.jl index 91d2f2d09..bba0b043f 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -1,5 +1,7 @@ using JuliaHub -using Documenter, DocumenterMermaid +using Documenter +using DocumenterMermaid +using Changelog import TimeZones # Timestamp printing is dependent on the timezone, so we force a specific (non-UTC) @@ -43,6 +45,14 @@ function setup_job_results_file!() ) end +# Generate a Documenter-friendly changelog from CHANGELOG.md +Changelog.generate( + Changelog.Documenter(), + joinpath(@__DIR__, "..", "CHANGELOG.md"), + joinpath(@__DIR__, "src", "release-notes.md"); + repo="JuliaComputing/JuliaHub.jl", +) + # These lists are reused in the makedocs, but also in the at-contents # blocks on the src/index.md page. const PAGES_GUIDES = [ @@ -72,6 +82,7 @@ Mocking.apply(mocking_patch) do "Guides" => PAGES_GUIDES, "Reference" => PAGES_REFERENCE, Documenter.hide("internal.md"), + "release-notes.md", ], doctest=if in("--fix-doctests", ARGS) :fix