80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/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::"
 |