Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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"
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 <powershellteam@hotmail.com>" \
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 <powershellteam@hotmail.com>" \
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 vsts-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ stages:
jobs:
- job: CheckForDuplicateTags
pool:
vmImage: ubuntu-16.04
vmImage: ubuntu-18.04
displayName: Check For Duplicate Tags
steps:
- pwsh: Write-Host "##vso[build.updatebuildnumber]$env:BUILD_SOURCEBRANCHNAME-$env:BUILD_SOURCEVERSION-$((get-date).ToString("yyyyMMddhhss"))"
Expand Down