Skip to content
Open
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
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
version: 2
updates:
- package-ecosystem: docker
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10
18 changes: 0 additions & 18 deletions .github/workflows/dockerimage.yml

This file was deleted.

22 changes: 22 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Docker Image CI

on:
pull_request:
branches: [main]
push:
branches: '*'


jobs:
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Install jq
run: |
sudo apt-get update
sudo apt-get install --yes jq
- name: Build a local container image
run: |
./containerize.sh
- run: ./containerize.sh -q
36 changes: 36 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Docker Image CI

on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+*'

jobs:
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Install jq
run: |
sudo apt-get update
sudo apt-get install --yes jq
- name: Create Registry File
run: |
export REGISTRY=$(cat <<EOF | jq '.'
{"registries": [
{"uri": "https://docker.pkg.github.com",
"secrets":
{"DOCKER_USR": "\$GITHUB_ACTOR",
"DOCKER_PW": "\$GH_TOKEN"}
}]}
EOF
)
echo $REGISTRY
echo $REGISTRY > registry.json
- name: Show Registry Info
run: cat registry.json
- name: Build the Docker image
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
./containerize.sh -p -f registry.json
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
.idea/
.dev/
registry.json
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ RUN apk add --no-cache --update \
moreutils \
openssh \
python3 \
py3-pip \
tar \
unzip

Expand Down
47 changes: 37 additions & 10 deletions containerize.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ show_help() {
}

sanitize() {
echo $1 | sed -e 's/(//g' -e 's/#/__/g' -e 's/ /--/g' | tr '[:upper:]' '[:lower:]' | xargs
echo $1 | sed -e 's/(//g' -e 's/#/__/g' -e 's/ /--/g' -e 's/^[._]*//' -e 's|/[._]*|/|g' | tr '[:upper:]' '[:lower:]' | xargs
}

name_repo() {
Expand Down Expand Up @@ -54,15 +54,25 @@ name_version() {
if [ -n "$CIRCLE_PULL_REQUEST" ] ; then
version=pr${CIRCLE_PULL_REQUEST##*/}
fi
if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
local pr_id=$(echo ${GITHUB_REF} | sed -e 's|/merge||g' -e 's|refs/pull/||g')
version=pr${pr_id}
fi
if [ -z $version ] ; then
version=$(echo $DRONE_TAG | xargs)
fi
if [ -z $version ] ; then
version=$(echo $CIRCLE_TAG | xargs)
fi
if [ -z $version ] && [[ "$GITHUB_REF" =~ "refs/tags/" ]]; then
version=$(echo ${GITHUB_REF##*/} | xargs)
fi
if [ -z $version ] && [ -n $DRONE_BRANCH ] ; then
version=$(echo $DRONE_BRANCH | xargs)
fi
if [ -z $version ] && [[ "$GITHUB_REF" =~ "refs/heads/" ]]; then
version=$(echo ${GITHUB_REF##*/} | xargs)
fi
if [ -z $version ] ; then
version=$(git branch | grep '\*' | awk '{print $2}')
fi
Expand Down Expand Up @@ -188,7 +198,13 @@ login() {
if [ "$is_aws" = true ]; then
login_aws_create_repo "$registry" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" "$repo" "$region"
else
login_reg_create_repo "$registry" "$DOCKER_USR" "$DOCKER_PW" "$repo"
(
set +e
login_reg "$registry" "$DOCKER_USR" "$DOCKER_PW"
if [[ $? -ne 0 ]]; then
login_reg_create_repo "$registry" "$DOCKER_USR" "$DOCKER_PW" "$repo"
fi
)
fi
}

Expand All @@ -209,7 +225,7 @@ login_reg() {
fi

echo "Attempt login to $registry"
docker login -u "$docker_user" -p "$docker_pw" "$registry"
login=$(echo "$docker_pw" | docker login -u "$docker_user" --password-stdin "$registry")
}

login_reg_create_repo() {
Expand All @@ -232,7 +248,7 @@ login_reg_create_repo() {
fi

echo "Attempt login to $registry"
login=$(docker login -u "$docker_user" -p "$docker_pw" "$registry")
login=$(echo "$docker_pw" | docker login -u "$docker_user" --password-stdin "$registry")
if [ $? -ne 0 ]; then
return 1
fi
Expand Down Expand Up @@ -360,9 +376,11 @@ publish () {
local registry
local branch
local version2
local image_name
registry_info="$1"
repo="$2"
version="$3"
image_name=
registry=$(echo "$registry_info" | jq -r .uri)

export_image $repo:$version
Expand All @@ -372,16 +390,25 @@ publish () {
return
fi

docker tag $repo:$version $registry/$repo:$version > /dev/null
docker push $registry/$repo:$version > /dev/null && echo "Published $registry/$repo:$version"
docker rmi $registry/$repo:$version > /dev/null || true
if [[ "$registry" =~ "github.com" ]]; then
# TODO: use Dockerfile extension
image_name="/${repo##*/}"
fi

if [[ "$registry" =~ "https://" ]]; then
registry=$(sed -e"s|https://||g" <<< $registry)
fi

docker tag $repo:$version $registry/${repo}${image_name}:$version > /dev/null
docker push $registry/$repo${image_name}:$version > /dev/null && echo "Published $registry/$repo${image_name}:$version"
docker rmi $registry/$repo${image_name}:$version > /dev/null || true

branch="${version%%-*}"
version2="${version/$branch/latest}"
if [ "$branch" = "master" ] ; then
docker tag $repo:$version $registry/$repo:$version2 > /dev/null
docker push $registry/$repo:$version2 > /dev/null && echo "Published $registry/$repo:$version2"
docker rmi $registry/$repo:$version2 > /dev/null || true
docker tag $repo:$version $registry/$repo${image_name}:$version2 > /dev/null
docker push $registry/$repo${image_name}:$version2 > /dev/null && echo "Published $registry/$repo${image_name}:$version2"
docker rmi $registry/$repo${image_name}:$version2 > /dev/null || true
fi
}

Expand Down