From c7023d2af2266ad10e95b7b29f69f60e3b01d715 Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Fri, 30 Apr 2021 15:54:40 +0700 Subject: [PATCH 01/12] WIP push to dockerhub on push to develop or master --- .travis.yml | 11 +++++++++++ Makefile | 25 ++++++++++++++++++++++++- docker/images/visor/Dockerfile | 10 ++++++++++ docker/images/visor/update.sh | 0 4 files changed, 45 insertions(+), 1 deletion(-) mode change 100644 => 100755 docker/images/visor/update.sh diff --git a/.travis.yml b/.travis.yml index d159c97b07..d07f8bc1cd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,4 @@ +sudo: required language: go go: # - "1.16.x" At minimum the code should run make check on the latest two go versions in the default linux environment provided by Travis. @@ -5,6 +6,9 @@ go: dist: xenial +services: + - docker + addons: apt: packages: @@ -35,3 +39,10 @@ script: - make install-deps-ui - make lint-ui - make build-ui + +deploy: + provider: script + script: make docker-push + on: + type: push + condition: $TRAVIS_BRANCH =~ ^(develop|master)$ diff --git a/Makefile b/Makefile index 3b743d0c9e..deb6016947 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,7 @@ VERSION := $(shell git describe) RFC_3339 := "+%Y-%m-%dT%H:%M:%SZ" DATE := $(shell date -u $(RFC_3339)) COMMIT := $(shell git rev-list -1 HEAD) +BRANCH := $(shell git rev-parse --abbrev-ref HEAD) PROJECT_BASE := github.com/skycoin/skywire DMSG_BASE := github.com/skycoin/dmsg @@ -24,6 +25,16 @@ DOCKER_IMAGE?=skywire-runner # docker image to use for running skywire-visor.`go DOCKER_NETWORK?=SKYNET DOCKER_NODE?=SKY01 DOCKER_OPTS?=GO111MODULE=on GOOS=linux # go options for compiling for docker container +DOCKER_VISOR_IMAGE_NAME?=skywire +DOCKER_VCS_REF?=${BRANCH}-${COMMIT} +DOCKER_IMAGE_TAG_NAME:="" +ifeq (${BRANCH},master) + DOCKER_IMAGE_TAG_NAME:=latest +endif +ifeq (${BRANCH},develop) + DOCKER_IMAGE_TAG_NAME:=test +endif + TEST_OPTS:=-cover -timeout=5m -mod=vendor @@ -159,7 +170,19 @@ build-ui: install-deps-ui ## Builds the UI # Dockerized skywire-visor docker-image: ## Build docker image `skywire-runner` - docker image build --tag=skywire-runner --rm - < skywire-runner.Dockerfile + #docker image build --tag=skywire-runner --rm - < skywire-runner.Dockerfile + docker image build \ + --tag=skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} \ + --build-arg BUILD_DATE=${DATE} \ + --build-arg VCS_REF=${DOCKER_VCS_REF} \ + --build-arg IMG_NAME=skywire \ + -f ./docker/images/visor/Dockerfile . + +docker-push: docker-image + docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD} + docker tag skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} + #docker container commit ${COMMIT} skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} + docker image push skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} docker-clean: ## Clean docker system: remove container ${DOCKER_NODE} and network ${DOCKER_NETWORK} -docker network rm ${DOCKER_NETWORK} diff --git a/docker/images/visor/Dockerfile b/docker/images/visor/Dockerfile index 4559ffa064..892a144907 100644 --- a/docker/images/visor/Dockerfile +++ b/docker/images/visor/Dockerfile @@ -24,6 +24,10 @@ RUN go build -mod=vendor -tags netgo -ldflags="-w -s" \ ## Resulting image FROM ${base} as visor-runner +ARG BUILD_DATE +ARG VCS_REF +ARG IMG_NAME + COPY --from=builder /go/skywire/skywire-visor skywire-visor COPY --from=builder /go/skywire/apps bin/apps COPY --from=builder /go/skywire/docker/images/visor/update.sh update.sh @@ -35,3 +39,9 @@ ENTRYPOINT [ "./skywire-visor" ] # default target FROM visor-runner + +LABEL org.opencontainers.image.created="${BUILD_DATE}" \ + org.opencontainers.image.title="${IMG_NAME}" \ + org.opencontainers.image.authors="skycoin" \ + org.opencontainers.image.revision="${VCS_REF}" \ + org.opencontainers.image.vendor="skycoin" \ No newline at end of file diff --git a/docker/images/visor/update.sh b/docker/images/visor/update.sh old mode 100644 new mode 100755 From 5d55ef0ef416300d27527177f653364083730c2e Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Fri, 30 Apr 2021 16:50:55 +0700 Subject: [PATCH 02/12] follow skywire-services standard in deploy phase --- .travis.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index d07f8bc1cd..ba4aaa846f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,8 +41,14 @@ script: - make build-ui deploy: - provider: script - script: make docker-push - on: - type: push - condition: $TRAVIS_BRANCH =~ ^(develop|master)$ + - provider: script + script: make docker-push + on: + branch: master + condition: $TRAVIS_PULL_REQUEST = false + - provider: script + script: make docker-push + on: + branch: develop + condition: $TRAVIS_PULL_REQUEST = true + From 20bb84ab99aaefaff27afe1480dc4bfa67d45af4 Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Fri, 30 Apr 2021 17:30:08 +0700 Subject: [PATCH 03/12] follow skywire-services standard in deploy phase --- Makefile | 10 ++-------- docker/images/visor/Dockerfile | 8 +------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index deb6016947..d6586625c0 100644 --- a/Makefile +++ b/Makefile @@ -25,8 +25,6 @@ DOCKER_IMAGE?=skywire-runner # docker image to use for running skywire-visor.`go DOCKER_NETWORK?=SKYNET DOCKER_NODE?=SKY01 DOCKER_OPTS?=GO111MODULE=on GOOS=linux # go options for compiling for docker container -DOCKER_VISOR_IMAGE_NAME?=skywire -DOCKER_VCS_REF?=${BRANCH}-${COMMIT} DOCKER_IMAGE_TAG_NAME:="" ifeq (${BRANCH},master) DOCKER_IMAGE_TAG_NAME:=latest @@ -169,19 +167,15 @@ build-ui: install-deps-ui ## Builds the UI make move-built-frontend # Dockerized skywire-visor -docker-image: ## Build docker image `skywire-runner` - #docker image build --tag=skywire-runner --rm - < skywire-runner.Dockerfile +docker-image: ## Build docker image `skywire` docker image build \ --tag=skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} \ - --build-arg BUILD_DATE=${DATE} \ - --build-arg VCS_REF=${DOCKER_VCS_REF} \ - --build-arg IMG_NAME=skywire \ -f ./docker/images/visor/Dockerfile . +## docker-push, push image to dockerhub docker-push: docker-image docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD} docker tag skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} - #docker container commit ${COMMIT} skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} docker image push skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} docker-clean: ## Clean docker system: remove container ${DOCKER_NODE} and network ${DOCKER_NETWORK} diff --git a/docker/images/visor/Dockerfile b/docker/images/visor/Dockerfile index 892a144907..c481bff5ac 100644 --- a/docker/images/visor/Dockerfile +++ b/docker/images/visor/Dockerfile @@ -38,10 +38,4 @@ RUN ./update.sh ENTRYPOINT [ "./skywire-visor" ] # default target -FROM visor-runner - -LABEL org.opencontainers.image.created="${BUILD_DATE}" \ - org.opencontainers.image.title="${IMG_NAME}" \ - org.opencontainers.image.authors="skycoin" \ - org.opencontainers.image.revision="${VCS_REF}" \ - org.opencontainers.image.vendor="skycoin" \ No newline at end of file +FROM visor-runner \ No newline at end of file From 88fb608511cdb2a8f73aba915951b7887f6c5223 Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Fri, 30 Apr 2021 17:41:59 +0700 Subject: [PATCH 04/12] removed unused build args, fixes typo in travis --- .travis.yml | 2 +- docker/images/visor/Dockerfile | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index ba4aaa846f..1d029ddd7b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -50,5 +50,5 @@ deploy: script: make docker-push on: branch: develop - condition: $TRAVIS_PULL_REQUEST = true + condition: $TRAVIS_PULL_REQUEST = false diff --git a/docker/images/visor/Dockerfile b/docker/images/visor/Dockerfile index c481bff5ac..c751fe17f9 100644 --- a/docker/images/visor/Dockerfile +++ b/docker/images/visor/Dockerfile @@ -24,10 +24,6 @@ RUN go build -mod=vendor -tags netgo -ldflags="-w -s" \ ## Resulting image FROM ${base} as visor-runner -ARG BUILD_DATE -ARG VCS_REF -ARG IMG_NAME - COPY --from=builder /go/skywire/skywire-visor skywire-visor COPY --from=builder /go/skywire/apps bin/apps COPY --from=builder /go/skywire/docker/images/visor/update.sh update.sh From 16a970dd1dde4056c9eb6c28a439062a6346494f Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Fri, 30 Apr 2021 18:41:50 +0700 Subject: [PATCH 05/12] uses ci_scripts/docker-push.sh --- .travis.yml | 4 ++-- Makefile | 17 --------------- ci_scripts/docker-push.sh | 46 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 19 deletions(-) create mode 100755 ci_scripts/docker-push.sh diff --git a/.travis.yml b/.travis.yml index 1d029ddd7b..073f9050f3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -42,12 +42,12 @@ script: deploy: - provider: script - script: make docker-push + script: bash ./ci_scripts/docker-push.sh -t "$TRAVIS_BRANCH" -p on: branch: master condition: $TRAVIS_PULL_REQUEST = false - provider: script - script: make docker-push + script: bash ./ci_scripts/docker-push.sh -t "$TRAVIS_BRANCH" -p on: branch: develop condition: $TRAVIS_PULL_REQUEST = false diff --git a/Makefile b/Makefile index d6586625c0..13a60303b8 100644 --- a/Makefile +++ b/Makefile @@ -25,14 +25,6 @@ DOCKER_IMAGE?=skywire-runner # docker image to use for running skywire-visor.`go DOCKER_NETWORK?=SKYNET DOCKER_NODE?=SKY01 DOCKER_OPTS?=GO111MODULE=on GOOS=linux # go options for compiling for docker container -DOCKER_IMAGE_TAG_NAME:="" -ifeq (${BRANCH},master) - DOCKER_IMAGE_TAG_NAME:=latest -endif -ifeq (${BRANCH},develop) - DOCKER_IMAGE_TAG_NAME:=test -endif - TEST_OPTS:=-cover -timeout=5m -mod=vendor @@ -168,15 +160,6 @@ build-ui: install-deps-ui ## Builds the UI # Dockerized skywire-visor docker-image: ## Build docker image `skywire` - docker image build \ - --tag=skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} \ - -f ./docker/images/visor/Dockerfile . - -## docker-push, push image to dockerhub -docker-push: docker-image - docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD} - docker tag skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} - docker image push skycoin/skywire:${DOCKER_IMAGE_TAG_NAME} docker-clean: ## Clean docker system: remove container ${DOCKER_NODE} and network ${DOCKER_NETWORK} -docker network rm ${DOCKER_NETWORK} diff --git a/ci_scripts/docker-push.sh b/ci_scripts/docker-push.sh new file mode 100755 index 0000000000..25d51ba0b9 --- /dev/null +++ b/ci_scripts/docker-push.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +function print_usage() { + echo "Use: $0 [-t ] [-p | -b]" + echo "use -p for push (it builds and push the image)" + echo "use -b for build image locally" +} + +if [[ $# -ne 3 ]]; then + print_usage + exit 0 +fi + +function docker_build() { + docker image build \ + --tag=skycoin/skywire:"$tag" \ + -f ./docker/images/visor/Dockerfile . +} + +function docker_push() { + echo "pushed" + # docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" + # docker tag skycoin/skywire:"$tag" skycoin/skywire:"$tag" + # docker image push skycoin/skywire:"$tag" +} + +while getopts ":t:pb" o; do + case "${o}" in + t) + tag="$(echo "${OPTARG}" | tr -d '[:space:]')" + if [[ $tag == "develop" ]]; then + tag="test" + fi + ;; + p) + docker_build + docker_push + ;; + b) + docker_build + ;; + *) + print_usage + ;; + esac +done From 0b35e80f384d040f1d1ee6be2018cf5ab7c5e533 Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Fri, 30 Apr 2021 18:43:59 +0700 Subject: [PATCH 06/12] fixes scripts placeholder value --- ci_scripts/docker-push.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ci_scripts/docker-push.sh b/ci_scripts/docker-push.sh index 25d51ba0b9..18137d8ad9 100755 --- a/ci_scripts/docker-push.sh +++ b/ci_scripts/docker-push.sh @@ -18,10 +18,9 @@ function docker_build() { } function docker_push() { - echo "pushed" - # docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" - # docker tag skycoin/skywire:"$tag" skycoin/skywire:"$tag" - # docker image push skycoin/skywire:"$tag" + docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" + docker tag skycoin/skywire:"$tag" skycoin/skywire:"$tag" + docker image push skycoin/skywire:"$tag" } while getopts ":t:pb" o; do From 25aac9957b98b81b107092bd15a7851c31366bee Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Fri, 30 Apr 2021 19:40:26 +0700 Subject: [PATCH 07/12] removed BRANCH variable from makefile --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 13a60303b8..4c1b8780e9 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,6 @@ VERSION := $(shell git describe) RFC_3339 := "+%Y-%m-%dT%H:%M:%SZ" DATE := $(shell date -u $(RFC_3339)) COMMIT := $(shell git rev-list -1 HEAD) -BRANCH := $(shell git rev-parse --abbrev-ref HEAD) PROJECT_BASE := github.com/skycoin/skywire DMSG_BASE := github.com/skycoin/dmsg From c1da42cfbcb25512e5cc4ef8c13527d7257654b8 Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Sun, 2 May 2021 21:03:13 +0700 Subject: [PATCH 08/12] added entrypoint.sh for running the whole application --- docker/images/visor/Dockerfile | 9 +++++---- docker/images/visor/entrypoint.sh | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) create mode 100755 docker/images/visor/entrypoint.sh diff --git a/docker/images/visor/Dockerfile b/docker/images/visor/Dockerfile index c751fe17f9..1f4b5ee5f6 100644 --- a/docker/images/visor/Dockerfile +++ b/docker/images/visor/Dockerfile @@ -16,9 +16,9 @@ WORKDIR skywire RUN go build -mod=vendor -tags netgo -ldflags="-w -s" \ -o skywire-visor cmd/skywire-visor/skywire-visor.go &&\ go build -mod=vendor -ldflags="-w -s" -o skywire-cli ./cmd/skywire-cli &&\ - go build -mod=vendor -ldflags="-w -s" -o ./apps/skychat.v1.0 ./cmd/apps/skychat &&\ - go build -mod=vendor -ldflags="-w -s" -o ./apps/skysocks.v1.0 ./cmd/apps/skysocks &&\ - go build -mod=vendor -ldflags="-w -s" -o ./apps/skysocks-client.v1.0 ./cmd/apps/skysocks-client + go build -mod=vendor -ldflags="-w -s" -o ./apps/skychat ./cmd/apps/skychat &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/skysocks ./cmd/apps/skysocks &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/skysocks-client ./cmd/apps/skysocks-client ## Resulting image @@ -28,10 +28,11 @@ COPY --from=builder /go/skywire/skywire-visor skywire-visor COPY --from=builder /go/skywire/apps bin/apps COPY --from=builder /go/skywire/docker/images/visor/update.sh update.sh COPY --from=builder /go/skywire/skywire-cli bin/skywire-cli +COPY --from=builder /go/skywire/docker/images/visor/entrypoint.sh entrypoint.sh RUN ./update.sh -ENTRYPOINT [ "./skywire-visor" ] +ENTRYPOINT [ "./entrypoint.sh" ] # default target FROM visor-runner \ No newline at end of file diff --git a/docker/images/visor/entrypoint.sh b/docker/images/visor/entrypoint.sh new file mode 100755 index 0000000000..c1577cb01c --- /dev/null +++ b/docker/images/visor/entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +cmd="$(echo "$1" | tr -d '[:space:]')" + +case "$cmd" in +skywire-visor) + ./"$cmd" -- "$@" + ;; +skywire-cli) + /bin/skywire-cli -- "$@" + ;; +*) + /bin/apps/"$cmd" -- "$@" + ;; +esac From 95d1269ce69585ee57871c00783b097006588461 Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Mon, 3 May 2021 08:30:11 +0700 Subject: [PATCH 09/12] added README for instruction on running dockerized skywire --- .gitignore | 1 + README.md | 62 ++++++++++++++++++++++--------- docker/images/visor/Dockerfile | 3 +- docker/images/visor/entrypoint.sh | 26 +++++++++++-- 4 files changed, 68 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index f89c69469d..d63b498a62 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,4 @@ dist static/skywire-manager-src/dist/* +/visor/ diff --git a/README.md b/README.md index 18b87166c8..c42d2f160d 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,15 @@ # Skywire - - [Skywire](#skywire) - - [Build](#build) - - [Configure Skywire](#configure-skywire) - - [Expose hypervisorUI](#expose-hypervisorui) - - [Add remote hypervisor](#add-remote-hypervisor) - - [Run `skywire-visor`](#run-skywire-visor) - - [Using the Skywire VPN](#using-the-skywire-vpn) - - [Creating a GitHub release](#creating-a-github-release) - - [How to create a GitHub release](#how-to-create-a-github-release) + - [Build](#build) + - [Configure Skywire](#configure-skywire) + - [Expose hypervisorUI](#expose-hypervisorui) + - [Add remote hypervisor](#add-remote-hypervisor) + - [Run `skywire-visor`](#run-skywire-visor) + - [Using the Skywire VPN](#using-the-skywire-vpn) + - [Creating a GitHub release](#creating-a-github-release) + - [How to create a GitHub release](#how-to-create-a-github-release) ## Build @@ -24,6 +23,9 @@ $ cd skywire # Build and Install $ make build; make install + +# OR build docker image +$ ./ci_scripts/docker-push.sh -t $(git rev-parse --abbrev HEAD) -b ``` Skywire can be statically built. For instructions check [the docs](docs/static-builds.md). @@ -38,27 +40,51 @@ In order to expose the hypervisor UI, generate a config file with `--is-hypervis $ skywire-cli visor gen-config --is-hypervisor ``` +Docker container will create config automatically for you, should you want to run it manually, you can do: + +```bash +$ docker run --rm -v :/opt/config \ + skycoin/skywire:latest skywire-cli config-gen --is-hypervisor +``` + After starting up the visor, the UI will be exposed by default on `localhost:8000`. ### Add remote hypervisor -Every visor can be controlled by one or more hypervisors. To allow a hypervisor to access a visor, the PubKey of the hypervisor needs to be specified in the configuration file. You can add a remote hypervisor to the config with: +Every visor can be controlled by one or more hypervisors. To allow a hypervisor to access a visor, the PubKey of the +hypervisor needs to be specified in the configuration file. You can add a remote hypervisor to the config with: ```bash $ skywire-cli visor update-config --hypervisor-pks ``` +Or from docker image: + +```bash +$ docker run --rm -v :/opt/config \ + skycoin/skywire:latest skywire-cli update-config hypervisor-pks + +``` + ## Run `skywire-visor` -`skywire-visor` hosts apps and is an applications gateway to the Skywire network. +`skywire-visor` hosts apps and is an applications gateway to the Skywire network. -`skywire-visor` requires a valid configuration to be provided. If you want to run a VPN client locally, run the visor as `sudo`. +`skywire-visor` requires a valid configuration to be provided. If you want to run a VPN client locally, run the visor +as `sudo`. ```bash $ sudo skywire-visor -c skywire-config.json ``` -`skywire-visor` can be run on Windows. The setup requires additional setup steps that are specified in [the docs](docs/windows-setup.md). +Or from docker image: + +```bash +docker run --rm -P -v :/opt/config skywire-visor +``` + +`skywire-visor` can be run on Windows. The setup requires additional setup steps that are specified +in [the docs](docs/windows-setup.md). ### Using the Skywire VPN @@ -69,19 +95,19 @@ If you are interested in running the Skywire VPN as either a client or a server, ## Creating a GitHub release -To maintain actual `skywire-visor` state on users' Skywire nodes we have a mechanism for updating `skywire-visor` binaries. -Binaries for each version are uploaded to [GitHub releases](https://github.com/skycoin/skywire/releases/). -We use [goreleaser](https://goreleaser.com) for creating them. +To maintain actual `skywire-visor` state on users' Skywire nodes we have a mechanism for updating `skywire-visor` +binaries. Binaries for each version are uploaded to [GitHub releases](https://github.com/skycoin/skywire/releases/). We +use [goreleaser](https://goreleaser.com) for creating them. ### How to create a GitHub release 1. Make sure that `git` and [goreleaser](https://goreleaser.com/install) are installed. 2. Checkout to a commit you would like to create a release against. -3. Run `go mod vendor` and `go mod tidy`. +3. Run `go mod vendor` and `go mod tidy`. 4. Make sure that `git status` is in clean state. Commit all vendor changes and source code changes. 5. Uncomment `draft: true` in `.goreleaser.yml` if this is a test release. 6. Create a `git` tag with desired release version and release name: `git tag -a 0.1.0 -m "First release"`, -where `0.1.0` is release version and `First release` is release name. + where `0.1.0` is release version and `First release` is release name. 5. Push the created tag to the repository: `git push origin 0.1.0`, where `0.1.0` is release version. 6. [Issue a personal GitHub access token.](https://github.com/settings/tokens) 7. Run `GITHUB_TOKEN=your_token make github-release` diff --git a/docker/images/visor/Dockerfile b/docker/images/visor/Dockerfile index 1f4b5ee5f6..5125a48b64 100644 --- a/docker/images/visor/Dockerfile +++ b/docker/images/visor/Dockerfile @@ -1,5 +1,4 @@ # Builder -# ARG builder_base=golang:alpine ARG base=alpine FROM golang:alpine as builder @@ -25,7 +24,7 @@ RUN go build -mod=vendor -tags netgo -ldflags="-w -s" \ FROM ${base} as visor-runner COPY --from=builder /go/skywire/skywire-visor skywire-visor -COPY --from=builder /go/skywire/apps bin/apps +COPY --from=builder /go/skywire/apps /apps COPY --from=builder /go/skywire/docker/images/visor/update.sh update.sh COPY --from=builder /go/skywire/skywire-cli bin/skywire-cli COPY --from=builder /go/skywire/docker/images/visor/entrypoint.sh entrypoint.sh diff --git a/docker/images/visor/entrypoint.sh b/docker/images/visor/entrypoint.sh index c1577cb01c..c990c5f841 100755 --- a/docker/images/visor/entrypoint.sh +++ b/docker/images/visor/entrypoint.sh @@ -1,15 +1,33 @@ #!/bin/sh +test -d /opt/config || { + echo "no docker volume mounted, exiting..." + exit 1 +} + +if [ "$#" -ne 1 ]; then + test -f /opt/config/skywire-config.json || { + echo "no config found, generating one...." && + /bin/skywire-cli visor gen-config -o /opt/config/skywire-config.json -r --is-hypervisor && + # sed -i 's/localhost//g' /opt/config/skywire-config.json && + echo "config generated." && + exit 0 + } +fi + cmd="$(echo "$1" | tr -d '[:space:]')" +shift 1 + +echo "$@" case "$cmd" in skywire-visor) - ./"$cmd" -- "$@" + ./"$cmd" -c /opt/config/skywire-config.json "$@" ;; skywire-cli) - /bin/skywire-cli -- "$@" + /bin/skywire-cli "$@" ;; -*) - /bin/apps/"$cmd" -- "$@" +skychat | skysocks | skysocks-client) + /apps/"$cmd" "$@" ;; esac From cbb8dd5d8bcc037033c7c1f4c932b174fe7253ad Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Mon, 3 May 2021 12:27:14 +0700 Subject: [PATCH 10/12] added vpn-client and vpn-server application to the dockerfile --- README.md | 6 +++--- docker/images/visor/Dockerfile | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c42d2f160d..8c80f2c23c 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Docker container will create config automatically for you, should you want to ru ```bash $ docker run --rm -v :/opt/config \ - skycoin/skywire:latest skywire-cli config-gen --is-hypervisor + skycoin/skywire:latest skywire-cli gen-config --is-hypervisor ``` After starting up the visor, the UI will be exposed by default on `localhost:8000`. @@ -80,7 +80,7 @@ $ sudo skywire-visor -c skywire-config.json Or from docker image: ```bash -docker run --rm -P -v :/opt/config skywire-visor +docker run --rm -p 8000:8000 -v :/opt/config --name=skywire skycoin/skywire:latest skywire-visor ``` `skywire-visor` can be run on Windows. The setup requires additional setup steps that are specified @@ -111,4 +111,4 @@ use [goreleaser](https://goreleaser.com) for creating them. 5. Push the created tag to the repository: `git push origin 0.1.0`, where `0.1.0` is release version. 6. [Issue a personal GitHub access token.](https://github.com/settings/tokens) 7. Run `GITHUB_TOKEN=your_token make github-release` -8. [Check the created GitHub release.](https://github.com/skycoin/skywire/releases/) \ No newline at end of file +8. [Check the created GitHub release.](https://github.com/skycoin/skywire/releases/) diff --git a/docker/images/visor/Dockerfile b/docker/images/visor/Dockerfile index 5125a48b64..7b0d6fc4cd 100644 --- a/docker/images/visor/Dockerfile +++ b/docker/images/visor/Dockerfile @@ -14,10 +14,12 @@ WORKDIR skywire RUN go build -mod=vendor -tags netgo -ldflags="-w -s" \ -o skywire-visor cmd/skywire-visor/skywire-visor.go &&\ - go build -mod=vendor -ldflags="-w -s" -o skywire-cli ./cmd/skywire-cli &&\ - go build -mod=vendor -ldflags="-w -s" -o ./apps/skychat ./cmd/apps/skychat &&\ - go build -mod=vendor -ldflags="-w -s" -o ./apps/skysocks ./cmd/apps/skysocks &&\ - go build -mod=vendor -ldflags="-w -s" -o ./apps/skysocks-client ./cmd/apps/skysocks-client + go build -mod=vendor -ldflags="-w -s" -o skywire-cli ./cmd/skywire-cli &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/skychat ./cmd/apps/skychat &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/skysocks ./cmd/apps/skysocks &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/skysocks-client ./cmd/apps/skysocks-client && \ + go build -mod=vendor -ldflags="-w -s" -o ./apps/vpn-server ./cmd/apps/vpn-server && \ + go build -mod=vendor -ldflags="-w -s" -o ./apps/vpn-client ./cmd/apps/vpn-client ## Resulting image From 79051c786d7fe569389e44ee8f1aeee37c1d945b Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Mon, 3 May 2021 12:33:39 +0700 Subject: [PATCH 11/12] fix generate config on docker mount dir --- docker/images/visor/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/images/visor/entrypoint.sh b/docker/images/visor/entrypoint.sh index c990c5f841..415c189d3f 100755 --- a/docker/images/visor/entrypoint.sh +++ b/docker/images/visor/entrypoint.sh @@ -9,7 +9,7 @@ if [ "$#" -ne 1 ]; then test -f /opt/config/skywire-config.json || { echo "no config found, generating one...." && /bin/skywire-cli visor gen-config -o /opt/config/skywire-config.json -r --is-hypervisor && - # sed -i 's/localhost//g' /opt/config/skywire-config.json && + sed -i 's/localhost//g' /opt/config/skywire-config.json && echo "config generated." && exit 0 } From 40f53ac050f7aa249ed10fde6875a02737efa9b4 Mon Sep 17 00:00:00 2001 From: Alexander Adhyatma Date: Mon, 3 May 2021 20:58:05 +0700 Subject: [PATCH 12/12] fixes config mount directory --- README.md | 6 +++--- docker/images/visor/entrypoint.sh | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 8c80f2c23c..c30cf65b6f 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ $ skywire-cli visor gen-config --is-hypervisor Docker container will create config automatically for you, should you want to run it manually, you can do: ```bash -$ docker run --rm -v :/opt/config \ +$ docker run --rm -v :/opt/skywire \ skycoin/skywire:latest skywire-cli gen-config --is-hypervisor ``` @@ -61,7 +61,7 @@ $ skywire-cli visor update-config --hypervisor-pks Or from docker image: ```bash -$ docker run --rm -v :/opt/config \ +$ docker run --rm -v :/opt/skywire \ skycoin/skywire:latest skywire-cli update-config hypervisor-pks ``` @@ -80,7 +80,7 @@ $ sudo skywire-visor -c skywire-config.json Or from docker image: ```bash -docker run --rm -p 8000:8000 -v :/opt/config --name=skywire skycoin/skywire:latest skywire-visor +docker run --rm -p 8000:8000 -v :/opt/skywire --name=skywire skycoin/skywire:latest skywire-visor ``` `skywire-visor` can be run on Windows. The setup requires additional setup steps that are specified diff --git a/docker/images/visor/entrypoint.sh b/docker/images/visor/entrypoint.sh index 415c189d3f..6d69eb2d3b 100755 --- a/docker/images/visor/entrypoint.sh +++ b/docker/images/visor/entrypoint.sh @@ -1,15 +1,15 @@ #!/bin/sh -test -d /opt/config || { +test -d /opt/skywire || { echo "no docker volume mounted, exiting..." exit 1 } if [ "$#" -ne 1 ]; then - test -f /opt/config/skywire-config.json || { + test -f /opt/skywire/skywire-config.json || { echo "no config found, generating one...." && - /bin/skywire-cli visor gen-config -o /opt/config/skywire-config.json -r --is-hypervisor && - sed -i 's/localhost//g' /opt/config/skywire-config.json && + /bin/skywire-cli visor gen-config -o /opt/skywire/skywire-config.json -r --is-hypervisor && + sed -i 's/localhost//g' /opt/skywire/skywire-config.json && echo "config generated." && exit 0 } @@ -22,7 +22,7 @@ echo "$@" case "$cmd" in skywire-visor) - ./"$cmd" -c /opt/config/skywire-config.json "$@" + ./"$cmd" -c /opt/skywire/skywire-config.json "$@" ;; skywire-cli) /bin/skywire-cli "$@"