All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Make logs around system packages more polite.
- Remove the action version from the cache key.
- Update npm deps.
- Add support for nektos/act.
- Ensure cache key creation works with local opam repositories.
- Use ocaml-opam/opam-repository-mingw instead of fdopen/opam-repository-mingw.
- Fix in 2.0.11 for hashing caused an invalid git configuration to be written.
- Don't install Cygwin's git or mercurial packages (reduces cache by ~90MB).
- Ensure ocaml/opam-repository can be added without getting hash errors.
- Speed up caching and get rid of bugs and hacks on Windows.
- Take the sandbox option value into account when computing the cache key.
- Make the retry handling around unix package installation simple back.
- Make the retry handling around depext package installation more robust.
- Define
CLICOLOR_FORCE=1
in CI runs.
- Make the retry handling around unix system package installation more stringent.
- Add support for arm64.
- Fail on missing required input instead of warning.
- Unset the secondary repository on Windows.
- Set the upstream git url as a secondary repository on Windows.
- Expose the
enable-jekyll
alias to theenable_jekyll
input for deploy-doc action.
- Turn off git directory ownership check.
- Relax the restore keys for the opam cache.
- Update the package index if the system package installation fails.
- Update default runtime to node16.
- Do not install opam-depext if it's not enabled.
- Print a proper error if the version not found in the
.ocamlformat
file.
- Fallback to the version in which the assets exist if no assets exist in the latest opam release.
- Instruct Cygwin setup to use "sys" symlinks during setup (partial workaround for bug with native symlinks in Cygwin setup - some depexts may still be affected)
- Add support for more styles for the ocamlformat configuration in lint-fmt action.
- Added "extends" experimentally.
- Remove some hacks as
--no-depexts
is now used in CLI 2.0 mode from opam 2.1.2.
- Increase the allowed artifact cache size from 5GB to 10GB.
- Use 2.1 mode instead of 2.0 mode on the Ubuntu and macOS runners.
- Return an empty array to avoid depext failure when depext flags are not passed.
- Unlock opam 2.1 on the Ubuntu and macOS runners.
- Reduce GitHub API calls to avoid issues that can easily hit rate-limiting.
- If no user-input version is found in the opam-repository, explicitly raise an error instead of implicitly breaking the workflow.
- Retrieve the base compiler version from opam-repository to use the live released compiler version.
- Set
OPAMSOLVERTIMEOUT
to1000
to avoid a timeout even if the opam solver is slow. - Increase cache hit ratio by loosening restore keys of opam cache.
- Use the week number to manage Cygwin cache.
- Set repository priorities correctly for multiple repositories feature.
- Lock the version of opam to be installed only to < 2.1 releases until opam 2.2 is released.
- Changed to force an update of the opam cache if the week number is changed.
- Removed the profiling functionality added in
2.0.0-alpha
.
- Added
opam-repositories
input to support multiple opam repositories.
- The
opam-repository
input has been removed in order to add theopam-repositories
input.
- Added support for 32 bits compiler variants.
- Added semver-style version matching support.
- Cache opam root (
~/.opam
on Unix,D:\.opam
on Windows), opam download-cache (~/.opam/download-cache
on Unix,D:\.opam\download-cache
on Windows), and opam local switch (_opam
). - If
dune-cache
enabled, install dune, automatically configure the dune cache for the most efficient use in CI (exportsDUNE_CACHE=enabled
,DUNE_CACHE_TRANSPORT=direct
. TRANSPORT must bedirect
, notdaemon
, to speed up the opam install process and to support Windows: ocaml/dune#4166, ocaml/dune#4167), and share the dune cache directory for each run. - If
opam-pin
is enabled, pin the local packages specified byopam-local-packages
. - If
opam-depext
is enabled, install the system dependencies specified byopam-local-packages
via depext - If
opam-disable-sandboxing
is enabled, sandboxing is disabled for all platforms except Windows. (Sandboxing is always disabled on the Windows runners due to limitations of opam.) - The profiling functionality allows us to check the duration of each group if debug mode is enabled. (https://docs.github.com/en/actions/managing-workflow-runs/enabling-debug-logging)
- The Windows runners install
mingw64-i686-gcc-core
andmingw64-i686-gcc-g++
for 32 bit compiler variant support. - Clean the log output by grouping some operations.
- The compiler will be initialised in all platforms with an opam local switch to eliminate differences between platforms and prepare for full dependency caching in the future.
- The macOS and Ubuntu runners install and cache opam from the GitHub release directly without the system package manager.
- The macOS and Ubuntu runners install
darcs
andmercurial
. - The Windows runners install
mercurial
. - Export
OPAMCOLOR=always
. - Export
OPAMERRLOGLEN=0
. - Export
OPAMPRECISETRACKING=1
. - Export
OPAMSOLVERTIMEOUT=500
. - Export
OPAMROOT=D:\.opam
on the Windows runners. - Export
OPAMVERBOSE=true
if the actions debug mode is enabled. (https://docs.github.com/en/actions/managing-workflow-runs/enabling-debug-logging) - Export
MSYS=winsymlinks:native
for@actions/cache
on the Windows runners. - Export
HOME=%USERPROFILE%
for opam on the Windows runners.
- The
ocaml-version
input has been removed. Use theocaml-compiler
instead. - The simplified version specifying scheme (e.g.
4.12.0
) support has been removed.
- Use the appropriate file system behavior parameters on the Windows runners.
(
R2L:1
,R2R:1
) - Add
ppa: avsm/musl
on 18.04 and older Ubuntu runners. - Pass
--enable-shell-hook
toopam init
fixes a bug that must be run via opam exec in subsequent steps. - The Ubuntu runners install
gcc-multilib
,g++-multilib
forocaml-option-32bit
.
- Stop setting switch jobs variable on Windows (
OPAMJOBS
is sufficient).
- Run
brew update
before set up to avoid an issue with Bintray transition period.
- Further fix to switch initialisation.
- The Windows opam wrapper is fractionally less-archaically named opam.cmd, with no loss in arcaneness.
- Export
CYGWIN_ROOT
on the Windows runners, allowing bash to be invoked as%CYGWIN_ROOT%\bin\bash
/$env:CYGWIN_ROOT\bin\bash
(and similarly for Cygwinsetup-x86_64.exe
). - The Windows runner no longer prepends
%CYGWIN_ROOT%\bin
toPATH
.
- Switches in Unix are now properly initialized before running depext.
- Ubuntu and macOS runners no longer display "No switch is currently installed." before building the compiler.
- Ubuntu no longer installs the system ocaml packages.
- macOS no longer builds two compilers on every run.
- Upgrade opam to 2.0.8 for Linux VMs.
- Windows installs Cygwin to
D:\cygwin
, using faster Azure temporary storage.
1.1.5 - 2020-12-15
Reduce build time by exporting modified OPAMJOBS
environment variable.
1.1.4 - 2020-12-07
Windows installs mingw64-x86_64-gcc-g++
so GitHub Action can build libraries
that require it.
1.1.3 - 2020-10-23 [YANKED]
- Update the
@actions/core
package to address CVE-2020-15228.
1.1.2 - 2020-09-10
- Add the Cygwin setup to a known location for later steps.
- Check if the switch exists before creating the switch.
1.1.1 - 2020-08-20
- OCaml installation errors on Windows are now properly propagated.
1.1.0 - 2020-07-04
- The default opam repository can now be set via input.
- Linux VMs now use opam 2.0.7.
1.0.1 - 2020-04-21
-
node_modules
are not exported anymore which reduces the size of the action -
The repository is initialised directly from the opam-repository git source, so that there is no lag in packages being available for CI
-
Ubuntu installs
musl-tools
so that the GitHub Action can generate statically linked Linux binaries in conjunction with theocaml-variants.4.x.y+musl+flambda
switch
1.0 - 2019-11-21
- Initial release.