mirror of
https://github.com/docker/build-push-action.git
synced 2024-11-16 11:33:50 +08:00
80 lines
1.8 KiB
Bash
80 lines
1.8 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
set -eu
|
||
|
|
||
|
: "${HARBOR_VERSION:=v2.7.0}"
|
||
|
: "${HARBOR_HOST:=localhost}"
|
||
|
: "${HARBOR_PORT:=49154}"
|
||
|
: "${REGISTRY_USER:=admin}"
|
||
|
: "${REGISTRY_PASSWORD:=Harbor12345}"
|
||
|
|
||
|
: "${HARBOR_PROJECT:=test-docker-action}"
|
||
|
|
||
|
project_post_data() {
|
||
|
cat <<EOF
|
||
|
{
|
||
|
"project_name": "$HARBOR_PROJECT",
|
||
|
"public": true
|
||
|
}
|
||
|
EOF
|
||
|
}
|
||
|
|
||
|
export TERM=xterm
|
||
|
|
||
|
# download
|
||
|
echo "::group::Downloading Harbor $HARBOR_VERSION"
|
||
|
(
|
||
|
cd /tmp
|
||
|
set -x
|
||
|
wget -q "https://github.com/goharbor/harbor/releases/download/${HARBOR_VERSION}/harbor-offline-installer-${HARBOR_VERSION}.tgz" -O harbor-online-installer.tgz
|
||
|
tar xvf harbor-online-installer.tgz
|
||
|
)
|
||
|
echo "::endgroup::"
|
||
|
|
||
|
# config
|
||
|
echo "::group::Configuring Harbor"
|
||
|
(
|
||
|
cd /tmp/harbor
|
||
|
set -x
|
||
|
cp harbor.yml.tmpl harbor.yml
|
||
|
harborConfig="$(harborHost="$HARBOR_HOST" harborPort="$HARBOR_PORT" harborPwd="$REGISTRY_PASSWORD" yq --no-colors '.hostname = env(harborHost) | .http.port = env(harborPort) | .harbor_admin_password = env(harborPwd) | del(.https)' harbor.yml)"
|
||
|
tee harbor.yml <<<"$harborConfig" >/dev/null
|
||
|
yq --no-colors harbor.yml
|
||
|
)
|
||
|
echo "::endgroup::"
|
||
|
|
||
|
# install and start
|
||
|
echo "::group::Installing Harbor"
|
||
|
(
|
||
|
cd /tmp/harbor
|
||
|
set -x
|
||
|
./install.sh
|
||
|
sleep 10
|
||
|
netstat -aptn
|
||
|
)
|
||
|
echo "::endgroup::"
|
||
|
|
||
|
# compose config
|
||
|
echo "::group::Compose config"
|
||
|
(
|
||
|
cd /tmp/harbor
|
||
|
set -x
|
||
|
docker compose config
|
||
|
)
|
||
|
echo "::endgroup::"
|
||
|
|
||
|
# create project
|
||
|
echo "::group::Creating project"
|
||
|
(
|
||
|
set -x
|
||
|
curl --fail -v -k --max-time 10 -u "$REGISTRY_USER:$REGISTRY_PASSWORD" -X POST -H "Content-Type: application/json" -d "$(project_post_data)" "http://$HARBOR_HOST:$HARBOR_PORT/api/v2.0/projects"
|
||
|
)
|
||
|
echo "::endgroup::"
|
||
|
|
||
|
# list projects
|
||
|
echo "::group::List projects"
|
||
|
(
|
||
|
set -x
|
||
|
curl --fail -s -k --max-time 10 -u "$REGISTRY_USER:$REGISTRY_PASSWORD" -H "Content-Type: application/json" "http://$HARBOR_HOST:$HARBOR_PORT/api/v2.0/projects" | jq
|
||
|
)
|
||
|
echo "::endgroup::"
|