summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* ci: Don't try to run ./boot when testing bootstrap of source distMatthew Pickering2022-06-011-0/+1
|
* hadrian: Introduce new package database for executables needed to build stage0Matthew Pickering2022-05-311-4/+4
| | | | | | | | | | | | | | | These executables (such as hsc2hs) are built using the boot compiler and crucially, most libraries from the global package database. We also move other build-time executables to be built in this stage such as linters which also cleans up which libraries end up in the global package database. This allows us to remove hacks where linters-common is removed from the package database when a bindist is created. This fixes issues caused by infinite recursion due to bytestring adding a dependency on template-haskell. Fixes #21634
* ci: Allow testing bootstrapping on MRs using the "test-bootstrap" labelMatthew Pickering2022-05-301-0/+2
|
* ci: Test bootstrapping in release jobsMatthew Pickering2022-05-301-0/+1
|
* ci: Test the bootstrap without ALEX/HAPPY on pathMatthew Pickering2022-05-301-0/+3
|
* Add release flavour and use it for the release jobsMatthew Pickering2022-05-191-20/+20
| | | | | | | | The release flavour is essentially the same as the perf flavour currently but also enables `-haddock`. I have hopefully updated all the relevant places where the `-perf` flavour was hardcoded. Fixes #21486
* packaging: Introduce CI job for generating hackage documentationMatthew Pickering2022-05-161-0/+34
| | | | | | | | | | | | | | | | | | | | This adds a CI job (hackage-doc-tarball) which generates the necessary tarballs for uploading libraries and documentation to hackage. The release script knows to download this folder and the upload script will also upload the release to hackage as part of the release. The `ghc_upload_libs` script is moved from ghc-utils into .gitlab/ghc_upload_libs There are two modes, preparation and upload. * The `prepare` mode takes a link to a bindist and creates a folder containing the source and doc tarballs ready to upload to hackage. * The `upload` mode takes the folder created by prepare and performs the upload to hackage. Fixes #21493 Related to #21512
* ci: Generate source-tarball in release jobsMatthew Pickering2022-05-061-0/+1
| | | | | We need to distribute the source tarball so we should generate it in the CI pipeline.
* Fix name of windows release bindist in doc-tarball jobMatthew Pickering2022-05-061-1/+1
|
* ci: Add job to check that jobs.yaml is up-to-dateMatthew Pickering2022-05-051-0/+22
| | | | | | | | There have been quite a few situations where jobs.yaml has been out of date. It's better to add a CI job which checks that it's right. We don't want to use a staged pipeline because it obfuscates the structure of the pipeline.
* gitlab-ci: Don't run make job in release pipelinesBen Gamari2022-05-041-1/+1
| | | | (cherry picked from commit 16d6a8ff011f2194485387dcca1c00f8ddcdbdeb)
* ci: Add linting job which checks authors are not GHC CIMatthew Pickering2022-04-271-0/+18
|
* ci: Fix cabal-reinstall jobMatthew Pickering2022-04-271-4/+0
| | | | | | It's quite nice we can do this by mostly deleting code Fixes #21373
* ci: Remove doc-tarball dependency from perf and perf-nofib jobsMatthew Pickering2022-04-091-5/+0
| | | | | These don't depend on the contents of the tarball so we can run them straight after the fedora33 job finishes.
* ci: Fix nightly head.hackage pipelinesMatthew Pickering2022-04-091-1/+15
| | | | | | This also needs a corresponding commit to head.hackage, I also made the job explicitly depend on the fedora33 job so that it isn't blocked by a failing windows job, which causes docs-tarball to fail.
* gitlab-ci: Bump bootstrap compiler to 9.2.2Ben Gamari2022-04-061-3/+4
| | | | | | This is necessary to build recent `text` commits. Bumps Hackage index state for a hashable which builds with GHC 9.2.
* gitlab-ci: Drop dead HACKAGE_INDEX_STATE variableBen Gamari2022-04-061-2/+0
|
* ci: Generate jobs for all normal builds and use hadrian for all buildsMatthew Pickering2022-03-241-877/+87
| | | | | | | | | | | | | | | | | | | | | | | This commit introduces a new script (.gitlab/gen_ci.hs) which generates a yaml file (.gitlab/jobs.yaml) which contains explicit descriptions for all the jobs we want to run. The jobs are separated into three categories: * validate - jobs run on every MR * nightly - jobs run once per day on the master branch * release - jobs for producing release artifacts The generation script is a Haskell program which includes a DSL for specifying the different jobs. The hope is that it's easier to reason about the different jobs and how the variables are merged together rather than the unclear and opaque yaml syntax. The goal is to fix issues like #21190 once and for all.. The `.gitlab/jobs.yaml` can be generated by running the `.gitlab/generate_jobs` script. You have to do this manually. Another consequence of this patch is that we use hadrian for all the validate, nightly and release builds on all platforms.
* gitlab-ci: Use the linters image in hlint jobBen Gamari2022-03-111-1/+1
| | | | | | As the `hlint` executable is only available in the linters image. Fixes #21146.
* ci: Fix save_cache functionwip/linters-stage1Matthew Pickering2022-03-091-1/+1
| | | | | | | | | | | | | | Each interation of saving the cache would copy the whole `cabal` store into a subfolder in the CACHE_DIR rather than copying the contents of the cabal store into the cache dir. This resulted in a cache which looked like: ``` /builds/ghc/ghc/cabal-cache/cabal/cabal/cabal/cabal/cabal/cabal/cabal/cabal/cabal/cabal/ ``` So it would get one layer deeper every CI run and take longer and longer to compress.
* Add 10 minute timeout to linters jobMatthew Pickering2022-03-091-1/+1
|
* Move bootstrap and cabal-reinstall test jobs to nightlywip/night-jobsMatthew Pickering2022-03-081-4/+4
| | | | | CI is creaking under the pressure of too many jobs so attempt to reduce the strain by removing a couple of jobs.
* Replace use of BIN_DIST_PREP_TAR_COMP with BIN_DIST_NAMEMatthew Pickering2022-03-071-7/+5
| | | | | And adds a check to make sure we are not accidently settings BIN_DIST_PREP_TAR_COMP when using hadrian.
* ci: Convert all deb10 make jobs into hadrian jobsMatthew Pickering2022-03-071-151/+139
| | | | | | | | | | | | | | | This is the first step in converting all the CI configs to use hadrian rather than make. (#21129) The metrics increase due to hadrian using --hyperlinked-source for haddock builds. (See #21156) ------------------------- Metric Increase: haddock.Cabal haddock.base haddock.compiler -------------------------