Skip to content

Commit

Permalink
Merge 7.0.0 release changes (PowerShell#382)
Browse files Browse the repository at this point in the history
Co-authored-by: Andrew <[email protected]>
Co-authored-by: Reece Dunham <[email protected]>
  • Loading branch information
3 people authored Feb 28, 2020
1 parent fdaef2d commit 11303d1
Show file tree
Hide file tree
Showing 86 changed files with 1,336 additions and 224 deletions.
24 changes: 14 additions & 10 deletions .dependabot/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,40 +5,44 @@ version: 1
update_configs:
- package_manager: "docker"
directory: "/release/preview/alpine39/dependabot"
update_schedule: "daily"
update_schedule: "weekly"

- package_manager: "docker"
directory: "/release/preview/alpine311/dependabot"
update_schedule: "weekly"

- package_manager: "docker"
directory: "/release/preview/centos8/dependabot"
update_schedule: "daily"
update_schedule: "weekly"

- package_manager: "docker"
directory: "/release/preview/debian10/dependabot"
update_schedule: "daily"
update_schedule: "weekly"

- package_manager: "docker"
directory: "/release/preview/debian11/dependabot"
update_schedule: "daily"
update_schedule: "weekly"

- package_manager: "docker"
directory: "/release/preview/fedora/dependabot"
update_schedule: "daily"
update_schedule: "weekly"

- package_manager: "docker"
directory: "/release/preview/nanoserver1809/dependabot"
update_schedule: "daily"
update_schedule: "weekly"

- package_manager: "docker"
directory: "/release/preview/opensuse423/dependabot"
update_schedule: "daily"
update_schedule: "weekly"

- package_manager: "docker"
directory: "/release/preview/ubuntu18.04/dependabot"
update_schedule: "daily"
update_schedule: "weekly"

- package_manager: "docker"
directory: "/release/preview/windowsservercore/dependabot"
update_schedule: "daily"
update_schedule: "weekly"

- package_manager: "docker"
directory: "/release/preview/alpine38/dependabot"
update_schedule: "daily"
update_schedule: "weekly"
2 changes: 1 addition & 1 deletion .vsts-ci/releasebuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ stages:
displayName: 'Install Pester'

- powershell: |
$yaml = ./build.ps1 -GenerateTagsYaml -Channel stable, preview -StableVersion $(StableVersion) -PreviewVersion $(PreviewVersion) -LtsVersion $(LtsVersion)
$yaml = ./build.ps1 -GenerateTagsYaml -Channel stable, preview, lts -StableVersion $(StableVersion) -PreviewVersion $(PreviewVersion) -LtsVersion $(LtsVersion)
$yaml | Out-File -Encoding ascii -Path ./tagsmetadata.yaml
Get-ChildItem -Path ./tagsmetadata.yaml | Select-Object -ExpandProperty FullName | ForEach-Object {
Write-Host "##vso[artifact.upload containerfolder=artifacts;artifactname=artifacts]$_"
Expand Down
6 changes: 6 additions & 0 deletions release/preview/alpine311/dependabot/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

# Dummy docker image to trigger dependabot PRs

FROM alpine:3.11.3
112 changes: 112 additions & 0 deletions release/preview/alpine311/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

# Docker image file that describes an Alpine3.11 image with PowerShell installed from .tar.gz file(s)

# Define arg(s) needed for the From statement
ARG fromTag=3.11
ARG imageRepo=alpine

FROM ${imageRepo}:${fromTag} AS installer-env

# Define Args for the needed to add the package
ARG PS_VERSION=7.0.0-preview.1
ARG PS_PACKAGE=powershell-${PS_VERSION}-linux-alpine-x64.tar.gz
ARG PS_PACKAGE_URL=https://github.com/PowerShell/PowerShell/releases/download/v${PS_VERSION}/${PS_PACKAGE}
ARG PS_INSTALL_VERSION=7-preview

# Download the Linux tar.gz and save it
ADD ${PS_PACKAGE_URL} /tmp/linux.tar.gz

# define the folder we will be installing PowerShell to
ENV PS_INSTALL_FOLDER=/opt/microsoft/powershell/$PS_INSTALL_VERSION

# Create the install folder
RUN mkdir -p ${PS_INSTALL_FOLDER}

# Unzip the Linux tar.gz
RUN tar zxf /tmp/linux.tar.gz -C ${PS_INSTALL_FOLDER} -v

# Start a new stage so we lose all the tar.gz layers from the final image
FROM ${imageRepo}:${fromTag}

ARG fromTag=3.11

# Copy only the files we need from the previous stage
COPY --from=installer-env ["/opt/microsoft/powershell", "/opt/microsoft/powershell"]

# Define Args and Env needed to create links
ARG PS_INSTALL_VERSION=7-preview
ENV PS_INSTALL_FOLDER=/opt/microsoft/powershell/$PS_INSTALL_VERSION \
\
# Define ENVs for Localization/Globalization
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \
LC_ALL=en_US.UTF-8 \
LANG=en_US.UTF-8 \
# set a fixed location for the Module analysis cache
PSModuleAnalysisCachePath=/var/cache/microsoft/powershell/PSModuleAnalysisCache/ModuleAnalysisCache \
POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-Alpine-${fromTag}

# Install dotnet dependencies and ca-certificates
RUN apk add --no-cache \
ca-certificates \
less \
\
# PSReadline/console dependencies
ncurses-terminfo-base \
\
# .NET Core dependencies
krb5-libs \
libgcc \
libintl \
libssl1.1 \
libstdc++ \
tzdata \
userspace-rcu \
zlib \
icu-libs \
&& apk -X https://dl-cdn.alpinelinux.org/alpine/edge/main add --no-cache \
lttng-ust \
\
# Create the pwsh symbolic link that points to powershell
&& ln -s ${PS_INSTALL_FOLDER}/pwsh /usr/bin/pwsh \
\
# Create the pwsh-preview symbolic link that points to powershell
&& ln -s ${PS_INSTALL_FOLDER}/pwsh /usr/bin/pwsh-preview \
# Give all user execute permissions and remove write permissions for others
&& chmod a+x,o-w ${PS_INSTALL_FOLDER}/pwsh \
# intialize powershell module cache
&& pwsh \
-NoLogo \
-NoProfile \
-Command " \
\$ErrorActionPreference = 'Stop' ; \
\$ProgressPreference = 'SilentlyContinue' ; \
while(!(Test-Path -Path \$env:PSModuleAnalysisCachePath)) { \
Write-Host "'Waiting for $env:PSModuleAnalysisCachePath'" ; \
Start-Sleep -Seconds 6 ; \
}"

# Define args needed only for the labels
ARG PS_VERSION=7.0.0-preview.1
ARG IMAGE_NAME=mcr.microsoft.com/powershell:preview-alpine-3.11
ARG VCS_REF="none"

# Add label last as it's just metadata and uses a lot of parameters
LABEL maintainer="PowerShell Team <[email protected]>" \
readme.md="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" \
description="This Dockerfile will install the latest release of PowerShell." \
org.label-schema.usage="https://github.com/PowerShell/PowerShell/tree/master/docker#run-the-docker-image-you-built" \
org.label-schema.url="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" \
org.label-schema.vcs-url="https://github.com/PowerShell/PowerShell-Docker" \
org.label-schema.name="powershell" \
org.label-schema.vendor="PowerShell" \
org.label-schema.vcs-ref=${VCS_REF} \
org.label-schema.version=${PS_VERSION} \
org.label-schema.schema-version="1.0" \
org.label-schema.docker.cmd="docker run ${IMAGE_NAME} pwsh -c '$psversiontable'" \
org.label-schema.docker.cmd.devel="docker run ${IMAGE_NAME}" \
org.label-schema.docker.cmd.test="docker run ${IMAGE_NAME} pwsh -c Invoke-Pester" \
org.label-schema.docker.cmd.help="docker run ${IMAGE_NAME} pwsh -c Get-Help"

CMD [ "pwsh" ]
14 changes: 14 additions & 0 deletions release/preview/alpine311/getLatestTag.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

# return objects representing the tags we need to base the Alpine image on

# The versions of Alpine we care about, for this dockerfile
$shortTags = @('3.11')

$parent = Join-Path -Path $PSScriptRoot -ChildPath '..'
$repoRoot = Join-Path -path (Join-Path -Path $parent -ChildPath '..') -ChildPath '..'
$modulePath = Join-Path -Path $repoRoot -ChildPath 'tools\getDockerTags'
Import-Module $modulePath

Get-DockerTags -ShortTags $shortTags -Image "alpine" -FullTagFilter '^3.\d\d?$' -OnlyShortTags
15 changes: 15 additions & 0 deletions release/preview/alpine311/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"IsLinux" : true,
"UseLinuxVersion": false,
"PackageFormat": "powershell-${PS_VERSION}-linux-alpine-x64.tar.gz",
"osVersion": "Alpine",
"tagTemplates": [
"#psversion#-alpine-#tag#",
"preview-alpine-#shorttag#"
],
"SkipGssNtlmSspTests": true,
"SubImage": "test-deps",
"TestProperties": {
"size": 165
}
}
60 changes: 60 additions & 0 deletions release/preview/alpine311/test-deps/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Docker image file that describes an Alpine image with PowerShell and test dependencies

ARG BaseImage=mcr.microsoft.com/powershell:alpine-3.11

FROM node:10.18.1-alpine as node

# Do nothing, just added to borrow the already built node files.

FROM ${BaseImage}

ARG fromTag=3.11

ENV NODE_VERSION=10.18.1 \
YARN_VERSION=1.21.1 \
NVM_DIR="/root/.nvm" \
POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-TestDeps-Alpine-${fromTag}

# workaround for Alpine to run in Azure DevOps
ENV NODE_NO_WARNINGS=1

# Copy node and yarn into image
COPY --from=node /usr/local/bin/node /usr/local/bin/node
COPY --from=node /opt/yarn-v${YARN_VERSION} /opt/yarn-v${YARN_VERSION}

RUN apk add --no-cache --virtual .pipeline-deps readline linux-pam \
&& apk add \
bash \
sudo \
shadow \
openssl \
curl \
&& apk del .pipeline-deps \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg

# Define args needed only for the labels
ARG VCS_REF="none"
ARG IMAGE_NAME=mcr.microsoft.com/powershell/test-deps:alpine-3.11
ARG PS_VERSION=6.2.3

LABEL maintainer="PowerShell Team <[email protected]>" \
readme.md="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" \
description="This Dockerfile will install the latest release of PowerShell and tools needed for runing CI/CD container jobs." \
org.label-schema.usage="https://github.com/PowerShell/PowerShell/tree/master/docker#run-the-docker-image-you-built" \
org.label-schema.url="https://github.com/PowerShell/PowerShell/blob/master/docker/README.md" \
org.label-schema.vcs-url="https://github.com/PowerShell/PowerShell-Docker" \
org.label-schema.name="powershell" \
org.label-schema.vendor="PowerShell" \
org.label-schema.version=${PS_VERSION} \
org.label-schema.schema-version="1.0" \
org.label-schema.vcs-ref=${VCS_REF} \
org.label-schema.docker.cmd="docker run ${IMAGE_NAME} pwsh -c '$psversiontable'" \
org.label-schema.docker.cmd.devel="docker run ${IMAGE_NAME}" \
org.label-schema.docker.cmd.test="docker run ${IMAGE_NAME} pwsh -c Invoke-Pester" \
org.label-schema.docker.cmd.help="docker run ${IMAGE_NAME} pwsh -c Get-Help" \
com.azure.dev.pipelines.agent.handler.node.path="/usr/local/bin/node"

# Use PowerShell as the default shell
# Use array to avoid Docker prepending /bin/sh -c
CMD [ "pwsh" ]
19 changes: 19 additions & 0 deletions release/preview/alpine311/test-deps/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"IsLinux" : true,
"UseLinuxVersion": false,
"SkipGssNtlmSspTests": true,
"osVersion": "Alpine ${fromTag}",
"tagTemplates": [
"#tag#"
],
"OptionalTests": [
"test-deps",
"test-deps-musl"
],
"TestProperties": {
"size": 212
},
"TagMapping": {
"^.*-alpine-3.11$" : "preview-alpine-3.11"
}
}
6 changes: 3 additions & 3 deletions release/preview/alpine38/test-deps/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

