forked from toolshed/abra-bash
		
	Compare commits
	
		
			126 Commits
		
	
	
		
			command_he
			...
			fix-subcom
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 35d5df14aa | |||
| 7557966c98 | |||
| fa5d3ae3a1 | |||
| d68444be9e | |||
| f7bc8efabe | |||
| f5284ba725 | |||
| 293d3ff558 | |||
| c00319ab01 | |||
| 8b4141670c | |||
| 23c852125d | |||
| b4eae2e5e5 | |||
| 9e953319cf | |||
| 0814fa9146 | |||
| 0e1b6c858b | |||
| 28618bd3ac | |||
| b04bfea1c7 | |||
| bc0ef0d6fc | |||
| 16c91fedd1 | |||
| 9f5945094c | |||
| 76513a1f35 | |||
| 86eb8d7fde | |||
| e31b3d3173 | |||
| 58b13d7528 | |||
| b0fca49ecb | |||
| 79dacf557e | |||
| d6caf03301 | |||
| 9b90712d28 | |||
| 1dd3fe6fcd | |||
| 29953c17d9 | |||
| 3b59adfe34 | |||
| 00c8a988e1 | |||
| 524fb6a44c | |||
| e99bedf9e4 | |||
| 0d98c442a2 | |||
| bcc15ecdb0 | |||
| a617629a7a | |||
| f7ae400eb3 | |||
| 7141d364e1 | |||
| 057ce223f1 | |||
| 7511b25e47 | |||
| 62b447d61f | |||
| 88d2a75575 | |||
| 8cb6617a0f | |||
| 1a649c56cb | |||
| fd655274f8 | |||
| 946d1a068d | |||
| e8651976ca | |||
| af52ba1fec | |||
| 499c08c374 | |||
| 08281891a1 | |||
| 5bce042922 | |||
| 3276c9fe47 | |||
| 040374e781 | |||
| 621c8cd5c4 | |||
| 7434b67c34 | |||
| 17306a753b | |||
| 2e3f4cabd8 | |||
| cf2308cdd7 | |||
| eec49d6dd1 | |||
| d6195ad6d7 | |||
| fd04c5a6e9 | |||
| 1c9d7282b2 | |||
| dd9c485c66 | |||
| 99ab5bf369 | |||
| 25a0afed65 | |||
| 44e22db11b | |||
| 3321010089 | |||
| e04c4626f2 | |||
| 65ce949e03 | |||
| 5931cbd791 | |||
| 0bbff91722 | |||
| 7f5e753dfd | |||
| d3776f4424 | |||
| 544c4e86ba | |||
| 516309b478 | |||
| dfd7e29a30 | |||
| bb30fa28da | |||
| 044de5824b | |||
| 00cdce7bd2 | |||
| f163d4b0fa | |||
| e0032fb74a | |||
| 152dfe9349 | |||
| 5a95ae97a0 | |||
| 98e674b8e8 | |||
| b655cf20be | |||
| 5bc702bf96 | |||
| 4bd842db66 | |||
| a8f7faddb9 | |||
| e5b2a426f0 | |||
| 29b22fe162 | |||
| c082645da0 | |||
| 156d5d8fba | |||
| d2cdb11fcc | |||
| cef06a82a6 | |||
| 9a630a0440 | |||
| 1c6651b18b | |||
| 5f7df4694f | |||
| 7feeab24ec | |||
| 1a6688cfbf | |||
| f90e1d154c | |||
| 6cc265e931 | |||
| 854ae23f60 | |||
| 43e7672725 | |||
| 4e913c426d | |||
| 8a08de51e4 | |||
| 1c7a51bce1 | |||
| 5d84cef63c | |||
| eda5198904 | |||
| a4a3dccd66 | |||
| a2d249e3a1 | |||
| dc83baea12 | |||
| d6b4a4744f | |||
| 6ba2657dc1 | |||
| ac6b805cbf | |||
| d4e52a9de3 | |||
| aa59c1ad43 | |||
| 36f1d679ae | |||
| f5c8ee1136 | |||
| 9a17817cc8 | |||
| b2e3292453 | |||
| 13fafb5929 | |||
| 114f99ae2e | |||
| fff4b10a41 | |||
| ab1353603d | |||
| 1600b6277f | |||
| b79e35f982 | 
							
								
								
									
										22
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								.drone.yml
									
									
									
									
									
								
							| @ -8,26 +8,36 @@ steps: | |||||||
