From 273a0c3553ba5725c885c6bb61f47bc01daaffcc Mon Sep 17 00:00:00 2001 From: Matthias Kesler Date: Fri, 6 Sep 2024 14:00:33 +0200 Subject: [PATCH 1/3] implement cache.advertise_url --- go.mod | 3 ++- go.sum | 4 ++-- internal/app/cmd/cache-server.go | 12 +++++++++--- internal/app/cmd/exec.go | 2 +- internal/app/run/runner.go | 1 + internal/pkg/config/config.go | 1 + 6 files changed, 16 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index a8a5ca2..5ec2139 100644 --- a/go.mod +++ b/go.mod @@ -98,6 +98,7 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect ) -replace github.com/nektos/act => gitea.com/gitea/act v0.261.4 +// replace github.com/nektos/act => gitea.com/gitea/act v0.261.4 +replace github.com/nektos/act => gitea.krombel.de/krombel/act v0.261.6-1 replace github.com/go-git/go-git/v5 => github.com/go-git/go-git/v5 v5.16.2 diff --git a/go.sum b/go.sum index 670e8c1..3a3b92b 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ connectrpc.com/connect v1.16.2 h1:ybd6y+ls7GOlb7Bh5C8+ghA6SvCBajHwxssO2CGFjqE= connectrpc.com/connect v1.16.2/go.mod h1:n2kgwskMHXC+lVqb18wngEpF95ldBHXjZYJussz5FRc= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -gitea.com/gitea/act v0.261.4 h1:Tf9eLlvsYFtKcpuxlMvf9yT3g4Hshb2Beqw6C1STuH8= -gitea.com/gitea/act v0.261.4/go.mod h1:Pg5C9kQY1CEA3QjthjhlrqOC/QOT5NyWNjOjRHw23Ok= +gitea.krombel.de/krombel/act v0.261.6-1 h1:aIouPZ9MlGOOfvXpXBzUmBZ76679uJfUWda/i/paVwQ= +gitea.krombel.de/krombel/act v0.261.6-1/go.mod h1:Pg5C9kQY1CEA3QjthjhlrqOC/QOT5NyWNjOjRHw23Ok= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= diff --git a/internal/app/cmd/cache-server.go b/internal/app/cmd/cache-server.go index 21b3352..d34da54 100644 --- a/internal/app/cmd/cache-server.go +++ b/internal/app/cmd/cache-server.go @@ -17,9 +17,10 @@ import ( ) type cacheServerArgs struct { - Dir string - Host string - Port uint16 + Dir string + AdvertiseUrl string + Host string + Port uint16 } func runCacheServer(ctx context.Context, configFile *string, cacheArgs *cacheServerArgs) func(cmd *cobra.Command, args []string) error { @@ -33,6 +34,7 @@ func runCacheServer(ctx context.Context, configFile *string, cacheArgs *cacheSer var ( dir = cfg.Cache.Dir + url = cfg.Cache.AdvertiseUrl host = cfg.Cache.Host port = cfg.Cache.Port ) @@ -41,6 +43,9 @@ func runCacheServer(ctx context.Context, configFile *string, cacheArgs *cacheSer if cacheArgs.Dir != "" { dir = cacheArgs.Dir } + if cacheArgs.AdvertiseUrl != "" { + url = cacheArgs.AdvertiseUrl + } if cacheArgs.Host != "" { host = cacheArgs.Host } @@ -50,6 +55,7 @@ func runCacheServer(ctx context.Context, configFile *string, cacheArgs *cacheSer cacheHandler, err := artifactcache.StartHandler( dir, + url, host, port, log.StandardLogger().WithField("module", "cache_request"), diff --git a/internal/app/cmd/exec.go b/internal/app/cmd/exec.go index 6337951..9cd791f 100644 --- a/internal/app/cmd/exec.go +++ b/internal/app/cmd/exec.go @@ -368,7 +368,7 @@ func runExec(ctx context.Context, execArgs *executeArgs) func(cmd *cobra.Command } // init a cache server - handler, err := artifactcache.StartHandler("", "", 0, log.StandardLogger().WithField("module", "cache_request")) + handler, err := artifactcache.StartHandler("", "", "", 0, log.StandardLogger().WithField("module", "cache_request")) if err != nil { return err } diff --git a/internal/app/run/runner.go b/internal/app/run/runner.go index a372d98..810fc64 100644 --- a/internal/app/run/runner.go +++ b/internal/app/run/runner.go @@ -58,6 +58,7 @@ func NewRunner(cfg *config.Config, reg *config.Registration, cli client.Client) } else { cacheHandler, err := artifactcache.StartHandler( cfg.Cache.Dir, + cfg.Cache.AdvertiseUrl, cfg.Cache.Host, cfg.Cache.Port, log.StandardLogger().WithField("module", "cache_request"), diff --git a/internal/pkg/config/config.go b/internal/pkg/config/config.go index afc34b9..7f49ec4 100644 --- a/internal/pkg/config/config.go +++ b/internal/pkg/config/config.go @@ -38,6 +38,7 @@ type Cache struct { Enabled *bool `yaml:"enabled"` // Enabled indicates whether caching is enabled. It is a pointer to distinguish between false and not set. If not set, it will be true. Dir string `yaml:"dir"` // Dir specifies the directory path for caching. Host string `yaml:"host"` // Host specifies the caching host. + AdvertiseUrl string `yaml:"advertise_url"` // Host specifies the caching host. Port uint16 `yaml:"port"` // Port specifies the caching port. ExternalServer string `yaml:"external_server"` // ExternalServer specifies the URL of external cache server } -- 2.39.5 From a0f617401dadc4433e954a52088fe32089625b79 Mon Sep 17 00:00:00 2001 From: Matthias Kesler Date: Fri, 6 Sep 2024 14:00:50 +0200 Subject: [PATCH 2/3] update go version for Dockerfile --- Dockerfile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 421eabf..6d65e93 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.24-alpine AS builder +FROM golang:1.24-alpine3.22 AS builder # Do not remove `git` here, it is required for getting runner version when executing `make build` RUN apk add --no-cache make git @@ -11,9 +11,8 @@ WORKDIR /opt/src/act_runner RUN make clean && make build -FROM docker:dind AS dind - -RUN apk add --no-cache s6 bash git +FROM alpine:3.22 +RUN apk add --no-cache git bash tini COPY --from=builder /opt/src/act_runner/act_runner /usr/local/bin/act_runner COPY scripts/run.sh /usr/local/bin/run.sh @@ -41,7 +40,7 @@ ENV DOCKER_HOST=unix:///run/user/1000/docker.sock USER rootless ENTRYPOINT ["s6-svscan","/etc/s6"] -FROM alpine AS basic +FROM alpine:3.22 AS basic RUN apk add --no-cache tini bash git COPY --from=builder /opt/src/act_runner/act_runner /usr/local/bin/act_runner -- 2.39.5 From 85315846a712654d006fd4b99edc28252d20454f Mon Sep 17 00:00:00 2001 From: Matthias Kesler Date: Fri, 6 Sep 2024 14:29:27 +0200 Subject: [PATCH 3/3] push release to local gitea instance --- .gitea/workflows/release-nightly.yml | 8 +++++--- .gitea/workflows/release-tag.yml | 12 +++++++----- internal/app/run/runner.go | 1 + 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/release-nightly.yml b/.gitea/workflows/release-nightly.yml index af73307..9d3bb49 100644 --- a/.gitea/workflows/release-nightly.yml +++ b/.gitea/workflows/release-nightly.yml @@ -9,6 +9,7 @@ on: jobs: goreleaser: runs-on: ubuntu-latest + if: false # not implemented on this instance steps: - uses: actions/checkout@v4 with: @@ -35,7 +36,6 @@ jobs: container: image: catthehacker/ubuntu:act-latest env: - DOCKER_ORG: gitea DOCKER_LATEST: nightly steps: - name: Checkout @@ -52,12 +52,14 @@ jobs: - name: Login to DockerHub uses: docker/login-action@v3 with: + registry: ${{ github.server_url }} username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | + echo REGISTRY=$(echo ${GITHUB_SERVER_URL} | awk -F[/:] '{print $4}') >> $GITHUB_ENV echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT echo REPO_VERSION=${GITHUB_REF_NAME#v} >> $GITHUB_OUTPUT @@ -72,7 +74,7 @@ jobs: linux/arm64 push: true tags: | - ${{ env.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ env.DOCKER_LATEST }} + ${{ env.REGISTRY }}/${{ github.repository }}:${{ env.DOCKER_LATEST }} - name: Build and push dind uses: docker/build-push-action@v5 @@ -98,4 +100,4 @@ jobs: linux/arm64 push: true tags: | - ${{ env.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ env.DOCKER_LATEST }}-dind-rootless + ${{ env.REGISTRY }}/${{ github.repository }}:${{ env.DOCKER_LATEST }}-dind-rootless diff --git a/.gitea/workflows/release-tag.yml b/.gitea/workflows/release-tag.yml index 7735f7e..51fb84a 100644 --- a/.gitea/workflows/release-tag.yml +++ b/.gitea/workflows/release-tag.yml @@ -8,6 +8,7 @@ on: jobs: goreleaser: runs-on: ubuntu-latest + if: false # disabled as goreleaser is not implemented on my instance steps: - uses: actions/checkout@v4 with: @@ -42,7 +43,6 @@ jobs: container: image: catthehacker/ubuntu:act-latest env: - DOCKER_ORG: gitea DOCKER_LATEST: latest steps: - name: Checkout @@ -59,12 +59,14 @@ jobs: - name: Login to DockerHub uses: docker/login-action@v3 with: + registry: ${{ github.server_url }} username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Get Meta id: meta run: | + echo REGISTRY=$(echo ${GITHUB_SERVER_URL} | awk -F[/:] '{print $4}') >> $GITHUB_ENV echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT echo REPO_VERSION=${GITHUB_REF_NAME#v} >> $GITHUB_OUTPUT @@ -79,8 +81,8 @@ jobs: linux/arm64 push: true tags: | - ${{ env.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }} - ${{ env.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ env.DOCKER_LATEST }} + ${{ env.REGISTRY }}/${{ github.repository }}:${{ steps.meta.outputs.REPO_VERSION }} + ${{ env.REGISTRY }}/${{ github.repository }}:${{ env.DOCKER_LATEST }} - name: Build and push dind uses: docker/build-push-action@v5 @@ -107,5 +109,5 @@ jobs: linux/arm64 push: true tags: | - ${{ env.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}-dind-rootless - ${{ env.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ env.DOCKER_LATEST }}-dind-rootless + ${{ env.REGISTRY }}/${{ github.repository }}:${{ steps.meta.outputs.REPO_VERSION }}-dind-rootless + ${{ env.REGISTRY }}/${{ github.repository }}:${{ env.DOCKER_LATEST }}-dind-rootless diff --git a/internal/app/run/runner.go b/internal/app/run/runner.go index 810fc64..32860af 100644 --- a/internal/app/run/runner.go +++ b/internal/app/run/runner.go @@ -157,6 +157,7 @@ func (r *Runner) run(ctx context.Context, task *runnerv1.Task, reporter *report. Token: taskContext["token"].GetStringValue(), RepositoryOwner: taskContext["repository_owner"].GetStringValue(), RetentionDays: taskContext["retention_days"].GetStringValue(), + ServerURL: taskContext["server_url"].GetStringValue(), } if t := task.Secrets["GITEA_TOKEN"]; t != "" { preset.Token = t -- 2.39.5