Thicket data repository for the EEG
at main 3.8 kB view raw
1{ 2 "id": "https://www.tunbury.org/2025/06/02/update-opam-repo-ci", 3 "title": "opam-repo-ci Release Workflow", 4 "link": "https://www.tunbury.org/2025/06/02/update-opam-repo-ci/", 5 "updated": "2025-06-02T00:00:00", 6 "published": "2025-06-02T00:00:00", 7 "summary": "This is a high-level view of the steps required to update ocaml-repo-ci to use a new OCaml version.", 8 "content": "<p>This is a high-level view of the steps required to update <a href=\"https://opam.ci.ocaml.org\">ocaml-repo-ci</a> to use a new OCaml version.</p>\n\n<p><a href=\"https://github.com/ocurrent/opam-repo-ci\">ocaml-repo-ci</a> uses Docker images as the container’s root file system. The <a href=\"https://images.ci.ocaml.org\">base image builder</a> creates and maintains these images using <a href=\"https://github.com/ocurrent/ocaml-dockerfile\">ocurrent/ocaml-dockerfile</a>. Both applications use the <a href=\"https://github.com/ocurrent/ocaml-version\">ocurrent/ocaml-version</a> library as the definitive list of OCaml versions.</p>\n\n<p>1. Update <a href=\"https://github.com/ocurrent/ocaml-version\">ocurrent/ocaml-version</a></p>\n\n<p>Create a PR for changes to <a href=\"https://github.com/ocurrent/ocaml-version/blob/master/ocaml_version.ml\">ocaml_version.ml</a> with the details of the new release.</p>\n\n<p>2. Create and publish a new release of <code>ocurrent/ocaml-version</code></p>\n\n<p>Create the new release on GitHub and publish it to <code>ocaml/opam-repository</code> using <code>opam</code>, e.g.</p>\n\n<div><div><pre><code>opam publish <span>--tag</span> v4.0.1 https://github.com/ocurrent/ocaml-version/releases/download/v4.0.1/ocaml-version-4.0.1.tbz\n</code></pre></div></div>\n\n<p>3. Update <a href=\"https://github.com/ocurrent/docker-base-images\">ocurrent/docker-base-images</a></p>\n\n<p>The change required is to update the opam repository SHA in the <a href=\"https://github.com/ocurrent/docker-base-images/blob/master/Dockerfile\">Dockerfile</a> to pick up the latest version of <a href=\"https://github.com/ocurrent/ocaml-version\">ocurrent/ocaml-version</a>.</p>\n\n<p>Run <code>dune runtest --auto-promote</code> to update the <code>builds.expected</code> file. Create a PR for these changes.</p>\n\n<p>When the PR is pushed to the <code>live</code> branch <a href=\"https://deploy.ci.ocaml.org/?repo=ocurrent/docker-base-images&amp;\">ocurrent-deployer</a> will pick up the change and deploy the new version.</p>\n\n<p>4. Wait for the base images to build</p>\n\n<p>The <a href=\"https://images.ci.ocaml.org\">base image builder</a> refreshes the base images every seven days. Wait for the cycle to complete and the new images to be pushed to Docker Hub.</p>\n\n<p>5. Update <a href=\"https://github.com/ocurrent/opam-repo-ci\">ocurrent/opam-repo-ci</a></p>\n\n<p>Update the opam repository SHA in the <a href=\"https://github.com/ocurrent/opam-repo-ci/blob/master/Dockerfile\">Dockerfile</a>. Update the <a href=\"https://github.com/ocurrent/opam-repo-ci/blob/master/doc/platforms.md\">doc/platforms.md</a> and <a href=\"https://github.com/ocurrent/opam-repo-ci/blob/master/test/specs.expected\">test/specs.expected</a> using the following two commands.</p>\n\n<div><div><pre><code>dune build @doc\ndune runtest <span>--auto-promote</span>\n</code></pre></div></div>\n\n<p>Create a PR for this update. When the PR is pushed to the <code>live</code> branch <a href=\"https://deploy.ci.ocaml.org/?repo=ocurrent/opam-repo-ci\">ocurrent-deployer</a> will pick up the change and deploy the new version.</p>", 9 "content_type": "html", 10 "author": { 11 "name": "Mark Elvers", 12 "email": "mark.elvers@tunbury.org", 13 "uri": null 14 }, 15 "categories": [ 16 "opam", 17 "tunbury.org" 18 ], 19 "source": "https://www.tunbury.org/atom.xml" 20}