Skip to content
Snippets Groups Projects
Commit 9ba84552 authored by Cheng Shao's avatar Cheng Shao :beach:
Browse files

ci: multi-project pipeline for wasm

(cherry picked from commit 3655c3fd)
(cherry picked from commit b6d5cce5)
(cherry picked from commit 48eeb1fa)
parent 763e92b8
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@ variables:
GIT_SSL_NO_VERIFY: "1"
# Commit of ghc/ci-images repository from which to pull Docker images
DOCKER_REV: efc1ab81236eb37e20cb287ec77aebb6c6341098
DOCKER_REV: eb4d3389fd62e4f7321a0c8799014ec1f4da0708
# Sequential version number of all cached things.
# Bump to invalidate GitLab CI cache.
......@@ -78,6 +78,7 @@ workflow:
- if: '$CI_COMMIT_BRANCH == "master"'
- if: '$CI_COMMIT_BRANCH =~ /ghc-[0-9]+\.[0-9]+/'
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: $CI_PIPELINE_SOURCE == "pipeline"
# which versions of GHC to allow bootstrap with
.bootstrap_matrix : &bootstrap_matrix
......@@ -203,30 +204,6 @@ ghc-linters:
- if: $CI_MERGE_REQUEST_ID
- *drafts-can-fail-lint
# Run mypy Python typechecker on linter scripts.
lint-linters:
image: "registry.gitlab.haskell.org/ghc/ci-images/linters:$DOCKER_REV"
extends: .lint
script:
- mypy testsuite/tests/linters/regex-linters/*.py
dependencies: []
# Check that .T files all parse by listing broken tests.
lint-testsuite:
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb9:$DOCKER_REV"
extends: .lint
script:
- make -Ctestsuite list_broken TEST_HC=$GHC
dependencies: []
# Run mypy Python typechecker on testsuite driver
typecheck-testsuite:
image: "registry.gitlab.haskell.org/ghc/ci-images/linters:$DOCKER_REV"
extends: .lint
script:
- mypy testsuite/driver/runtests.py
dependencies: []
# We allow the submodule checker to fail when run on merge requests (to
# accommodate, e.g., haddock changes not yet upstream) but not on `master` or
# Marge jobs.
......@@ -263,49 +240,6 @@ lint-author:
- if: $CI_MERGE_REQUEST_ID
- *drafts-can-fail-lint
lint-ci-config:
image: nixos/nix:2.12.0
extends: .lint
# We don't need history/submodules in this job
variables:
GIT_DEPTH: 1
GIT_SUBMODULE_STRATEGY: none
before_script:
- echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf
- nix-channel --update
script:
- .gitlab/generate_jobs
# 1 if .gitlab/generate_jobs changed the output of the generated config
- nix shell nixpkgs#git -c git diff --exit-code
dependencies: []
lint-submods:
extends: .lint-submods
# Allow failure on merge requests since any necessary submodule patches may
# not be upstreamed yet.
rules:
- if: '$CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/'
allow_failure: false
# Don't run on nightly because the program needs a base commit to check.
- if: $NIGHTLY
when: never
- allow_failure: true
lint-submods-branch:
extends: .lint-submods
variables:
BUILD_FLAVOUR: default
script:
- .gitlab/ci.sh configure
- .gitlab/ci.sh run_hadrian stage0:exe:lint-submodule-refs
- "echo Linting submodule changes between $CI_COMMIT_BEFORE_SHA..$CI_COMMIT_SHA"
- git submodule foreach git remote update
- _build/stageBoot/bin/lint-submodule-refs . $(git rev-list $CI_COMMIT_BEFORE_SHA..$CI_COMMIT_SHA)
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
- if: '$CI_COMMIT_BRANCH =~ /ghc-[0.9]+\.[0-9]+/'
- *drafts-can-fail-lint
############################################################
# GHC source code linting
############################################################
......@@ -329,17 +263,6 @@ lint-submods-branch:
paths:
- cabal-cache
hlint-ghc-and-base:
extends: .lint-params
image: "registry.gitlab.haskell.org/ghc/ci-images/linters:$DOCKER_REV"
variables:
BUILD_FLAVOUR: default
script:
- .gitlab/ci.sh setup
- .gitlab/ci.sh configure
- .gitlab/ci.sh run_hadrian lint:base
- .gitlab/ci.sh run_hadrian lint:compiler
############################################################
# GHC-in-GHCi (Hadrian)
############################################################
......@@ -347,10 +270,8 @@ hlint-ghc-and-base:
hadrian-ghc-in-ghci:
stage: quick-build
needs:
- job: lint-linters
- job: lint-submods
optional: true
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV"
- only-wasm
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb12:$DOCKER_REV"
before_script:
# workaround for docker permissions
- sudo chown ghc:ghc -R .
......@@ -425,21 +346,6 @@ hadrian-multi:
paths:
- cabal-cache
############################################################
# stack-hadrian-build
############################################################
# Verify that Hadrian builds with stack. Note that we don't actually perform a
# build of GHC itself; we merely test that the Hadrian executable builds and
# works (by invoking `hadrian --version`).
stack-hadrian-build:
extends: hadrian-ghc-in-ghci
stage: quick-build
script:
- .gitlab/ci.sh setup
- .gitlab/ci.sh configure
- hadrian/build-stack --version
####################################
# Testing reinstallable ghc codepath
####################################
......@@ -1089,3 +995,33 @@ ghcup-metadata-testing-release:
rules:
- if: '$RELEASE_JOB == "yes"'
when: manual
only-wasm:
stage: quick-build
image: nixos/nix:2.25.3
tags:
- x86_64-linux
needs: []
variables:
GIT_STRATEGY: none
KEEP_JOB_NAME: x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static
before_script:
- echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf
- echo "cores = $CPUS" >> /etc/nix/nix.conf
- echo "max-jobs = $CPUS" >> /etc/nix/nix.conf
- nix run nixpkgs#gnused -- -i -e 's/ nixbld//' /etc/nix/nix.conf
script:
- nix run nixpkgs#deno -- run --allow-env --allow-net https://gist.githubusercontent.com/TerrorJack/e0e886b87b9bfffb6c5fa5b3aeddcecc/raw/09a066e2f9b53c82f1a5bf099cd9375f5ff2cbae/cancel.js
ghc-wasm-meta-ci:
stage: testing
needs:
- job: x86_64-linux-alpine3_20-wasm-cross_wasm32-wasi-release+host_fully_static
artifacts: false
variables:
UPSTREAM_GHC_FLAVOUR: "9.6"
UPSTREAM_GHC_PIPELINE_ID: $CI_PIPELINE_ID
UPSTREAM_WASI_SDK_PIPELINE_ID: $UPSTREAM_WASI_SDK_PIPELINE_ID
trigger:
project: haskell-wasm/ghc-wasm-meta
branch: master
......@@ -239,6 +239,13 @@ function set_toolchain_paths() {
export ALEX
if [[ "${CROSS_TARGET:-}" == *"wasm"* ]]; then
if [[ ! -f ~/.ghc-wasm/.flag ]]; then
pushd "$(mktemp -d)"
curl -f -L --retry 5 https://gitlab.haskell.org/haskell-wasm/ghc-wasm-meta/-/archive/master/ghc-wasm-meta-master.tar.gz | tar xz --strip-components=1
SKIP_GHC=1 ./setup.sh
popd
touch ~/.ghc-wasm/.flag
fi
source "/home/ghc/.ghc-wasm/env"
fi
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment