summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Matuszewski <igor@sequoia-pgp.org>2020-10-01 14:22:45 +0200
committerIgor Matuszewski <igor@sequoia-pgp.org>2020-10-04 19:38:19 +0200
commitfbd17c8954f5b9c057c31d23e72d6606fd04662e (patch)
treea7a6754ae45cc93fb24c29ea32cf010348992bba
parent3329472eca9c78d7be9b979e6dca3361cf444da1 (diff)
ci: Use our pre-built docker images for testing Windows
These come with preinstalled with either Visual C++ Build Tools (MSVC) or other dependencies, e.g. clang or nettle (GNU). Installing these dependencies take significant amount of time so let's only do it once and only run relevant checks in the CI/CD pipeline.
-rw-r--r--.gitlab-ci.yml70
-rw-r--r--.gitlab-ci/test-msys2.sh55
2 files changed, 16 insertions, 109 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b7a16594..71917687 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -77,7 +77,8 @@ windows-gnu:
- win
- win2019
stage: build
- # This job takes ~40 minutes to run, let's only execute it manually or for
+ image: registry.gitlab.com/sequoia-pgp/build-docker-image/windows-gnu
+ # This job takes ~20 minutes to run, let's only execute it manually or for
# scheduled builds, otherwise this will stall MRs often not related to Windows
only:
- /windows/i # refs containing 'windows' keyword
@@ -85,69 +86,30 @@ windows-gnu:
- web
- scheduled
before_script:
- - $env:USERNAME
- - $env:USERPROFILE
- # Install Rust 1.40
- - $env:CARGO_HOME = "$env:ProgramFiles\cargo"
- - $env:RUSTUP_HOME = "$env:ProgramFiles\rustup"
- - Invoke-WebRequest https://win.rustup.rs -OutFile rustup-init.exe
- - .\rustup-init.exe -y --default-toolchain 1.46.0 --default-host x86_64-pc-windows-gnu --profile minimal
- - $env:Path += ";$env:ProgramFiles\cargo\bin"
- - rustup --version
- - rustc --version --verbose
- # Install chocolatey
- - Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
- # Install MSYS2/mingw-w64
- - choco install msys2 -y
- - $env:Path += ";C:\tools\msys64"
- - $env:MSYSTEM = "MINGW64"
- - $env:MSYS = "winsymlinks:nativestrict"
- - $env:MSYS2_PATH_TYPE = "inherit" # Inherit PATH from Windows
- - $env:CHERE_INVOKING = "1" # Inherit working directory
- - $env:CFLAGS = "" # Disregard C warnings due to MinGW being funky
- script: C:/tools/msys64/usr/bin/bash.exe -l -c "bash -x ./.gitlab-ci/test-msys2.sh"
+ - clang -v
+ - rustc --version --verbose
+ - cargo --version
+ script:
+ - cargo test --all --exclude sequoia-openpgp-ffi
+ # https://github.com/rust-lang/cargo/issues/5015
+ - cargo test --manifest-path openpgp/Cargo.toml --no-default-features --features crypto-cng,compression
after_script: []
+ variables:
+ CFLAGS: '' # Silence some C warnings when compiling under Windows
windows-msvc:
tags:
- win
- win2019
stage: build
- # This job takes ~40 minutes to run, let's only execute it manually or for
- # scheduled builds, otherwise this will stall MRs often not related to Windows
- only:
- - /windows/i # refs containing 'windows' keyword
- - tags
- - web
- - scheduled
+ image: registry.gitlab.com/sequoia-pgp/build-docker-image/windows-msvc
before_script:
- - $env:USERNAME
- - $env:USERPROFILE
- # Install VS 2019 VC++ Build Tools (Required for Rust on Windows)
- - Get-Date
- - Invoke-WebRequest https://aka.ms/vs/16/release/vs_buildtools.exe -OutFile vs_buildtools.exe
- # Wait until the VC++ Build Tools installation is completed.
- # See https://github.com/MicrosoftDocs/visualstudio-docs/issues/970
- - >
- $exitCode = Start-Process
- -FilePath vs_buildtools.exe
- -ArgumentList "--norestart", "--quiet", "--nocache", "--add", "Microsoft.VisualStudio.Workload.VCTools", "--includeRecommended", "--wait"
- -Wait
- -PassThru
- # Install Rust 1.40
- - Get-Date
- - $env:CARGO_HOME = "$env:ProgramFiles\cargo"
- - $env:RUSTUP_HOME = "$env:ProgramFiles\rustup"
- - Invoke-WebRequest https://win.rustup.rs -OutFile rustup-init.exe
- - .\rustup-init.exe -y --default-toolchain 1.46.0 --default-host x86_64-pc-windows-msvc --profile minimal
- - $env:Path += ";$env:ProgramFiles\cargo\bin"
- - Get-Date
- - rustup --version
- - rustc --version --verbose
+ - rustc --version --verbose
+ - cargo --version
script:
- - cd openpgp
+ - cargo check --all --exclude sequoia-openpgp-ffi
# https://github.com/rust-lang/cargo/issues/5015
- - cargo test --no-default-features --features compression,crypto-cng
+ - cargo test --manifest-path openpgp/Cargo.toml --no-default-features --features crypto-cng,compression
after_script: []
variables:
CFLAGS: '' # Silence some C warnings when compiling with MSVC
diff --git a/.gitlab-ci/test-msys2.sh b/.gitlab-ci/test-msys2.sh
deleted file mode 100644
index e4d4fc16..00000000
--- a/.gitlab-ci/test-msys2.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/bash
-set -e
-
-# TODO: Currently, the CI times out at 1hr when downloading mingw-w64 packages
-# (mainly Clang and LLVM). Until that's resolved, just test the
-# `sequoia_openpgp` crate using the CNG backend
-
-# FIXME: Try to mitigate the download speed by sorting the mirrors by fastest
-cat /etc/pacman.d/mirrorlist.msys
-cat /etc/pacman.d/mirrorlist.mingw64
-
-cp /etc/pacman.d/mirrorlist.msys /etc/pacman.d/mirrorlist.msys.backup
-rankmirrors /etc/pacman.d/mirrorlist.msys.backup > /etc/pacman.d/mirrorlist.msys
-
-cp /etc/pacman.d/mirrorlist.mingw64 /etc/pacman.d/mirrorlist.mingw64.backup
-rankmirrors /etc/pacman.d/mirrorlist.mingw64.backup > /etc/pacman.d/mirrorlist.mingw64
-
-cat /etc/pacman.d/mirrorlist.msys
-cat /etc/pacman.d/mirrorlist.mingw64
-
-date
-pacman --noconfirm -S --needed \
- base-devel \
- mingw-w64-x86_64-toolchain \
- mingw-w64-x86_64-bzip2
- # mingw-w64-x86_64-nettle \
- # mingw-w64-x86_64-sqlite3 \
- # mingw-w64-x86_64-capnproto \
- # mingw-w64-x86_64-clang
-# ^^ It's worth noting that for Rust < 1.40, bindgen has problem picking up
-# correct libclang. This is tested and working for clang 9 but if that
-# stops for any reason (newer versions), we'd need to download a specific
-# version from repo.msys2.org/mingw/x86_64/ and install it manually.
-
-# clang --version
-gcc --version
-
-date
-cd openpgp
-# https://github.com/rust-lang/cargo/issues/5015
-cargo test --no-default-features --features crypto-cng,compression
-
-# # Ensure everything compiles but leave FFI tests for now
-# cargo check --all --all-targets
-# cargo test -v \
-# -p buffered-reader \
-# -p sequoia-ipc \
-# -p sequoia-openpgp \
-# -p sequoia-sqv \
-# -p sequoia-autocrypt \
-# -p sequoia-core \
-# -p sequoia-net \
-# -p sequoia-store
-# # -p sequoia-ffi \
-# # -p sequoia-openpgp-ffi \