summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
Commit message (Collapse)AuthorAgeFilesLines
* Fix up rules for ghcup-metadata-nightly-pushBryan Richter2023-05-091-5/+2
|
* Incrementally update ghcup metadata in ghc/ghcup-metadataMatthew Pickering2023-05-051-1/+32
| | | | | | | | | | | | | | | | | | This job paves the way for distributing nightly builds * A new repo https://gitlab.haskell.org/ghc/ghcup-metadata stores the metadata on the "updates" branch. * Each night this metadata is downloaded and the nightly builds are appended to the end of the metadata. * The update job only runs on the scheduled nightly pipeline, not just when NIGHTLY=1. Things which are not done yet * Modify the retention policy for nightly jobs * Think about building release flavour compilers to distribute nightly. Fixes #23334
* CI: Disable abi-test-nightlyBryan Richter2023-04-191-0/+3
| | | | See #23269
* ci: Add job to test 9.6 bootstrappingMatthew Pickering2023-04-031-1/+3
|
* ci: use alpine3_17-wasm image for wasm jobsCheng Shao2023-03-301-2/+1
| | | | | Bump the ci-images dependency and use the new alpine3_17-wasm docker image for wasm jobs.
* ci: make lint-ci-config job fast againCheng Shao2023-03-301-2/+2
| | | | | | | | We don't pin our nixpkgs revision and tracks the default nixpkgs-unstable channel anyway. Instead of using haskell.packages.ghc924, we should be using haskell.packages.ghc92 to maximize the binary cache hit rate and make lint-ci-config job fast again. Also bumps the nix docker image to the latest revision.
* ghcup-metadata: Use Ubuntu and Rocky bindistsMatthew Pickering2023-02-161-0/+6
| | | | | | Prefer to use the Ubuntu 20.04 and 18.04 binary distributions on Ubuntu and Linux Mint. Prefer to use the Rocky 8 binary distribution on unknown distributions.
* Bump Windows toolchainBen Gamari2023-02-031-1/+1
| | | | Updates to LLVM 14, hopefully fixing #21964.
* Bump DOCKER_REV to use alpine image without LLVM installedMatthew Pickering2023-02-011-1/+1
| | | | | alpine_3_12 only supports LLVM 10, which is now outside the supported version range.
* configure: Always create the VERSION fileBen Gamari2023-01-311-4/+0
| | | | | | | | Teach the `configure` script to create the `VERSION` file. This will serve as the stable interface to allow the user to determine the version number of a working tree. Fixes #22322.
* Fixes for cabal-reinstall CI jobMatthew Pickering2023-01-311-0/+1
| | | | | | | | * Allow filepath to be reinstalled * Bump some version bounds to allow newer versions of libraries * Rework testing logic to avoid "install --lib" and package env files Fixes #22344
* gen_ci: Only consider release jobs for job metadataMatthew Pickering2023-01-301-0/+2
| | | | | In particular we do not have a release job for FreeBSD so the generation of the platform mapping was failing.
* ci: Add ubuntu18_04 nightly and release jobsMatthew Pickering2023-01-261-1/+1
| | | | | | | This adds release jobs for ubuntu18_04 which uses glibc 2.27 which is older than the 2.28 which is used by Rocky8 bindists. Ticket #22268
* ci: Disable HLint job due to excessive runtimeMatthew Pickering2023-01-251-1/+2
| | | | | | | | | | | | | | | | | | | | The HLint jobs takes much longer to run (20 minutes) after "Give the RTS it's own configure script" eb5a6b91 Now the CI job will build the stage0 compiler before it generates the necessary RTS headers. We either need to: * Fix the linting rules so they take much less time * Revert the commit * Remove the linting of base from the hlint job * Remove the hlint job This is highest priority as it is affecting all CI pipelines. For now I am just disabling the job because there are many more pressing matters at hand. Ticket #22830
* Add scripts to generate ghcup metadata on nightly and release pipelinesMatthew Pickering2023-01-161-0/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. A python script in .gitlab/rel_eng/mk-ghcup-metadata which generates suitable metadata for consumption by GHCUp for the relevant pipelines. - The script generates the metadata just as the ghcup maintainers want, without taking into account platform/library combinations. It is updated manually when the mapping changes. - The script downloads the bindists which ghcup wants to distribute, calculates the hash and generates the yaml in the correct structure. - The script is documented in the .gitlab/rel_eng/mk-ghcup-metadata/README.mk file 1a. The script requires us to understand the mapping from platform -> job. To choose the preferred bindist for each platform the .gitlab/gen_ci.hs script is modified to allow outputting a metadata file which answers the question about which job produces the bindist which we want to distribute to users for a specific platform. 2. Pipelines to run on nightly and release jobs to generate metadata - ghcup-metadata-nightly: Generates metadata which points directly to artifacts in the nightly job. - ghcup-metadata-release: Generates metadata suitable for inclusion directly in ghcup by pointing to the downloads folder where the bindist will be uploaded to. 2a. Trigger jobs which test the generated metadata in the downstream `ghccup-ci` repo. See that repo for documentation about what is tested and how but essentially we test in a variety of clean images that ghcup can download and install the bindists we say exist in our metadata.
* ci: Don't use complicated image or clone in not-interruptible jobMatthew Pickering2023-01-161-1/+3
| | | | | | This job exists only for the meta-reason of not allowing nightly pipelines to be cancelled. It was taking two minutes to run as in order to run "true" we would also clone the whole GHC repo.
* rel_eng: Add release engineering scripts into ghc treeMatthew Pickering2023-01-161-1/+1
| | | | | | | | | | It is better to keep these scripts in the tree as they depend on the CI configuration and so on. By keeping them in tree we can keep them up-to-date as the CI config changes and also makes it easier to backport changes to the release script between release branches in future. The final motivation is that it makes generating GHCUp metadata possible.
* ci: Change owner of files in test-bootstrap jobMatthew Pickering2023-01-161-0/+1
|
* ci: Change owner of files in source-tarball jobMatthew Pickering2023-01-161-0/+1
| | | | | | | | | | | | | | This fixes errors of the form: ``` fatal: detected dubious ownership in repository at '/builds/ghc/ghc' To add an exception for this directory, call: git config --global --add safe.directory /builds/ghc/ghc inferred 9.7.20230113 checking for GHC Git commit id... fatal: detected dubious ownership in repository at '/builds/ghc/ghc' To add an exception for this directory, call: git config --global --add safe.directory /builds/ghc/ghc ```
* ci: Bump CACHE_REV so that ghc-9.6 branch and HEAD have different cachesMatthew Pickering2023-01-161-1/+1
| | | | | | | | Having the same CACHE_REV on both branches leads to issues where the darwin toolchain is different on ghc-9.6 and HEAD which leads to long darwin build times. In general we should ensure that each branch has a different CACHE_REV.
* ci: add wasm ci jobs via gen_ci.hsCheng Shao2023-01-131-63/+0
| | | | | | | - There is one regular wasm job run in validate pipelines - Additionally, int-native/unreg wasm jobs run in nightly/release pipelines Also, remove the legacy handwritten wasm ci jobs in .gitlab-ci.yml.
* ci: improve nix-shell for gen_ci.hs and fix some ghc/hlint warningsCheng Shao2023-01-131-14/+8
| | | | | | | | | | | - Add a ghc environment including prebuilt dependencies to the nix-shell. Get rid of the ad hoc cabal cache and all dependencies are now downloaded from the nixos binary cache. - Make gen_ci.hs a cabal package with HLS integration, to make future hacking of gen_ci.hs easier. - Fix some ghc/hlint warnings after I got HLS to work. - For the lint-ci-config job, do a shallow clone to save a few minutes of unnecessary git checkout time.
* ci: Bump DOCKER_REVCheng Shao2023-01-131-1/+1
|
* Don't run hadrian-multi on fast-ci labelMatthew Pickering2023-01-121-0/+2
| | | | Fixes #22667
* packaging: Build perf builds with -split-sectionswip/various-hadrian-fixesMatthew Pickering2023-01-041-2/+2
| | | | | | | | | | | In 8f71d958 the make build system was made to use split-sections on linux systems but it appears this logic never made it to hadrian. There is the split_sections flavour transformer but this doesn't appear to be used for perf builds on linux. This is disbled on deb9 and windows due to #21670 Closes #21135
* ci: Run head.hackage jobs on upstream-testing branch rather than masterMatthew Pickering2022-12-241-1/+1
| | | | | | | | | This change allows less priviledged users to trigger head.hackage jobs because less permissions are needed to trigger jobs on the upstream-testing branch, which is not protected. There is a CI job which updates upstream-testing each hour to the state of the master branch so it should always be relatively up-to-date.
* ci: Don't run abi-test-nightly on release jobsMatthew Pickering2022-12-241-1/+0
| | | | | | The test is not configured to get the correct dependencies for the release pipelines (and indeed stops the release pipeline being run at all)
* head.hackage: Use slow-validate bindist for linting jobsMatthew Pickering2022-12-241-14/+54
| | | | | | | | | | | | | | | | | | | | | | | | This enables the SLOW_VALIDATE env var for the linting head.hackage jobs, namely the jobs enabled manually, by the label or on the nightly build now use the deb10-numa-slow-validate bindist which has assertions enabled. See #22623 for a ticket which was found by using this configuration already! The head.hackage jobs triggered by upstream CI are now thusly: hackage-lint: Can be triggered on any MR, normal validate pipeline or nightly build. Runs head.hackage with -dlint and a slow-validate bindist hackage-label-lint: Trigged on MRs with "user-facing" label, runs the slow-validate head.hackage build with -dlint. nightly-hackage-lint: Runs automatically on nightly pipelines with slow-validate + dlint config. nightly-hackage-perf: Runs automaticaly on nightly pipelines with release build and eventlogging enabled. release-hackage-lint: Runs automatically on release pipelines with -dlint on a release bindist.
* ci: Move wasm pipelines into nightly rather than masterMatthew Pickering2022-12-231-2/+3
| | | | | See #22664 for the changes which need to be made to bring one of these back to the validate pipeline.
* ci: Bump boot images to use ghc-9.4.3Matthew Pickering2022-12-091-4/+4
| | | | Also updates the bootstrap jobs to test booting 9.2 and 9.4.
* ci: Add job to test hadrian-multi commandMatthew Pickering2022-12-091-0/+51
| | | | | I am not sure this job is good because it requires booting HEAD with HEAD, but it should be fine.
* ci: Add job for testing interface stability across buildsMatthew Pickering2022-12-081-0/+27
| | | | | | | | | | | | The idea is that both the bindists should product libraries with the same ABI and interface hash. So the job checks with ghc-pkg to make sure the computed ABI is the same. In future this job can be extended to check for the other facets of interface determinism. Fixes #22180
* ci: Add job to test interface file determinism guaranteesMatthew Pickering2022-12-081-0/+40
| | | | | | | | | | | | | | In this job we can run on every commit we add a test which builds the Cabal library twice and checks that the ABI hash and interface hash is stable across the two builds. * We run the test 20 times to try to weed out any race conditions due to `-j` * We run the builds in different temporary directories to try to weed out anything related to build directory affecting ABI or interface file hash. Fixes #22180
* Add Javascript backendSylvain Henry2022-11-291-0/+3
| | | | | | | | | | | | | | | Add JS backend adapted from the GHCJS project by Luite Stegeman. Some features haven't been ported or implemented yet. Tests for these features have been disabled with an associated gitlab ticket. Bump array submodule Work funded by IOG. Co-authored-by: Jeffrey Young <jeffrey.young@iohk.io> Co-authored-by: Luite Stegeman <stegeman@gmail.com> Co-authored-by: Josh Meredith <joshmeredith2008@gmail.com>
* ci: add wasm32-wasi release bindist jobCheng Shao2022-11-111-0/+60
|
* Bump ci-images revisionCheng Shao2022-11-061-1/+1
| | | | ci-images has recently been updated, including changes needed for wasm32-wasi CI.
* CI: Allow hadrian-ghc-in-ghci to run in nightliesBryan Richter2022-11-041-1/+4
| | | | | | | Since lint-submods doesn't run in nightlies, hadrian-ghc-in-ghci needs to mark it as "optional" so it can run if the job doesn't exist. Fixes #22396.
* CI: Don't run lint-submods on nightlywip/T22325Bryan Richter2022-10-281-0/+3
| | | | Fixes #22325
* gitlab-ci: Ensure that ghc derivation is in scopeBen Gamari2022-09-051-1/+1
| | | | | | Previously the lint-ci job attempted to use cabal-install (specifically `cabal update`) without a GHC in PATH. However, cabal-install-3.8 appears to want GHC, even for `cabal update`.
* ci: Attempt using normal submodule cloning strategyMatthew Pickering2022-08-301-1/+1
| | | | | | | We do not use any recursively cloned submodules, and this protects us from flaky upstream remotes. Fixes #22121
* gitlab-ci: Drop make build validation jobsBen Gamari2022-08-251-58/+0
| | | | In preparation for removal of the `make`-based build system
* gitlab-ci: Add basic support for cross-compiler testiingBen Gamari2022-08-081-1/+1
| | | | Here we add a simple qemu-based test for cross-compilers.
* gitlab-ci: Bump Docker imagesBen Gamari2022-08-071-1/+1
| | | | To give the ARMv7 job access to lld, fixing #21875.
* gitlab-ci: Fix hadrian bootstrapping of release pipelinesBen Gamari2022-08-061-2/+6
| | | | | | | | | | | Previously we would attempt to test hadrian bootstrapping in the `validate` build flavour. However, `ci.sh` refuses to run validation builds during release pipelines, resulting in job failures. Fix this by testing bootstrapping in the `release` flavour during release pipelines. We also attempted to record perf notes for these builds, which is redundant work and undesirable now since we no longer build in a consistent flavour.
* ci: Fix pages jobMatthew Pickering2022-08-051-1/+4
| | | | | | | The job has been failing because we don't bundle haddock docs anymore in the docs dist created by hadrian. Fixes #21789
* ci: Disable (broken) perf-nofibBryan Richter2022-07-251-2/+3
| | | | See #21859
* Add nightly job for generating docs suitable for hackage uploadMatthew Pickering2022-07-041-3/+3
|
* Add NO_BOOT to hackage_doc_tarball jobMatthew Pickering2022-06-201-0/+2
| | | | | | We were attempting to boot a src-tarball which doesn't work as ./boot is not included in the source tarball. This slipped through as the job is only run on nightly.
* Enable eventlogs on nightly perf jobBryan Richter2022-06-161-0/+2
|
* ci: Add matrix for bootstrap sourcesZubin Duggal2022-06-011-5/+46
|