From 607f5c5943a37644b298b9f0caa2823d7f90adab Mon Sep 17 00:00:00 2001 From: Denis Gukov Date: Sun, 24 Dec 2023 14:49:11 +0500 Subject: [PATCH 1/6] feat(web): remove extra page --- web/src/router/index.js | 5 --- web/src/views/project/Billing.vue | 63 ------------------------------- 2 files changed, 68 deletions(-) delete mode 100644 web/src/views/project/Billing.vue diff --git a/web/src/router/index.js b/web/src/router/index.js index e3a6969b4..95e31f1ba 100644 --- a/web/src/router/index.js +++ b/web/src/router/index.js @@ -2,7 +2,6 @@ import Vue from 'vue'; import VueRouter from 'vue-router'; import History from '../views/project/History.vue'; import Activity from '../views/project/Activity.vue'; -import Billing from '../views/project/Billing.vue'; import Settings from '../views/project/Settings.vue'; import Templates from '../views/project/Templates.vue'; import TemplateView from '../views/project/TemplateView.vue'; @@ -38,10 +37,6 @@ const routes = [ path: '/project/:projectId/settings', component: Settings, }, - { - path: '/project/:projectId/billing', - component: Billing, - }, { path: '/project/:projectId/templates', component: Templates, diff --git a/web/src/views/project/Billing.vue b/web/src/views/project/Billing.vue deleted file mode 100644 index c74cf2082..000000000 --- a/web/src/views/project/Billing.vue +++ /dev/null @@ -1,63 +0,0 @@ - - - From 7e7a543e0397c3fad8212202f88a10f7d2fcb4ba Mon Sep 17 00:00:00 2001 From: Denis Gukov Date: Mon, 25 Dec 2023 04:00:28 +0500 Subject: [PATCH 2/6] feat(backend): default dialect to bolt --- util/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/config.go b/util/config.go index 941970a97..1b8962dfc 100644 --- a/util/config.go +++ b/util/config.go @@ -111,7 +111,7 @@ type ConfigType struct { BoltDb DbConfig `json:"bolt"` Postgres DbConfig `json:"postgres"` - Dialect string `json:"dialect" rule:"^mysql|bolt|postgres$" env:"SEMAPHORE_DB_DIALECT"` + Dialect string `json:"dialect" default:"bolt" rule:"^mysql|bolt|postgres$" env:"SEMAPHORE_DB_DIALECT"` // Format `:port_num` eg, :3000 // if : is missing it will be corrected From 34485b7b8e825a1a1f0e671e3d2a876c7d1c1796 Mon Sep 17 00:00:00 2001 From: Denis Gukov Date: Mon, 25 Dec 2023 04:17:12 +0500 Subject: [PATCH 3/6] feat(backend): add config option max_task_duration_sec --- services/tasks/RemoteJob.go | 12 ++++++++++++ util/config.go | 2 ++ 2 files changed, 14 insertions(+) diff --git a/services/tasks/RemoteJob.go b/services/tasks/RemoteJob.go index f38f4d286..90a9dc2ff 100644 --- a/services/tasks/RemoteJob.go +++ b/services/tasks/RemoteJob.go @@ -7,6 +7,7 @@ import ( "github.com/ansible-semaphore/semaphore/db" "github.com/ansible-semaphore/semaphore/db_lib" "github.com/ansible-semaphore/semaphore/lib" + "github.com/ansible-semaphore/semaphore/util" "net/http" "time" ) @@ -120,7 +121,16 @@ func (t *RemoteJob) Run(username string, incomingVersion *string) (err error) { tsk.RunnerID = runner.ID + startTime := time.Now() + + taskTimedOut := false + for { + if util.Config.MaxTaskDurationSec > 0 && int(time.Now().Sub(startTime).Seconds()) > util.Config.MaxTaskDurationSec { + taskTimedOut = true + break + } + time.Sleep(1_000_000_000) tsk = t.taskPool.GetTask(t.Task.ID) if tsk.Task.Status == lib.TaskSuccessStatus || @@ -138,6 +148,8 @@ func (t *RemoteJob) Run(username string, incomingVersion *string) (err error) { if tsk.Task.Status == lib.TaskFailStatus { err = fmt.Errorf("task failed") + } else if taskTimedOut { + err = fmt.Errorf("task timed out") } return diff --git a/util/config.go b/util/config.go index 1b8962dfc..32c70c348 100644 --- a/util/config.go +++ b/util/config.go @@ -169,6 +169,8 @@ type ConfigType struct { // oidc settings OidcProviders map[string]OidcProvider `json:"oidc_providers"` + MaxTaskDurationSec int `json:"max_task_duration_sec" env:"MAX_TASK_DURATION_SEC"` + // task concurrency MaxParallelTasks int `json:"max_parallel_tasks" default:"10" rule:"^[0-9]{1,10}$" env:"SEMAPHORE_MAX_PARALLEL_TASKS"` From 144a15f96fc0e45aba4de7b4f23b74f58583c7ef Mon Sep 17 00:00:00 2001 From: Denis Gukov Date: Mon, 25 Dec 2023 14:49:47 +0500 Subject: [PATCH 4/6] fix(runner): check runner id in request --- api/runners/runners.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/api/runners/runners.go b/api/runners/runners.go index bb1c3ca22..fa73a7ed3 100644 --- a/api/runners/runners.go +++ b/api/runners/runners.go @@ -102,6 +102,9 @@ func GetRunner(w http.ResponseWriter, r *http.Request) { } func UpdateRunner(w http.ResponseWriter, r *http.Request) { + + runner := context.Get(r, "runner").(db.Runner) + var body runners.RunnerProgress if !helpers.Bind(w, r, &body) { @@ -126,6 +129,11 @@ func UpdateRunner(w http.ResponseWriter, r *http.Request) { continue } + if tsk.RunnerID != runner.ID { + // TODO: add error message + continue + } + for _, logRecord := range job.LogRecords { tsk.Log2(logRecord.Message, logRecord.Time) } From c00f5a1ae4cae3f127aca3fd622fbd7f93f61119 Mon Sep 17 00:00:00 2001 From: Denis Gukov Date: Mon, 25 Dec 2023 21:10:39 +0500 Subject: [PATCH 5/6] feat: update go to v1.20 (#1690) * feat: update go to v1.20 * ci: golang version to 20 in github actions * ci: fix golang version --- .github/workflows/beta.yml | 4 ++-- .github/workflows/dev.yml | 6 +++--- .github/workflows/release.yml | 4 ++-- deployment/docker/ci/Dockerfile | 2 +- deployment/docker/ci/dredd.Dockerfile | 2 +- deployment/docker/dev/Dockerfile | 2 +- deployment/docker/prod/Dockerfile | 2 +- deployment/docker/prod/buildx.Dockerfile | 2 +- deployment/docker/prod/runner.buildx.Dockerfile | 2 +- go.mod | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml index 6111603f6..a818cada0 100644 --- a/.github/workflows/beta.yml +++ b/.github/workflows/beta.yml @@ -9,7 +9,7 @@ jobs: runs-on: [ubuntu-latest] steps: - uses: actions/setup-go@v3 - with: { go-version: 1.19 } + with: { go-version: '1.20' } - uses: actions/setup-node@v3 with: { node-version: '16' } @@ -36,7 +36,7 @@ jobs: runs-on: [ubuntu-latest] steps: - uses: actions/setup-go@v3 - with: { go-version: 1.19 } + with: { go-version: '1.20' } - run: go install github.com/go-task/task/v3/cmd/task@latest diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index c8eef63bd..3b225ff9c 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -11,7 +11,7 @@ jobs: runs-on: [ubuntu-latest] steps: - uses: actions/setup-go@v3 - with: { go-version: 1.19 } + with: { go-version: '1.20' } - uses: actions/setup-node@v3 with: { node-version: '16' } @@ -81,7 +81,7 @@ jobs: needs: [test-db-migration] steps: - uses: actions/setup-go@v3 - with: { go-version: 1.19 } + with: { go-version: '1.20' } - run: go install github.com/go-task/task/v3/cmd/task@latest @@ -97,7 +97,7 @@ jobs: if: github.ref == 'refs/heads/develop' steps: - uses: actions/setup-go@v3 - with: { go-version: 1.19 } + with: { go-version: '1.20' } - run: go install github.com/go-task/task/v3/cmd/task@latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8bf4e53d3..d10868204 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ jobs: runs-on: [ubuntu-latest] steps: - uses: actions/setup-go@v3 - with: { go-version: 1.19 } + with: { go-version: '1.20' } - uses: actions/setup-node@v3 with: { node-version: '16' } @@ -36,7 +36,7 @@ jobs: runs-on: [ubuntu-latest] steps: - uses: actions/setup-go@v3 - with: { go-version: 1.19 } + with: { go-version: '1.20' } - run: go install github.com/go-task/task/v3/cmd/task@latest diff --git a/deployment/docker/ci/Dockerfile b/deployment/docker/ci/Dockerfile index ea0db484d..fe521da23 100644 --- a/deployment/docker/ci/Dockerfile +++ b/deployment/docker/ci/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.19-alpine3.18 +FROM golang:1.20-alpine3.18 ENV SEMAPHORE_VERSION="development" SEMAPHORE_ARCH="linux_amd64" \ SEMAPHORE_CONFIG_PATH="${SEMAPHORE_CONFIG_PATH:-/etc/semaphore}" \ diff --git a/deployment/docker/ci/dredd.Dockerfile b/deployment/docker/ci/dredd.Dockerfile index eae72d815..e7d96b364 100644 --- a/deployment/docker/ci/dredd.Dockerfile +++ b/deployment/docker/ci/dredd.Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.19-alpine3.18 as golang +FROM golang:1.20-alpine3.18 as golang RUN apk add --no-cache curl git diff --git a/deployment/docker/dev/Dockerfile b/deployment/docker/dev/Dockerfile index 4b3f28fc2..b3b55c682 100644 --- a/deployment/docker/dev/Dockerfile +++ b/deployment/docker/dev/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.19-alpine3.18 +FROM golang:1.20-alpine3.18 ENV SEMAPHORE_VERSION="development" SEMAPHORE_ARCH="linux_amd64" \ SEMAPHORE_CONFIG_PATH="${SEMAPHORE_CONFIG_PATH:-/etc/semaphore}" \ diff --git a/deployment/docker/prod/Dockerfile b/deployment/docker/prod/Dockerfile index 746ab1a03..d8c939320 100644 --- a/deployment/docker/prod/Dockerfile +++ b/deployment/docker/prod/Dockerfile @@ -1,5 +1,5 @@ # ansible-semaphore production image -FROM golang:1.19-alpine3.18 as builder +FROM golang:1.20-alpine3.18 as builder COPY ./ /go/src/github.com/ansible-semaphore/semaphore WORKDIR /go/src/github.com/ansible-semaphore/semaphore diff --git a/deployment/docker/prod/buildx.Dockerfile b/deployment/docker/prod/buildx.Dockerfile index b4beefeea..e7eef805c 100644 --- a/deployment/docker/prod/buildx.Dockerfile +++ b/deployment/docker/prod/buildx.Dockerfile @@ -1,5 +1,5 @@ # ansible-semaphore production image -FROM --platform=$BUILDPLATFORM golang:1.19-alpine3.18 as builder +FROM --platform=$BUILDPLATFORM golang:1.20-alpine3.18 as builder COPY ./ /go/src/github.com/ansible-semaphore/semaphore WORKDIR /go/src/github.com/ansible-semaphore/semaphore diff --git a/deployment/docker/prod/runner.buildx.Dockerfile b/deployment/docker/prod/runner.buildx.Dockerfile index bf7b0bed5..bc56e65e7 100644 --- a/deployment/docker/prod/runner.buildx.Dockerfile +++ b/deployment/docker/prod/runner.buildx.Dockerfile @@ -1,5 +1,5 @@ # ansible-semaphore production image -FROM --platform=$BUILDPLATFORM golang:1.19-alpine3.18 as builder +FROM --platform=$BUILDPLATFORM golang:1.20-alpine3.18 as builder COPY ./ /go/src/github.com/ansible-semaphore/semaphore WORKDIR /go/src/github.com/ansible-semaphore/semaphore diff --git a/go.mod b/go.mod index 39a1279c9..2399e391f 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/ansible-semaphore/semaphore -go 1.19 +go 1.20 require ( github.com/Sirupsen/logrus v1.0.4 From 0f0587d755a7537c0135e369f9e5c6507c2b748c Mon Sep 17 00:00:00 2001 From: Denis Gukov Date: Mon, 25 Dec 2023 22:08:47 +0500 Subject: [PATCH 6/6] fix(backend): add password to update method --- db/sql/environment.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/db/sql/environment.go b/db/sql/environment.go index 79106fd40..31b745a2a 100644 --- a/db/sql/environment.go +++ b/db/sql/environment.go @@ -28,10 +28,11 @@ func (d *SqlDb) UpdateEnvironment(env db.Environment) error { } _, err = d.exec( - "update project__environment set name=?, json=?, env=? where id=?", + "update project__environment set name=?, json=?, env=?, password=? where id=?", env.Name, env.JSON, env.ENV, + env.Password, env.ID) return err }