ARG BaseImage=mcr.microsoft.com/powershell:alpine-3.8

FROM node:10.15.3-alpine as node
FROM node:10.18.1-alpine as node

# Do nothing, just added to borrow the already built node files.

FROM ${BaseImage}

ENV NODE_VERSION=10.15.3 \
YARN_VERSION=1.13.0 \
ENV NODE_VERSION=10.18.1 \
YARN_VERSION=1.21.1 \
NVM_DIR="/root/.nvm" \
POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-TestDeps-Alpine-3.8

Expand Down
6 changes: 3 additions & 3 deletions release/preview/alpine39/test-deps/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

ARG BaseImage=mcr.microsoft.com/powershell:alpine-3.9

FROM node:10.15.3-alpine as node
FROM node:10.18.1-alpine as node

# Do nothing, just added to borrow the already built node files.

FROM ${BaseImage}

ARG fromTag=3.9

ENV NODE_VERSION=10.15.3 \
YARN_VERSION=1.13.0 \
ENV NODE_VERSION=10.18.1 \
YARN_VERSION=1.21.1 \
NVM_DIR="/root/.nvm" \
POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-TestDeps-Alpine-${fromTag}

Expand Down
2 changes: 1 addition & 1 deletion release/preview/debian9/test-deps/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Docker image file that describes an Debian 9image with PowerShell and test dependencies
# Docker image file that describes an Debian 9 image with PowerShell and test dependencies
ARG BaseImage=mcr.microsoft.com/powershell:debian-9

