diff --git a/.vsts-ci.yml b/.vsts-ci.yml index bbb9e8853..55e5c57f5 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -150,6 +150,13 @@ stages: strategy: matrix: ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + Build_Ubuntu_16_04_Debug_x64: + _BuildConfig: Debug + _DockerParameter: '--docker ubuntu.16.04' + _LinuxPortable: '' + _RuntimeIdentifier: '' + _BuildArchitecture: 'x64' + _TestArg: $(_NonWindowsTestArg) Build_Ubuntu_18_04_Debug_x64: _BuildConfig: Debug _DockerParameter: '--docker ubuntu.18.04' @@ -284,7 +291,7 @@ stages: _AdditionalBuildParameters: '/p:HostOSName="linux-musl"' Build_Linux_Portable_Deb_Release_x64: _BuildConfig: Release - _DockerParameter: '--docker ubuntu.18.04' + _DockerParameter: '--docker ubuntu.16.04' _LinuxPortable: '--linux-portable' _RuntimeIdentifier: '' _BuildArchitecture: 'x64' diff --git a/eng/docker/ubuntu.16.04/Dockerfile b/eng/docker/ubuntu.16.04/Dockerfile new file mode 100644 index 000000000..c58504613 --- /dev/null +++ b/eng/docker/ubuntu.16.04/Dockerfile @@ -0,0 +1,65 @@ +# +# Copyright (c) .NET Foundation and contributors. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. +# + +FROM ubuntu:16.04 + +# Install the base toolchain we need to build anything (clang, cmake, make and the like) +# this does not include libraries that we need to compile different projects, we'd like +# them in a different layer. +RUN rm -rf rm -rf /var/lib/apt/lists/* && \ + apt-get clean && \ + apt-get update && \ + apt-get install -y cmake \ + make \ + llvm-3.5 \ + clang-3.5 \ + git \ + curl \ + tar \ + sudo && \ + apt-get clean + +# Install Build Prereqs +RUN apt-get -qqy install \ + debhelper \ + build-essential \ + devscripts && \ + apt-get clean + +# Dependencies for CoreCLR and CoreFX +RUN apt-get install -y libunwind8 \ + libkrb5-3 \ + libicu55 \ + liblttng-ust0 \ + libssl1.0.0 \ + zlib1g \ + libuuid1 \ + liblldb-3.6 && \ + apt-get clean + +# Setup User to match Host User, and give superuser permissions +ARG USER_ID=0 +RUN useradd -m code_executor -u ${USER_ID} -g sudo +RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers + +# With the User Change, we need to change permissions on these directories +RUN chmod -R a+rwx /usr/local +RUN chmod -R a+rwx /home +RUN chmod -R 755 /usr/lib/sudo + +# Set working directory +ARG WORK_DIR +WORKDIR ${WORK_DIR} + +# Set up Azure Artifacts credential provider. +# We download the installer and execute it using ${USER_ID} so that the installer +# put the NuGet plugins in the correct $HOME/.nuget folder. +RUN curl -O https://raw.githubusercontent.com/Microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh +RUN chmod +x ./installcredprovider.sh + +# Set user to the one we just created +USER ${USER_ID} + +RUN ./installcredprovider.sh diff --git a/eng/docker/ubuntu.16.10/Dockerfile b/eng/docker/ubuntu.16.10/Dockerfile new file mode 100644 index 000000000..0497a6fb5 --- /dev/null +++ b/eng/docker/ubuntu.16.10/Dockerfile @@ -0,0 +1,64 @@ +# +# Copyright (c) .NET Foundation and contributors. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. +# + +# Dockerfile that creates a container suitable to build dotnet-cli +FROM ubuntu:16.10 + +# Misc Dependencies for build +RUN apt-get update && \ + apt-get -qqy install \ + curl \ + unzip \ + gettext \ + sudo && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# This could become a "microsoft/coreclr" image, since it just installs the dependencies for CoreCLR (and stdlib) +RUN apt-get update && \ + apt-get -qqy install \ + libunwind8 \ + libkrb5-3 \ + libicu57 \ + liblttng-ust0 \ + libssl1.0.0 \ + zlib1g \ + libuuid1 \ + liblldb-3.5 && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# Install Build Prereqs +RUN apt-get update && \ + apt-get -qqy install \ + debhelper \ + build-essential \ + devscripts \ + git \ + cmake \ + clang-3.5 && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# Use clang as c++ compiler +RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-3.5 100 +RUN update-alternatives --set c++ /usr/bin/clang++-3.5 + +# Setup User to match Host User, and give superuser permissions +ARG USER_ID=0 +RUN useradd -m code_executor -u ${USER_ID} -g sudo +RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers + +# With the User Change, we need to change permissions on these directories +RUN chmod -R a+rwx /usr/local +RUN chmod -R a+rwx /home +RUN chmod -R 755 /usr/lib/sudo + +# Set user to the one we just created +USER ${USER_ID} + +# Set working directory +ARG WORK_DIR +WORKDIR ${WORK_DIR} \ No newline at end of file