From df9fc686f31befca94d66e9fc94437fe4b023220 Mon Sep 17 00:00:00 2001 From: Dejan K Date: Fri, 26 Dec 2025 09:55:42 +0100 Subject: [PATCH 1/6] Migrate to ubuntu2404 --- .semaphore/release.yml | 4 ++-- .semaphore/semaphore.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.semaphore/release.yml b/.semaphore/release.yml index e0c09c4..69c9f68 100644 --- a/.semaphore/release.yml +++ b/.semaphore/release.yml @@ -2,8 +2,8 @@ version: "v1.0" name: Release agent: machine: - type: e1-standard-4 - os_image: ubuntu2004 + type: f1-standard-2 + os_image: ubuntu2404 blocks: - name: "Release" task: diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml index 01d4427..9e3394d 100644 --- a/.semaphore/semaphore.yml +++ b/.semaphore/semaphore.yml @@ -2,8 +2,8 @@ version: v1.0 name: Agent agent: machine: - type: e1-standard-2 - os_image: ubuntu2004 + type: f1-standard-2 + os_image: ubuntu2404 execution_time_limit: minutes: 15 From bdb48e5222117ed8ac5296bc903e167f37fe585a Mon Sep 17 00:00:00 2001 From: hamir-suspect Date: Wed, 31 Dec 2025 11:59:23 +0100 Subject: [PATCH 2/6] chore: upgrade gemfiles --- test/hub_reference/Dockerfile | 2 +- test/hub_reference/Gemfile | 2 +- test/hub_reference/Gemfile.lock | 34 +++++++++++++++++++++------------ 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/test/hub_reference/Dockerfile b/test/hub_reference/Dockerfile index de94b69..1519a0e 100644 --- a/test/hub_reference/Dockerfile +++ b/test/hub_reference/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:2.7 +FROM ruby:3.3 WORKDIR /app diff --git a/test/hub_reference/Gemfile b/test/hub_reference/Gemfile index e03a992..97c4027 100644 --- a/test/hub_reference/Gemfile +++ b/test/hub_reference/Gemfile @@ -1,4 +1,4 @@ source 'https://rubygems.org' -gem 'sinatra' +gem 'sinatra', '>= 4.2.0' gem 'thin' diff --git a/test/hub_reference/Gemfile.lock b/test/hub_reference/Gemfile.lock index 5f05bf9..3348f4b 100644 --- a/test/hub_reference/Gemfile.lock +++ b/test/hub_reference/Gemfile.lock @@ -1,31 +1,41 @@ GEM remote: https://rubygems.org/ specs: + base64 (0.3.0) daemons (1.4.1) eventmachine (1.2.7) - mustermann (3.0.0) + logger (1.7.0) + mustermann (3.0.4) ruby2_keywords (~> 0.0.1) - rack (2.2.20) - rack-protection (3.0.4) - rack + rack (3.2.4) + rack-protection (4.2.1) + base64 (>= 0.1.0) + logger (>= 1.6.0) + rack (>= 3.0.0, < 4) + rack-session (2.1.1) + base64 (>= 0.1.0) + rack (>= 3.0.0) ruby2_keywords (0.0.5) - sinatra (3.0.4) + sinatra (4.2.1) + logger (>= 1.6.0) mustermann (~> 3.0) - rack (~> 2.2, >= 2.2.4) - rack-protection (= 3.0.4) + rack (>= 3.0.0, < 4) + rack-protection (= 4.2.1) + rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - thin (1.8.1) + thin (2.0.1) daemons (~> 1.0, >= 1.0.9) eventmachine (~> 1.0, >= 1.0.4) - rack (>= 1, < 3) - tilt (2.0.11) + logger + rack (>= 1, < 4) + tilt (2.6.1) PLATFORMS ruby DEPENDENCIES - sinatra + sinatra (>= 4.2.0) thin BUNDLED WITH - 2.1.4 + 2.4.22 From d7962ae99558c82bb665f51b8fd17a40fbd5544b Mon Sep 17 00:00:00 2001 From: hamir-suspect Date: Wed, 31 Dec 2025 12:14:23 +0100 Subject: [PATCH 3/6] chore: upgrade golang and rename api module --- .semaphore/semaphore.yml | 14 +++++++------- Dockerfile.test | 5 ++++- pkg/api/job_request.go | 2 +- pkg/api/job_request_test.go | 2 +- pkg/aws/aws.go | 2 +- pkg/docker/docker.go | 2 +- pkg/docker/docker_test.go | 2 +- pkg/eventlogger/default.go | 2 +- pkg/executors/shell_executor_test.go | 2 +- pkg/jobs/job_test.go | 2 +- pkg/kubernetes/client.go | 2 +- pkg/kubernetes/client_test.go | 2 +- pkg/kubernetes/image_validator.go | 2 +- pkg/kubernetes/image_validator_test.go | 2 +- pkg/listener/job_processor.go | 2 +- pkg/listener/listener_test.go | 2 +- pkg/listener/selfhostedapi/get_job.go | 2 +- pkg/server/server_test.go | 2 +- pkg/shell/env.go | 2 +- pkg/shell/env_test.go | 2 +- test/support/hub.go | 2 +- 21 files changed, 30 insertions(+), 27 deletions(-) diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml index 9e3394d..aa342aa 100644 --- a/.semaphore/semaphore.yml +++ b/.semaphore/semaphore.yml @@ -22,7 +22,7 @@ blocks: prologue: commands: - - sem-version go 1.23.8 + - sem-version go 1.24.11 - checkout jobs: @@ -41,7 +41,7 @@ blocks: - checkout - mv ~/.ssh/security-toolbox ~/.ssh/id_rsa - sudo chmod 600 ~/.ssh/id_rsa - - sem-version go 1.23.8 + - sem-version go 1.24.11 jobs: - name: Check dependencies commands: @@ -67,7 +67,7 @@ blocks: prologue: commands: - - sem-version go 1.23.8 + - sem-version go 1.24.11 - checkout - go version - go get @@ -100,7 +100,7 @@ blocks: prologue: commands: - - sem-version go 1.23.8 + - sem-version go 1.24.11 - checkout - go version - go get @@ -167,7 +167,7 @@ blocks: prologue: commands: - - sem-version go 1.23.8 + - sem-version go 1.24.11 - checkout - go version - go get @@ -204,7 +204,7 @@ blocks: prologue: commands: - - sem-version go 1.23.8 + - sem-version go 1.24.11 - checkout - go version - go get @@ -245,7 +245,7 @@ blocks: prologue: commands: - - sem-version go 1.23.8 + - sem-version go 1.24.11 - curl -sLO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && install minikube-linux-amd64 /tmp/ - /tmp/minikube-linux-amd64 config set WantUpdateNotification false - /tmp/minikube-linux-amd64 start --driver=docker diff --git a/Dockerfile.test b/Dockerfile.test index 0301d8d..ae2696a 100644 --- a/Dockerfile.test +++ b/Dockerfile.test @@ -4,6 +4,9 @@ RUN apt-get update && \ apt-get install curl -y && \ curl -sSL https://get.docker.com/ | sh && \ apt-get install -y ssh docker-compose-plugin && \ + # Install standalone docker-compose for backward compatibility + curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \ + chmod +x /usr/local/bin/docker-compose && \ # pin pyyaml to 5.3.1 until https://github.com/yaml/pyyaml/issues/724 is fixed pip install pyyaml==5.3.1 && \ pip install awscli @@ -29,4 +32,4 @@ ADD build/agent /app/agent WORKDIR /app -CMD service ssh restart && ./agent serve --port 30000 +CMD ["sh", "-c", "service ssh restart && ./agent serve --port 30000"] diff --git a/pkg/api/job_request.go b/pkg/api/job_request.go index 1a31c5b..395fa15 100644 --- a/pkg/api/job_request.go +++ b/pkg/api/job_request.go @@ -1,4 +1,4 @@ -package api +package agentapi import ( "encoding/base64" diff --git a/pkg/api/job_request_test.go b/pkg/api/job_request_test.go index f4760ed..6f84f5a 100644 --- a/pkg/api/job_request_test.go +++ b/pkg/api/job_request_test.go @@ -1,4 +1,4 @@ -package api +package agentapi import ( "encoding/base64" diff --git a/pkg/aws/aws.go b/pkg/aws/aws.go index 19b61b1..11c900a 100644 --- a/pkg/aws/aws.go +++ b/pkg/aws/aws.go @@ -6,7 +6,7 @@ import ( "strings" versions "github.com/hashicorp/go-version" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" log "github.com/sirupsen/logrus" ) diff --git a/pkg/docker/docker.go b/pkg/docker/docker.go index 074e076..171bcc8 100644 --- a/pkg/docker/docker.go +++ b/pkg/docker/docker.go @@ -7,7 +7,7 @@ import ( "regexp" "strings" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/semaphoreci/agent/pkg/aws" ) diff --git a/pkg/docker/docker_test.go b/pkg/docker/docker_test.go index 22398db..b986579 100644 --- a/pkg/docker/docker_test.go +++ b/pkg/docker/docker_test.go @@ -5,7 +5,7 @@ import ( "runtime" "testing" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/stretchr/testify/assert" ) diff --git a/pkg/eventlogger/default.go b/pkg/eventlogger/default.go index 688b657..15cf4af 100644 --- a/pkg/eventlogger/default.go +++ b/pkg/eventlogger/default.go @@ -7,7 +7,7 @@ import ( "path/filepath" "time" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" ) const LoggerMethodPull = "pull" diff --git a/pkg/executors/shell_executor_test.go b/pkg/executors/shell_executor_test.go index 5da6255..b3b2706 100644 --- a/pkg/executors/shell_executor_test.go +++ b/pkg/executors/shell_executor_test.go @@ -410,7 +410,7 @@ func Test__ShellExecutor__BrokenUnicode(t *testing.T) { assert.Equal(t, simplifiedEvents, []string{ fmt.Sprintf("directive: %s", testsupport.EchoBrokenUnicode()), - "\x96\x96\x96\x96\x96", + "\u0096\u0096\u0096\u0096\u0096", "Exit Code: 0", }) } diff --git a/pkg/jobs/job_test.go b/pkg/jobs/job_test.go index 009e8eb..6bcad3c 100644 --- a/pkg/jobs/job_test.go +++ b/pkg/jobs/job_test.go @@ -12,7 +12,7 @@ import ( "testing" "time" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/semaphoreci/agent/pkg/config" eventlogger "github.com/semaphoreci/agent/pkg/eventlogger" testsupport "github.com/semaphoreci/agent/test/support" diff --git a/pkg/kubernetes/client.go b/pkg/kubernetes/client.go index 0a47107..ad6e7cb 100644 --- a/pkg/kubernetes/client.go +++ b/pkg/kubernetes/client.go @@ -11,7 +11,7 @@ import ( "time" "github.com/ghodss/yaml" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/semaphoreci/agent/pkg/config" "github.com/semaphoreci/agent/pkg/docker" "github.com/semaphoreci/agent/pkg/retry" diff --git a/pkg/kubernetes/client_test.go b/pkg/kubernetes/client_test.go index 160311c..04683dd 100644 --- a/pkg/kubernetes/client_test.go +++ b/pkg/kubernetes/client_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" assert "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" diff --git a/pkg/kubernetes/image_validator.go b/pkg/kubernetes/image_validator.go index 1574a24..7ca8967 100644 --- a/pkg/kubernetes/image_validator.go +++ b/pkg/kubernetes/image_validator.go @@ -4,7 +4,7 @@ import ( "fmt" "regexp" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" ) type ImageValidator struct { diff --git a/pkg/kubernetes/image_validator_test.go b/pkg/kubernetes/image_validator_test.go index 081d2df..eb03f1b 100644 --- a/pkg/kubernetes/image_validator_test.go +++ b/pkg/kubernetes/image_validator_test.go @@ -3,7 +3,7 @@ package kubernetes import ( "testing" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/stretchr/testify/assert" ) diff --git a/pkg/listener/job_processor.go b/pkg/listener/job_processor.go index 1a66620..45239bd 100644 --- a/pkg/listener/job_processor.go +++ b/pkg/listener/job_processor.go @@ -11,7 +11,7 @@ import ( "syscall" "time" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/semaphoreci/agent/pkg/config" jobs "github.com/semaphoreci/agent/pkg/jobs" "github.com/semaphoreci/agent/pkg/kubernetes" diff --git a/pkg/listener/listener_test.go b/pkg/listener/listener_test.go index e12b7c6..0d64cdb 100644 --- a/pkg/listener/listener_test.go +++ b/pkg/listener/listener_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/semaphoreci/agent/pkg/config" "github.com/semaphoreci/agent/pkg/eventlogger" "github.com/semaphoreci/agent/pkg/listener/selfhostedapi" diff --git a/pkg/listener/selfhostedapi/get_job.go b/pkg/listener/selfhostedapi/get_job.go index 481330a..f0d6886 100644 --- a/pkg/listener/selfhostedapi/get_job.go +++ b/pkg/listener/selfhostedapi/get_job.go @@ -6,7 +6,7 @@ import ( "io/ioutil" "net/http" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" ) func (a *API) GetJobPath(jobID string) string { diff --git a/pkg/server/server_test.go b/pkg/server/server_test.go index 07ab25a..444d424 100644 --- a/pkg/server/server_test.go +++ b/pkg/server/server_test.go @@ -11,7 +11,7 @@ import ( "time" "github.com/golang-jwt/jwt/v4" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/stretchr/testify/assert" ) diff --git a/pkg/shell/env.go b/pkg/shell/env.go index e5b3bb5..4abb3e3 100644 --- a/pkg/shell/env.go +++ b/pkg/shell/env.go @@ -8,7 +8,7 @@ import ( "sort" "strings" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/semaphoreci/agent/pkg/config" ) diff --git a/pkg/shell/env_test.go b/pkg/shell/env_test.go index 17d313b..3c319f1 100644 --- a/pkg/shell/env_test.go +++ b/pkg/shell/env_test.go @@ -7,7 +7,7 @@ import ( "runtime" "testing" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/semaphoreci/agent/pkg/config" "github.com/stretchr/testify/assert" ) diff --git a/test/support/hub.go b/test/support/hub.go index 466c94e..f7ba44e 100644 --- a/test/support/hub.go +++ b/test/support/hub.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/semaphoreci/agent/pkg/api" + api "github.com/semaphoreci/agent/pkg/api" "github.com/semaphoreci/agent/pkg/listener/selfhostedapi" "github.com/semaphoreci/agent/pkg/retry" ) From cd0fa61a9d0a4391cdc652fe38d976d69ecd4639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Kutryj?= Date: Wed, 7 Jan 2026 11:35:59 +0100 Subject: [PATCH 4/6] toil(ci): adjust execution time limit, remove fail fast strategy --- .semaphore/semaphore.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml index aa342aa..f7b0fdf 100644 --- a/.semaphore/semaphore.yml +++ b/.semaphore/semaphore.yml @@ -6,11 +6,7 @@ agent: os_image: ubuntu2404 execution_time_limit: - minutes: 15 - -fail_fast: - stop: - when: true + minutes: 10 blocks: - name: "Lint" From cfb64cd77253c58a6648b2042063360181a9b8ca Mon Sep 17 00:00:00 2001 From: Dejan K Date: Wed, 14 Jan 2026 11:52:25 +0100 Subject: [PATCH 5/6] chore: migrate from docker-compose to docker compose command --- test/e2e_support/listener_mode.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/e2e_support/listener_mode.rb b/test/e2e_support/listener_mode.rb index ab0d778..42e5685 100644 --- a/test/e2e_support/listener_mode.rb +++ b/test/e2e_support/listener_mode.rb @@ -6,9 +6,9 @@ class ListenerMode def boot_up_agent File.write("/tmp/agent/config.yaml", $AGENT_CONFIG.to_yaml) - system "docker-compose -f test/e2e_support/docker-compose-listen.yml stop" - system "docker-compose -f test/e2e_support/docker-compose-listen.yml build" - system "docker-compose -f test/e2e_support/docker-compose-listen.yml up -d" + system "docker compose -f test/e2e_support/docker-compose-listen.yml stop" + system "docker compose -f test/e2e_support/docker-compose-listen.yml build" + system "docker compose -f test/e2e_support/docker-compose-listen.yml up -d" wait_for_agent_to_register_in_the_hub end From f2a2408dde0677ab250c7be6c9119985b0fe9cc9 Mon Sep 17 00:00:00 2001 From: Dejan K Date: Wed, 14 Jan 2026 12:02:30 +0100 Subject: [PATCH 6/6] chore: upgrade packages in self-hosted Dockerfile and add missing test dependencies --- Dockerfile.self_hosted | 2 +- test/hub_reference/Gemfile | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile.self_hosted b/Dockerfile.self_hosted index 71ea47f..e326223 100644 --- a/Dockerfile.self_hosted +++ b/Dockerfile.self_hosted @@ -8,7 +8,7 @@ ARG USER_GID=$USER_UID RUN groupadd --gid $USER_GID $USERNAME && \ useradd --uid $USER_UID --gid $USER_GID -m $USERNAME -RUN apt-get update -y && apt-get install -y --no-install-recommends ca-certificates curl +RUN apt-get update -y && apt-get upgrade -y && apt-get install -y --no-install-recommends ca-certificates curl RUN update-ca-certificates # kubectl is required to be present in the container running the agent diff --git a/test/hub_reference/Gemfile b/test/hub_reference/Gemfile index 97c4027..9eae7f5 100644 --- a/test/hub_reference/Gemfile +++ b/test/hub_reference/Gemfile @@ -2,3 +2,5 @@ source 'https://rubygems.org' gem 'sinatra', '>= 4.2.0' gem 'thin' +gem 'rackup' +gem 'puma'