Skip to content

Commit

Permalink
Feature: Add powershell 7.3 images (#40)
Browse files Browse the repository at this point in the history
  • Loading branch information
joeltimothyoh authored Jun 28, 2023
1 parent b393a76 commit 9b3d9b8
Showing 1 changed file with 101 additions and 22 deletions.
123 changes: 101 additions & 22 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
PS_VERSION: [7.1.4, 7.1.5, 7.2.0, 7.2.1, 7.2.2]
PS_VERSION: [7.1.4, 7.1.5, 7.2.0, 7.2.1, 7.2.2, 7.3]
OS: [alpine]
OS_VARIANT: ['3.11', '3.12', '3.13', '3.14']
OS_VARIANT: ['3.11', '3.12', '3.13', '3.14', '3.15', '3.16', '3.17']
TOOL_VARIANT: [git, git-sudo]
include:
# Base and build image full tag
Expand Down Expand Up @@ -86,18 +86,69 @@ jobs:
- PS_VERSION: 7.1.4
OS: alpine
OS_VARIANT: '3.14'
- PS_VERSION: 7.1.4
OS: alpine
OS_VARIANT: '3.15'
- PS_VERSION: 7.1.4
OS: alpine
OS_VARIANT: '3.16'
- PS_VERSION: 7.1.4
OS: alpine
OS_VARIANT: '3.17'
- PS_VERSION: 7.1.5
OS: alpine
OS_VARIANT: '3.14'
- PS_VERSION: 7.1.5
OS: alpine
OS_VARIANT: '3.15'
- PS_VERSION: 7.1.5
OS: alpine
OS_VARIANT: '3.16'
- PS_VERSION: 7.1.5
OS: alpine
OS_VARIANT: '3.17'
- PS_VERSION: 7.2.0
OS: alpine
OS_VARIANT: '3.15'
- PS_VERSION: 7.2.0
OS: alpine
OS_VARIANT: '3.16'
- PS_VERSION: 7.2.0
OS: alpine
OS_VARIANT: '3.17'
- PS_VERSION: 7.2.1
OS: alpine
OS_VARIANT: '3.11'
- PS_VERSION: 7.2.1
OS: alpine
OS_VARIANT: '3.15'
- PS_VERSION: 7.2.1
OS: alpine
OS_VARIANT: '3.16'
- PS_VERSION: 7.2.1
OS: alpine
OS_VARIANT: '3.17'
- PS_VERSION: 7.2.2
OS: alpine
OS_VARIANT: '3.11'
- PS_VERSION: 7.2.2
OS: alpine
OS_VARIANT: '3.12'
- PS_VERSION: 7.2.2
OS: alpine
OS_VARIANT: '3.15'
- PS_VERSION: 7.2.2
OS: alpine
OS_VARIANT: '3.16'
- PS_VERSION: 7.2.2
OS: alpine
OS_VARIANT: '3.17'
- PS_VERSION: 7.3
OS: alpine
OS_VARIANT: '3.11'
- PS_VERSION: 7.3
OS: alpine
OS_VARIANT: '3.12'
env:
PS_VERSION: ${{ matrix.PS_VERSION }}
OS: ${{ matrix.OS }}
Expand Down Expand Up @@ -147,20 +198,24 @@ jobs:
echo "BUILD_CONTEXT: $BUILD_CONTEXT"
echo "BASE_IMAGE: ${BASE_REGISTRY_NAMESPACE}/${BASE_IMAGE_NAME}:${BASE_TAG_FULL}"
echo "BUILD_IMAGE: ${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}"
time docker pull "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" || true
export BASE_TAG_FULL_REGEX=$( echo "$BASE_TAG_FULL" | rev | sed -rn 's/^-*(.+)/\1/p' | rev )
echo "BASE_TAG_FULL_REGEX: $BASE_TAG_FULL_REGEX"
time docker pull "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" || true
time docker build \
--cache-from "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" \
-t "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" \
--build-arg BASE_IMAGE="${BASE_REGISTRY_NAMESPACE}/${BASE_IMAGE_NAME}:${BASE_TAG_FULL}" \
--cache-from "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" \
-t "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" \
--build-arg BASE_IMAGE="${BASE_REGISTRY_NAMESPACE}/${BASE_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" \
"$BUILD_CONTEXT"
docker tag "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${PS_VERSION}-${OS}-${OS_VARIANT}-${TOOL_VARIANT}"
docker tag "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${PS_VERSION}-${OS}-${OS_VARIANT}-${TOOL_VARIANT}"
if [ "${TAG_LATEST}" = 'true' ]; then
docker tag "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:latest"
docker tag "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:latest"
fi
docker images
docker inspect "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}"
docker inspect "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}"
# Set job variables for later steps
echo "BASE_TAG_FULL_REGEX=$BASE_TAG_FULL_REGEX" >> $GITHUB_ENV
- name: Test image
run: docker run -t --rm --entrypoint pwsh "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" -c '$PSVersionTable'
run: docker run -t --rm --entrypoint pwsh "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" -c '$PSVersionTable'
- name: Push image
if: startsWith(github.ref, 'refs/tags/')
run: docker push -a "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}"
Expand All @@ -171,9 +226,9 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
PS_VERSION: [7.1.4, 7.1.5, 7.2.0, 7.2.1, 7.2.2]
PS_VERSION: [7.1.4, 7.1.5, 7.2.0, 7.2.1, 7.2.2, 7.3]
OS: [ubuntu]
OS_VARIANT: [18.04, 20.04]
OS_VARIANT: [18.04, 20.04, 22.04]
TOOL_VARIANT: [git, git-sudo]
include:
# Base and build image full tag
Expand Down Expand Up @@ -218,11 +273,31 @@ jobs:
OS_VARIANT: 20.04
ARCHIVE: 20220318
# Build image default tagging
- PS_VERSION: 7.2.2
- PS_VERSION: 7.3
OS: ubuntu
OS_VARIANT: 20.04
OS_VARIANT: 22.04
TOOL_VARIANT: git
TAG_LATEST: true
# Excluded configurations
exclude:
- PS_VERSION: 7.1.4
OS: ubuntu
OS_VARIANT: '22.04'
- PS_VERSION: 7.1.5
OS: ubuntu
OS_VARIANT: '22.04'
- PS_VERSION: 7.2.0
OS: ubuntu
OS_VARIANT: '22.04'
- PS_VERSION: 7.2.1
OS: ubuntu
OS_VARIANT: '22.04'
- PS_VERSION: 7.2.2
OS: ubuntu
OS_VARIANT: '22.04'
- PS_VERSION: 7.3
OS: ubuntu
OS_VARIANT: '18.04'
env:
PS_VERSION: ${{ matrix.PS_VERSION }}
OS: ${{ matrix.OS }}
Expand Down Expand Up @@ -272,20 +347,24 @@ jobs:
echo "BUILD_CONTEXT: $BUILD_CONTEXT"
echo "BASE_IMAGE: ${BASE_REGISTRY_NAMESPACE}/${BASE_IMAGE_NAME}:${BASE_TAG_FULL}"
echo "BUILD_IMAGE: ${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}"
time docker pull "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" || true
export BASE_TAG_FULL_REGEX=$( echo "$BASE_TAG_FULL" | rev | sed -rn 's/^-*(.+)/\1/p' | rev )
echo "BASE_TAG_FULL_REGEX: $BASE_TAG_FULL_REGEX"
time docker pull "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" || true
time docker build \
--cache-from "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" \
-t "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" \
--build-arg BASE_IMAGE="${BASE_REGISTRY_NAMESPACE}/${BASE_IMAGE_NAME}:${BASE_TAG_FULL}" \
--cache-from "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" \
-t "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" \
--build-arg BASE_IMAGE="${BASE_REGISTRY_NAMESPACE}/${BASE_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" \
"$BUILD_CONTEXT"
docker tag "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${PS_VERSION}-${OS}-${OS_VARIANT}-${TOOL_VARIANT}"
docker tag "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${PS_VERSION}-${OS}-${OS_VARIANT}-${TOOL_VARIANT}"
if [ "${TAG_LATEST}" = 'true' ]; then
docker tag "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:latest"
docker tag "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:latest"
fi
docker images
docker inspect "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}"
docker inspect "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}"
# Set job variables for later steps
echo "BASE_TAG_FULL_REGEX=$BASE_TAG_FULL_REGEX" >> $GITHUB_ENV
- name: Test image
run: docker run -t --rm --entrypoint pwsh "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BUILD_TAG_FULL}" -c '$PSVersionTable'
run: docker run -t --rm --entrypoint pwsh "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}:${BASE_TAG_FULL_REGEX}" -c '$PSVersionTable'
- name: Push image
if: startsWith(github.ref, 'refs/tags/')
run: docker push -a "${BUILD_REGISTRY_NAMESPACE}/${BUILD_IMAGE_NAME}"
Expand Down

0 comments on commit 9b3d9b8

Please sign in to comment.