Skip to content

release

release #82

name: release
on:
workflow_dispatch:
push:
branches:
- main
schedule:
# Run at 4PM UTC every Monday
- cron: '0 16 * * 1'
permissions:
id-token: write
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ssh-key: ${{ secrets.SSH_DEPLOY_KEY }}
- name: Keepalive
uses: gautamkrishnar/keepalive-workflow@v1
- name: Get Version
id: version
run: |
export GIT_VERSION=$(curl -sSL https://api.github.com/repos/git/git/tags | jq -r "[.[].name | select(contains(\"-rc\") | not)] | .[0] | sub(\"v\";\"\")")
echo "GIT_VERSION=${GIT_VERSION}" >> $GITHUB_ENV
echo "Version: ${GIT_VERSION}"
export TAG_EXISTS=$( curl -sSL https://api.github.com/repos/truemark/git-docker/tags | jq -r "[.[].name] | index(\"${GIT_VERSION}\") != null")
echo "TAG_EXISTS=${TAG_EXISTS}" >> $GITHUB_ENV
echo "Exists: ${TAG_EXISTS}"
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: "${{ secrets.AWS_ASSUME_ROLE }}"
aws-region: "us-east-1"
- name: Login to ECR
id: ecr-login
uses: aws-actions/amazon-ecr-login@v1
with:
registry-type: public
- name: Setup Buildx Remote Docker
id: buildx
uses: truemark/aws-buildx-remote-docker-instance-action@v4
with:
security-group-id: "${{ vars.SECURITY_GROUP_ID }}"
subnet-id: "${{ vars.SUBNET_ID }}"
instance-profile: "${{ vars.INSTANCE_PROFILE }}"
region: "us-east-2"
- name: Build amazonlinux-2023
if: ${{ env.TAG_EXISTS != 'true' }}
run: |
docker buildx build \
--push \
--platform linux/arm64,linux/amd64 \
--build-arg OS_VERSION="2023" \
--build-arg GIT_VERSION="${{ env.GIT_VERSION }}" \
-f amazonlinux.Dockerfile \
-t truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2023 \
-t truemark/git:amazonlinux-2023 \
.
- name: Copy ${{ env.GIT_VERSION }}-amazonlinux-2023 to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2023"
dest-image: "docker://public.ecr.aws/truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2023"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Copy amazonlinux-2023 to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:amazonlinux-2023"
dest-image: "docker://public.ecr.aws/truemark/git:amazonlinux-2023"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Build amazonlinux-2022
if: ${{ env.TAG_EXISTS != 'true' }}
run: |
docker buildx build \
--push \
--platform linux/arm64,linux/amd64 \
--build-arg OS_VERSION="2022" \
--build-arg GIT_VERSION="${{ env.GIT_VERSION }}" \
-f amazonlinux.Dockerfile \
-t truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2022 \
-t truemark/git:amazonlinux-2022 \
.
- name: Copy ${{ env.GIT_VERSION }}-amazonlinux-2022 to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2022"
dest-image: "docker://public.ecr.aws/truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2022"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Copy amazonlinux-2022 to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:amazonlinux-2022"
dest-image: "docker://public.ecr.aws/truemark/git:amazonlinux-2022"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Build amazonlinux-2
if: ${{ env.TAG_EXISTS != 'true' }}
run: |
docker buildx build \
--push \
--platform linux/arm64,linux/amd64 \
--build-arg OS_VERSION="2" \
--build-arg GIT_VERSION="${{ env.GIT_VERSION }}" \
-f amazonlinux.Dockerfile \
-t truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2 \
-t truemark/git:amazonlinux-2 \
.
- name: Copy ${{ env.GIT_VERSION }}-amazonlinux-2 to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2"
dest-image: "docker://public.ecr.aws/truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Copy amazonlinux-2 to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:amazonlinux-2"
dest-image: "docker://public.ecr.aws/truemark/git:amazonlinux-2"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Build ubuntu-jammy
if: ${{ env.TAG_EXISTS != 'true' }}
run: |
docker buildx build \
--push \
--platform linux/arm64,linux/amd64 \
--build-arg OS_VERSION="jammy" \
--build-arg GIT_VERSION="${{ env.GIT_VERSION }}" \
-f ubuntu.Dockerfile \
-t truemark/git:${{ env.GIT_VERSION }}-ubuntu-jammy \
-t truemark/git:ubuntu-jammy \
.
- name: Copy ${{ env.GIT_VERSION }}-ubuntu-jammy to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:${{ env.GIT_VERSION }}-ubuntu-jammy"
dest-image: "docker://public.ecr.aws/truemark/git:${{ env.GIT_VERSION }}-ubuntu-jammy"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Copy ubuntu-jammy to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:ubuntu-jammy"
dest-image: "docker://public.ecr.aws/truemark/git:ubuntu-jammy"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Build ubuntu-focal
if: ${{ env.TAG_EXISTS != 'true' }}
run: |
docker buildx build \
--push \
--platform linux/arm64,linux/amd64 \
--build-arg OS_VERSION="focal" \
--build-arg GIT_VERSION="${{ env.GIT_VERSION }}" \
-f ubuntu.Dockerfile \
-t truemark/git:${{ env.GIT_VERSION }}-ubuntu-focal \
-t truemark/git:ubuntu-focal \
.
- name: Copy ${{ env.GIT_VERSION }}-ubuntu-focal to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:${{ env.GIT_VERSION }}-ubuntu-focal"
dest-image: "docker://public.ecr.aws/truemark/git:${{ env.GIT_VERSION }}-ubuntu-focal"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Copy ubuntu-focal to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:ubuntu-focal"
dest-image: "docker://public.ecr.aws/truemark/git:ubuntu-focal"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Build debian-bookworm
if: ${{ env.TAG_EXISTS != 'true' }}
run: |
docker buildx build \
--push \
--platform linux/arm64,linux/amd64 \
--build-arg OS_VERSION="bookworm" \
--build-arg GIT_VERSION="${{ env.GIT_VERSION }}" \
-f debian.Dockerfile \
-t truemark/git:${{ env.GIT_VERSION }}-debian-bookworm \
-t truemark/git:debian-bookworm \
.
- name: Copy ${{ env.GIT_VERSION }}-debian-bookworm to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:${{ env.GIT_VERSION }}-debian-bookworm"
dest-image: "docker://public.ecr.aws/truemark/git:${{ env.GIT_VERSION }}-debian-bookworm"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Copy debian-bookworm to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:debian-bookworm"
dest-image: "docker://public.ecr.aws/truemark/git:debian-bookworm"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Build debian-bullseye
if: ${{ env.TAG_EXISTS != 'true' }}
run: |
docker buildx build \
--push \
--platform linux/arm64,linux/amd64 \
--build-arg OS_VERSION="bullseye" \
--build-arg GIT_VERSION="${{ env.GIT_VERSION }}" \
-f debian.Dockerfile \
-t truemark/git:${{ env.GIT_VERSION }}-debian-bullseye \
-t truemark/git:debian-bullseye \
.
- name: Copy ${{ env.GIT_VERSION }}-debian-bullseye to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:${{ env.GIT_VERSION }}-debian-bullseye"
dest-image: "docker://public.ecr.aws/truemark/git:${{ env.GIT_VERSION }}-debian-bullseye"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Copy debian-bullseye to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:debian-bullseye"
dest-image: "docker://public.ecr.aws/truemark/git:debian-bullseye"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Build alpine-3.17
if: ${{ env.TAG_EXISTS != 'true' }}
run: |
docker buildx build \
--push \
--platform linux/arm64,linux/amd64 \
--build-arg OS_VERSION="3.17" \
--build-arg GIT_VERSION="${GIT_VERSION}" \
-f alpine.Dockerfile \
-t truemark/git:${{ env.GIT_VERSION }}-alpine-3.17 \
-t truemark/git:alpine-3.17 \
.
- name: Copy ${{ env.GIT_VERSION }}-alpine-3.17 to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:${{ env.GIT_VERSION }}-alpine-3.17"
dest-image: "docker://public.ecr.aws/truemark/git:${{ env.GIT_VERSION }}-alpine-3.17"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Copy alpine-3.17 to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:alpine-3.17"
dest-image: "docker://public.ecr.aws/truemark/git:alpine-3.17"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Build alpine-3.16
if: ${{ env.TAG_EXISTS != 'true' }}
run: |
docker buildx build \
--push \
--platform linux/arm64,linux/amd64 \
--build-arg OS_VERSION="3.16" \
--build-arg GIT_VERSION="${GIT_VERSION}" \
-f alpine.Dockerfile \
-t truemark/git:${{ env.GIT_VERSION }}-alpine-3.16 \
-t truemark/git:alpine-3.16 \
.
- name: Copy ${{ env.GIT_VERSION }}-alpine-3.16 to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:${{ env.GIT_VERSION }}-alpine-3.16"
dest-image: "docker://public.ecr.aws/truemark/git:${{ env.GIT_VERSION }}-alpine-3.16"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Copy alpine-3.16 to ECR
if: ${{ env.TAG_EXISTS != 'true' }}
uses: truemark/skopeo-copy-action@v1
with:
src-image: "docker://truemark/git:alpine-3.16"
dest-image: "docker://public.ecr.aws/truemark/git:alpine-3.16"
src-username: "${{ secrets.DOCKER_HUB_USERNAME }}"
src-password: "${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}"
dest-username: "${{ steps.ecr-login.outputs.docker_username_public_ecr_aws }}"
dest-password: "${{ steps.ecr-login.outputs.docker_password_public_ecr_aws }}"
multi-arch: "all"
- name: Package
if: ${{ env.TAG_EXISTS != 'true' }}
run: |
IMAGE="truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2" ARCH="amd64" FILE="git-amazonlinux-2-amd64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2" ARCH="arm64" FILE="git-amazonlinux-2-arm64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2022" ARCH="amd64" FILE="git-amazonlinux-2022-amd64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2022" ARCH="arm64" FILE="git-amazonlinux-2022-arm64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2023" ARCH="amd64" FILE="git-amazonlinux-2023-amd64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-amazonlinux-2023" ARCH="arm64" FILE="git-amazonlinux-2023-arm64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-ubuntu-focal" ARCH="amd64" FILE="git-ubuntu-focal-amd64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-ubuntu-focal" ARCH="arm64" FILE="git-ubuntu-focal-arm64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-ubuntu-jammy" ARCH="amd64" FILE="git-ubuntu-jammy-amd64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-ubuntu-jammy" ARCH="arm64" FILE="git-ubuntu-jammy-arm64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-debian-bookworm" ARCH="amd64" FILE="git-debian-bookworm-amd64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-debian-bookworm" ARCH="arm64" FILE="git-debian-bookworm-arm64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-debian-bullseye" ARCH="amd64" FILE="git-debian-bullseye-amd64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-debian-bullseye" ARCH="arm64" FILE="git-debian-bullseye-arm64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-alpine-3.16" ARCH="amd64" FILE="git-alpine-3.16-amd64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-alpine-3.16" ARCH="arm64" FILE="git-alpine-3.16-arm64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-alpine-3.17" ARCH="amd64" FILE="git-alpine-3.17-amd64.tar.gz" ./getlayer.sh
IMAGE="truemark/git:${{ env.GIT_VERSION }}-alpine-3.17" ARCH="arm64" FILE="git-alpine-3.17-arm64.tar.gz" ./getlayer.sh
- uses: actions/upload-artifact@v3
if: ${{ env.TAG_EXISTS != 'true' }}
with:
name: files
path: |
*.tar.gz
- name: Upload binaries to release
if: ${{ env.TAG_EXISTS != 'true' }}
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file_glob: true
file: |
*.tar.gz
release_name: ${{env.GIT_VERSION}}
tag: ${{env.GIT_VERSION}}
overwrite: true