|       - shellcheck abra |       - shellcheck abra | ||||||
|  |  | ||||||
|   - name: run unit tests |   - name: run unit tests | ||||||
|     image: docker:dind |     image: decentral1se/docker-dind-bats-kcov | ||||||
|     commands: |     commands: | ||||||
|       - apk add bats git bash |  | ||||||
|       - bats tests |       - bats tests | ||||||
|  |  | ||||||
|   - name: collect code coverage |   - name: collect code coverage | ||||||
|     failure: ignore  # until we fix this |     failure: ignore # until we fix this | ||||||
|     image: kcov/kcov:38 |     image: decentral1se/docker-dind-bats-kcov | ||||||
|     commands: |     commands: | ||||||
|       - apt update && apt install -y bats git bash |  | ||||||
|       - kcov . bats tests || true |       - kcov . bats tests || true | ||||||
|  |  | ||||||
|   - name: send code coverage report to codecov |   - name: send code coverage report to codecov | ||||||
|     failure: ignore  # until we fix this |     failure: ignore # until we fix this | ||||||
|     image: plugins/codecov |     image: plugins/codecov | ||||||
|     settings: |     settings: | ||||||
|       token: |       token: | ||||||
|         from_secret: codecov_token |         from_secret: codecov_token | ||||||
|         required: true |         required: true | ||||||
|  |  | ||||||
|  |   - name: notify rocket chat | ||||||
|  |     image: plugins/slack | ||||||
|  |     settings: | ||||||
|  |       webhook: | ||||||
|  |         from_secret: rc_builds_url | ||||||
|  |       username: comradebritney | ||||||
|  |       channel: "internal.builds" | ||||||
|  |       template: "{{repo.owner}}/{{repo.name}} build failed: {{build.link}}" | ||||||
|  |     when: | ||||||
|  |       status: | ||||||
|  |         - failure | ||||||
|  |  | ||||||
| trigger: | trigger: | ||||||
|   branch: |   branch: | ||||||
|     - main |     - main | ||||||
|  | |||||||
							
								
								
									
										47
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @ -1,18 +1,51 @@ | |||||||
| # abra x.x.x (UNRELEASED) | # abra x.x.x (UNRELEASED) | ||||||
|  |  | ||||||
|  | - Search for subcommands in descending order of how many components there are ([#108](https://git.autonomic.zone/coop-cloud/abra/issues/108)) | ||||||
|  |  | ||||||
|  | # abra 0.6.0 (2021-03-17) | ||||||
|  |  | ||||||
|  | - Show version and digest of app if labelled ([98e674b8e8](https://git.autonomic.zone/coop-cloud/abra/commit/98e674b8e83458a83dcbf331e8e34c7188559c4a)) | ||||||
|  | - Implement basic version checking on deployment ([#82](https://git.autonomic.zone/coop-cloud/abra/issues/82)) | ||||||
|  | - New `app-catalogue.sh` script to auto-generate app list for documentation ([f163d4b](https://git.autonomic.zone/coop-cloud/abra/commit/f163d4b0fa920232e9d995a22d20fe78b174b3a9)) | ||||||
|  | - Support app service rollbacks with `abra <app> rollback <service>` ([#76](https://git.autonomic.zone/coop-cloud/abra/issues/76)) | ||||||
|  | - Detect when latest version is deployed and perform a no-op ([#87](https://git.autonomic.zone/coop-cloud/abra/issues/87)) | ||||||
|  | - Allow cloning of app repos with different main branches using `-b, --branch=<branch>` ([#80](https://git.autonomic.zone/coop-cloud/abra/issues/80)) | ||||||
|  | - Protect against lengthy app names which gives Docker trouble later on ([#83](https://git.autonomic.zone/coop-cloud/abra/issues/83)) | ||||||
|  | - Support removal of secrets and volumes when `rm`'ing apps ([#44](https://git.autonomic.zone/coop-cloud/abra/issues/44)) | ||||||
|  | - Always choose the default IPv4 address with `abra server <host> init` ([#91](https://git.autonomic.zone/coop-cloud/abra/issues/91)) | ||||||
|  | - Add `--type=<type>` filtering option to `abra <app> ls` ([0828189](https://git.autonomic.zone/coop-cloud/abra/commit/0828189)) | ||||||
|  | - Check for bash 4+ ([#96](https://git.autonomic.zone/coop-cloud/abra/commit/0828189)) | ||||||
|  | - Add `--dev` option to installer using `git clone` ([88d2a75](https://git.autonomic.zone/coop-cloud/abra/commit/88d2a75)) | ||||||
|  | - Support `--dev` on the `abra upgrade` command also ([bcc15ec](https://git.autonomic.zone/coop-cloud/abra/commit/bcc15ec)) | ||||||
|  | - Vendor [yq](https://github.com/mikefarah/yq/releases) automatically ([3b59adf](https://git.autonomic.zone/coop-cloud/abra/commit/3b59adf)) | ||||||
|  | - Extend version handling logic to support all underlying services ([#90](https://git.autonomic.zone/coop-cloud/abra/issues/90)) | ||||||
|  | - Fix development installation script symlink issue ([#98](https://git.autonomic.zone/coop-cloud/abra/issues/98)) | ||||||
|  | - Add `app-version.sh` script to help packagers version apps ([28618bd](https://git.autonomic.zone/coop-cloud/abra/commit/28618bd)) | ||||||
|  | - Add git digest to `abra version` output ([8b41416](https://git.autonomic.zone/coop-cloud/abra/commit/8b41416)) | ||||||
|  |  | ||||||
|  | # abra 0.5.0 (2021-03-01) | ||||||
|  |  | ||||||
|  | - `secret auto` merged into `secret generate` and `app new --auto` is now `app new --secrets` ([#64](https://git.autonomic.zone/coop-cloud/abra/pulls/64)) | ||||||
| - Avoid outputting length during secret generation when not in use ([#67](https://git.autonomic.zone/coop-cloud/abra/issues/67)) | - Avoid outputting length during secret generation when not in use ([#67](https://git.autonomic.zone/coop-cloud/abra/issues/67)) | ||||||
| - Support graceful failure when missing secret generation commands ([44d3ac3a1cb86edc9b9e91eea1a00e70eae14965](https://git.autonomic.zone/coop-cloud/abra/commit/44d3ac3a1cb86edc9b9e91eea1a00e70eae14965)) | - Support graceful failure when missing secret generation commands ([44d3ac3](https://git.autonomic.zone/coop-cloud/abra/commit/44d3ac3a1cb86edc9b9e91eea1a00e70eae14965)) | ||||||
| - Fix secret detection when using new `.env` file format in apps ([55324524ca77141666ffe6cc41b62cc71cf89ace](https://git.autonomic.zone/coop-cloud/abra/commit/55324524ca77141666ffe6cc41b62cc71cf89ace)) | - Fix secret detection when using new `.env` file format in apps ([5532452](https://git.autonomic.zone/coop-cloud/abra/commit/55324524ca77141666ffe6cc41b62cc71cf89ace)) | ||||||
| - Support choosing an `$EDITOR` when editing configs ([29cc392dff3e93e48e0e2edd3ce11b405c66a95a](https://git.autonomic.zone/coop-cloud/abra/commit/29cc392dff3e93e48e0e2edd3ce11b405c66a95a)) | - Support choosing an `$EDITOR` when editing configs ([29cc392](https://git.autonomic.zone/coop-cloud/abra/commit/29cc392dff3e93e48e0e2edd3ce11b405c66a95a)) | ||||||
| - "server" shell completion fixed ([8839bd45951d00dccf4ef81ece445bcc49e13ee6](https://git.autonomic.zone/coop-cloud/abra/commit/8839bd45951d00dccf4ef81ece445bcc49e13ee6)) | - "server" shell completion fixed ([8839bd4](https://git.autonomic.zone/coop-cloud/abra/commit/8839bd45951d00dccf4ef81ece445bcc49e13ee6)) | ||||||
| - Make `-v` spit out the version ([0179f600f5ce40fc1520fc365f92b7cb6eeec1f5](https://git.autonomic.zone/coop-cloud/abra/commit/0179f600f5ce40fc1520fc365f92b7cb6eeec1f5)) |  | ||||||
| - Drop `multilogs` command ([#56](https://git.autonomic.zone/coop-cloud/abra/pulls/56)) | - Drop `multilogs` command ([#56](https://git.autonomic.zone/coop-cloud/abra/pulls/56)) | ||||||
| - Remove `server use` command ([#51](https://git.autonomic.zone/coop-cloud/abra/issues/51)) | - Remove `server use` command ([#51](https://git.autonomic.zone/coop-cloud/abra/issues/51)) | ||||||
| - `new <app>` becomes `new <type>` ([#48](https://git.autonomic.zone/coop-cloud/abra/issues/48)) | - `new <app>` becomes `new <type>` ([#48](https://git.autonomic.zone/coop-cloud/abra/issues/48)) | ||||||
| - `check` is run on `deploy` now and configurable ([77ba5652b2fe15820f5edfa0f642636f7b8eae7e](https://git.autonomic.zone/coop-cloud/abra/commit/77ba5652b2fe15820f5edfa0f642636f7b8eae7e)) | - `check` is run on `deploy` now and configurable ([77ba565](https://git.autonomic.zone/coop-cloud/abra/commit/77ba5652b2fe15820f5edfa0f642636f7b8eae7e)) | ||||||
| - App configurations are always updated now ([#42](https://git.autonomic.zone/coop-cloud/abra/issues/42)) | - App configurations are always updated now ([#42](https://git.autonomic.zone/coop-cloud/abra/issues/42)) | ||||||
| - We use docker format `.env` files (no "export" syntax) from now now ([#55](https://git.autonomic.zone/coop-cloud/abra/pulls/55)) | - We use docker format `.env` files (no "export" syntax) from now now ([#55](https://git.autonomic.zone/coop-cloud/abra/pulls/55)) | ||||||
| - Rename `<domain>` option to `<app>` and `APP` variable to `TYPE`, see [#47](https://git.autonomic.zone/coop-cloud/abra/pulls/55) | - Rename `<domain>` option to `<app>` and `APP` variable to `TYPE`, see ([#47](https://git.autonomic.zone/coop-cloud/abra/issues/47)) | ||||||
|  | - Use Docker-in-Docker (dind), and `dind-bats-kcov` Docker image, for `make test` ([1600b62](https://git.autonomic.zone/coop-cloud/abra/commit/1600b6277fbbffc4c6de1e4ba799c7bbe72ec6a0)) | ||||||
|  | - Add built-in documentation using `abra help <subcommand>...`, see ([#50](https://git.autonomic.zone/coop-cloud/abra/issues/50)) | ||||||
|  | - `version` subcommand ([e6b24fe](https://git.autonomic.zone/coop-cloud/abra/commit/e6b24fe)) | ||||||
|  | - Use `# length=x` comments to generate passwords with `pwgen` and drop `KEY`/`PASSWORD` logic ([#68](https://git.autonomic.zone/coop-cloud/abra/issues/68)) | ||||||
|  | - Global `--skip-update|-U` / `--skip-check|-C` options to make things quicker ([37e8b00](https://git.autonomic.zone/coop-cloud/abra/commit/37e8b00)) | ||||||
|  | - `app backup` and `app restore` commands; requires per-app definition ([#70](https://git.autonomic.zone/coop-cloud/abra/issues/70)) | ||||||
|  | - Rename per-type `abra-commands.sh` to `abra.sh`, and include config versions as type-level instead of app-level config ([#43](https://git.autonomic.zone/coop-cloud/abra/issues/43)) | ||||||
|  | - Show per-subcommand help by adding `-h/--help` to a command line ([#38](https://git.autonomic.zone/coop-cloud/abra/issues/78)) | ||||||
|  |  | ||||||
| # abra 0.4.1 (2020-12-24) | # abra 0.4.1 (2020-12-24) | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										42
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								README.md
									
									
									
									
									
								
							| @ -7,12 +7,54 @@ | |||||||
|  |  | ||||||
| The cooperative cloud utility belt 🎩🐇 | The cooperative cloud utility belt 🎩🐇 | ||||||
|  |  | ||||||
|  | `abra` is a command-line tool for managing your own [Co-op Cloud](https://cloud.autonomic.zone). It can provision new servers, create applications, deploy them, run backup and restore operations and a whole lot of other things. It is the go-to tool for day-to-day operations when managing a Co-op Cloud instance. | ||||||
|  |  | ||||||
|  | ## Change log | ||||||
|  |  | ||||||
|  | See [CHANGELOG.md](./CHANGELOG.md). | ||||||
|  |  | ||||||
| ## Documentation | ## Documentation | ||||||
|  |  | ||||||
| > [docs.cloud.autonomic.zone](https://docs.cloud.autonomic.zone/) | > [docs.cloud.autonomic.zone](https://docs.cloud.autonomic.zone/) | ||||||
|  |  | ||||||
| ## Install | ## Install | ||||||
|  |  | ||||||
|  | Install the latest stable release: | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| curl https://install.abra.autonomic.zone | bash | curl https://install.abra.autonomic.zone | bash | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | or the bleeding-edge development version: | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | curl https://install.abra.autonomic.zone | bash -s -- --dev | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | The source for this script is [here](./installer/installer). | ||||||
|  |  | ||||||
|  | ## Update | ||||||
|  |  | ||||||
|  | Run `abra upgrade` to automatically download and install the latest release | ||||||
|  | version. | ||||||
|  |  | ||||||
|  | To update the development version, run `abra upgrade --dev`. | ||||||
|  |  | ||||||
|  | ## Hack | ||||||
|  |  | ||||||
|  | It's written in Bash version 4 or greater! | ||||||
|  |  | ||||||
|  | Install it via `curl https://install.abra.autonomic.zone | bash -s -- --dev`, then you can hack on the source in `~/.abra/src`. | ||||||
|  |  | ||||||
|  | The command-line interface is generated via [docopt](http://docopt.org/). If you add arguments then you need to run `make docopt` ro regenerate the parser. | ||||||
|  |  | ||||||
|  | Please remember to update the [CHANGELOG](./CHANGELOG.md) when you make a change. | ||||||
|  |  | ||||||
|  | ## Release | ||||||
|  |  | ||||||
|  | - Change the `x.x.x` header in [CHANGELOG.md](./CHANGELOG.md) to reflect new version and mark date | ||||||
|  | - Update versions in [installer/installer](./installer/installer) and [abra](./abra) | ||||||
|  | - `git commit` the above changes and then tag it with `git tag <your-new-version>` | ||||||
|  | - Then `git push` and `git push --tags` | ||||||
|  | - Deploy a new installer script `make release-installer` | ||||||
|  | - Tell the world | ||||||
|  | |||||||
							
								
								
									
										100
									
								
								app-catalogue.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										100
									
								
								app-catalogue.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,100 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # Usage: ./app-catalogue.sh | ||||||
|  | # | ||||||
|  | # Gather metadata from Co-op Cloud apps in $ABRA_DIR/apps (default | ||||||
|  | # ~/.abra/apps), and format it as a Markdown table for this page: | ||||||
|  | # https://docs.cloud.autonomic.zone/apps/ | ||||||
|  |  | ||||||
|  | stack_dir="${ABRA_DIR:-$HOME/.abra}/apps/" | ||||||
|  |  | ||||||
|  | cd "$stack_dir" | ||||||
|  |  | ||||||
|  | # load all README files into ENV_FILES array | ||||||
|  | mapfile -t readmes < <(find -L . -name "README.md") | ||||||
|  | # FIXME 3wc: requires bash 4, use for loop instead | ||||||
|  |  | ||||||
|  | base_url="https://git.autonomic.zone/coop-cloud" | ||||||
|  |  | ||||||
|  | cat_apps=() | ||||||
|  | cat_development=() | ||||||
|  | cat_utilities=() | ||||||
|  | cat_graveyard=() | ||||||
|  |  | ||||||
|  | get_var() { | ||||||
|  | 	echo "$1" | grep "$2" | sed 's/^[^:]*: //' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # shellcheck disable=SC2120 | ||||||
|  | trim() { | ||||||
|  | 	# accept input as argument or from STDIN, see here: | ||||||
|  | 	# https://zwbetz.com/passing-input-to-a-bash-function-via-arguments-or-stdin/ | ||||||
|  | 	# shellcheck disable=SC2155 | ||||||
|  | 	local input="$([[ -p /dev/stdin ]] && cat - || echo "$@")" | ||||||
|  | 	[[ -z "$input" ]] && return 1 | ||||||
|  | 	echo "$input" | tr -d ' ' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # shellcheck disable=SC2120 | ||||||
|  | prettify() { | ||||||
|  | 	# as above | ||||||
|  | 	# shellcheck disable=SC2155 | ||||||
|  | 	local input="$([[ -p /dev/stdin ]] && cat - || echo "$@")" | ||||||
|  | 	[[ -z "$input" ]] && return 1 | ||||||
|  |  | ||||||
|  | 	echo "$input" | sed -e 's/Yes/✅/' -e 's/No/❌/' -e 's/N\/A/⛔/' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | for readme in "${readmes[@]}"; do | ||||||
|  | 	type="$(basename "${readme%README.md}")" | ||||||
|  | 	if [ "$type" = "example" ]; then | ||||||
|  | 		continue | ||||||
|  | 	fi | ||||||
|  | 	title="$(grep '^# ' "$type/README.md" | sed 's/^# //' )" | ||||||
|  | 	# find section between 'metadata' and 'endmetadata' comments | ||||||
|  | 	metadata="$(awk '/-- metadata --/,/-- endmetadata --/' "$type/README.md")" | ||||||
|  | 	status="$(get_var "$metadata" "Status")" | ||||||
|  | 	category="$(get_var "$metadata" "Category" | cut -d',' -f2 | trim)" | ||||||
|  |  | ||||||
|  | 	if [ -z "$category" ]; then | ||||||
|  | 		echo "ERROR: missing category for $type" | ||||||
|  | 		continue | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	image="$(get_var "$metadata" "Image" | cut -d',' -f2 | trim)" | ||||||
|  | 	healthcheck="$(get_var "$metadata" "Healthcheck" | prettify)" | ||||||
|  | 	backups="$(get_var "$metadata" "Backups" | prettify)" | ||||||
|  | 	email="$(get_var "$metadata" "Email" | prettify)" | ||||||
|  | 	tests="$(get_var "$metadata" "Tests" | prettify)" | ||||||
|  | 	sso="$(get_var "$metadata" "SSO" | prettify)" | ||||||
|  |  | ||||||
|  | 	row="| [$title]($base_url/$type) | $status | $image | $healthcheck | $backups | $email | $tests | $sso |" | ||||||
|  |  | ||||||
|  | 	category_lower="$(echo "$category" | tr '[:upper:]' '[:lower:]')" | ||||||
|  | 	eval "cat_$category_lower+=( '$row' )" | ||||||
|  | done | ||||||
|  |  | ||||||
|  | headers=" | ||||||
|  | | **Name** | **Status** | **Image** | **Healtcheck** | **Backups** | **Email** | **CI** | **Single-Sign-On** | | ||||||
|  | | --- | --- | --- | --- | --- | --- | --- | --- |" | ||||||
|  |  | ||||||
|  | echo "## Applications" | ||||||
|  | echo "$headers" | ||||||
|  | printf '%s\n' "${cat_apps[@]}" | sort | ||||||
|  |  | ||||||
|  | echo | ||||||
|  |  | ||||||
|  | echo "## Developer tools" | ||||||
|  | echo "$headers" | ||||||
|  | printf '%s\n' "${cat_development[@]}" | sort | ||||||
|  |  | ||||||
|  | echo | ||||||
|  |  | ||||||
|  | echo "## Utilities" | ||||||
|  | echo "$headers" | ||||||
|  | printf '%s\n' "${cat_utilities[@]}" | sort | ||||||
|  |  | ||||||
|  | echo | ||||||
|  |  | ||||||
|  | echo "## Graveyard" | ||||||
|  | echo "$headers" | ||||||
|  | printf '%s\n' "${cat_graveyard[@]}" | sort | ||||||
							
								
								
									
										42
									
								
								app-version.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										42
									
								
								app-version.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,42 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | # Usage: ./app-version.sh <image> <service> | ||||||
|  | # Example: ./app-version.sh drone/drone:1.10.1 app | ||||||
|  | # | ||||||
|  | # Accepts a full format hub.docker.com image tag which it pulls locally and | ||||||
|  | # generates output which can be used to put in the abra.sh for app packaging. | ||||||
|  | # Requires the yq program https://mikefarah.gitbook.io/yq/ | ||||||
|  |  | ||||||
|  | error() { | ||||||
|  |   echo "$(tput setaf 1)ERROR: $*$(tput sgr0)" | ||||||
|  |   exit 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | IMAGE="$1" | ||||||
|  | SERVICE="$2" | ||||||
|  |  | ||||||
|  | if ! docker pull -q "$IMAGE" > /dev/null 2>&1; then | ||||||
|  | 	error "Failed to download image, is the tag correct?" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | version=$(echo "$IMAGE" | cut -d ':' -f2) | ||||||
|  | digest=$(docker image inspect -f "{{.Id}}" "$IMAGE" | cut -d ':' -f2- | cut -c 1-8) | ||||||
|  |  | ||||||
|  | echo "--- Add the following to your abra.sh ---" | ||||||
|  | echo "export ABRA_TYPE_${SERVICE^^}_VERSION=${version}" | ||||||
|  | echo "export ABRA_TYPE_${SERVICE^^}_DIGEST=${digest}" | ||||||
|  |  | ||||||
|  | version_lookup="ABRA_TYPE_${SERVICE^^}_VERSION" | ||||||
|  | digest_lookup="ABRA_TYPE_${SERVICE^^}_DIGEST" | ||||||
|  |  | ||||||
|  | label='- "coop-cloud.${STACK_NAME}.' | ||||||
|  | label+="${SERVICE}" | ||||||
|  | label+='.version=${' | ||||||
|  | label+="${version_lookup}" | ||||||
|  | label+='}-${' | ||||||
|  | label+="${digest_lookup}" | ||||||
|  | label+='}"' | ||||||
|  |  | ||||||
|  | echo | ||||||
|  | echo "--- And don't forget to label the actual service in the compose file ---" | ||||||
|  | echo "$label" | ||||||
| @ -26,10 +26,8 @@ services: | |||||||
|  |  | ||||||
| configs: | configs: | ||||||
|   abra_installer: |   abra_installer: | ||||||
|     name: abra_installer_v1 |  | ||||||
|     file: installer |     file: installer | ||||||
|   abra_conf: |   abra_conf: | ||||||
|     name: abra_conf_v1 |  | ||||||
|     file: nginx.conf |     file: nginx.conf | ||||||
|  |  | ||||||
| networks: | networks: | ||||||
|  | |||||||
| @ -1,18 +1,34 @@ | |||||||
| #!/bin/bash | #!/bin/bash | ||||||
|  |  | ||||||
| ABRA_VERSION="0.4.1" | ABRA_VERSION="0.6.0" | ||||||
| ABRA_SRC="https://git.autonomic.zone/coop-cloud/abra/raw/tag/$ABRA_VERSION/abra" | GIT_URL="https://git.autonomic.zone/coop-cloud/abra" | ||||||
|  | ABRA_SRC="$GIT_URL/raw/tag/$ABRA_VERSION/abra" | ||||||
|  |  | ||||||
| function install_abra { | function install_abra_release { | ||||||
|   mkdir -p "$HOME/.local/bin" |   mkdir -p "$HOME/.local/bin" | ||||||
| 	curl "$ABRA_SRC" > "$HOME/.local/bin/abra" |   curl "$ABRA_SRC" > "$HOME/.local/bin/abra" | ||||||
|   chmod +x "$HOME/.local/bin/abra" |   chmod +x "$HOME/.local/bin/abra" | ||||||
|   echo "abra installed to $HOME/.loca/bin/abra" |   echo "abra installed to $HOME/.local/bin/abra" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function install_abra_dev { | ||||||
|  |   mkdir -p "$HOME/.abra/" | ||||||
|  |   if [[ ! -d "$HOME/.abra/src" ]]; then | ||||||
|  |     git clone "$GIT_URL" "$HOME/.abra/src" | ||||||
|  |   fi | ||||||
|  |   ( cd "$HOME/.abra/src" && git pull origin main && cd -) | ||||||
|  |   mkdir -p "$HOME/.local/bin" | ||||||
|  |   ln -sf "$HOME/.abra/src/abra" "$HOME/.local/bin/abra" | ||||||
|  |   echo "abra installed to $HOME/.local/bin/abra (development bleeding edge)" | ||||||
| } | } | ||||||
|  |  | ||||||
| function run_installation { | function run_installation { | ||||||
|   install_abra |   if [ "$1" = "--dev" ]; then | ||||||
|  |     install_abra_dev | ||||||
|  |   else | ||||||
|  |     install_abra_release | ||||||
|  |   fi | ||||||
| } | } | ||||||
|  |  | ||||||
| run_installation | run_installation "$@" | ||||||
| exit 0 | exit 0 | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| .PHONY: test shellcheck docopt kcov codecov | .PHONY: test shellcheck docopt kcov codecov release-installer | ||||||
| 
 | 
 | ||||||
| test_dind: | test: | ||||||
| 	@sudo DOCKER_CONTEXT=default docker run \
 | 	@sudo DOCKER_CONTEXT=default docker run \
 | ||||||
| 		-v $$(pwd):/workdir \
 | 		-v $$(pwd):/workdir \
 | ||||||
| 		--privileged \
 | 		--privileged \
 | ||||||
| @ -15,17 +15,6 @@ test_dind: | |||||||
| 	@DOCKER_CONTEXT=default docker stop abra-test-dind | 	@DOCKER_CONTEXT=default docker stop abra-test-dind | ||||||
| 	@DOCKER_CONTEXT=default docker rm abra-test-dind | 	@DOCKER_CONTEXT=default docker rm abra-test-dind | ||||||
| 
 | 
 | ||||||
| test_docker: |  | ||||||
| 	@DOCKER_CONTEXT=default docker run \
 |  | ||||||
| 		-it \
 |  | ||||||
| 		--rm \
 |  | ||||||
| 		-v $$(pwd):/workdir \
 |  | ||||||
| 		decentral1se/docker-dind-bats-kcov \
 |  | ||||||
| 		sh -c "cd /workdir && bats /workdir/tests" |  | ||||||
| 
 |  | ||||||
| test_local: |  | ||||||
| 	bats tests |  | ||||||
| 
 |  | ||||||
| shellcheck: | shellcheck: | ||||||
| 	@docker run \
 | 	@docker run \
 | ||||||
| 		-it \
 | 		-it \
 | ||||||
| @ -54,3 +43,8 @@ codecov: SHELL:=/bin/bash | |||||||
| codecov: | codecov: | ||||||
| 	@bash <(curl -s https://codecov.io/bash) \
 | 	@bash <(curl -s https://codecov.io/bash) \
 | ||||||
| 		-s coverage -t $$(pass show hosts/swarm.autonomic.zone/drone/codecov/token) | 		-s coverage -t $$(pass show hosts/swarm.autonomic.zone/drone/codecov/token) | ||||||
|  | 
 | ||||||
|  | release-installer: | ||||||
|  | 	@docker stack rm abra-installer-script && \
 | ||||||
|  | 		cd installer && \
 | ||||||
|  | 		docker stack deploy -c compose.yml abra-installer-script | ||||||
		Reference in New Issue
	
	Block a user
	