FROM ${BaseImage}
Expand Down
6 changes: 3 additions & 3 deletions release/servicing/alpine/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ ARG imageRepo=alpine
FROM ${imageRepo}:${fromTag} AS installer-env

# Define Args for the needed to add the package
ARG PS_VERSION=6.1.0
ARG PS_VERSION=6.2.0
ARG PS_PACKAGE=powershell-${PS_VERSION}-linux-alpine-x64.tar.gz
ARG PS_PACKAGE_URL=https://github.com/PowerShell/PowerShell/releases/download/v${PS_VERSION}/${PS_PACKAGE}
ARG PS_INSTALL_VERSION=6
Expand All @@ -25,7 +25,7 @@ ENV PS_INSTALL_FOLDER=/opt/microsoft/powershell/$PS_INSTALL_VERSION
RUN mkdir -p ${PS_INSTALL_FOLDER}

# Unzip the Linux tar.gz
RUN tar zxf /tmp/linux.tar.gz -C ${PS_INSTALL_FOLDER}
RUN tar zxf /tmp/linux.tar.gz -C ${PS_INSTALL_FOLDER} -v

# Start a new stage so we lose all the tar.gz layers from the final image
FROM ${imageRepo}:${fromTag}
Expand Down Expand Up @@ -82,7 +82,7 @@ RUN apk add --no-cache \
}"

# Define args needed only for the labels
ARG PS_VERSION=6.1.0
ARG PS_VERSION=6.2.0
ARG IMAGE_NAME=mcr.microsoft.com/powershell:alpine-3.8
ARG VCS_REF="none"

Expand Down
6 changes: 5 additions & 1 deletion release/servicing/alpine/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,9 @@
"tagTemplates": [
"#psversion#-alpine-#tag#"
],
"SkipGssNtlmSspTests": true
"SkipGssNtlmSspTests": true,
"SubImage": "test-deps",
"TestProperties": {
"size": 165
}
}
2 changes: 1 addition & 1 deletion release/servicing/arm32v7/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

FROM arm32v7/ubuntu:bionic

ENV PS_VERSION=6.1.2
ENV PS_VERSION=6.2.3
ENV PS_PACKAGE=powershell-${PS_VERSION}-linux-arm32.tar.gz
ENV PS_PACKAGE_URL=https://github.com/PowerShell/PowerShell/releases/download/v${PS_VERSION}/${PS_PACKAGE}

Expand Down
Loading

0 comments on commit 11303d1

Please sign in to comment.