From e180456983e4267e8a1a37088775b5d410900635 Mon Sep 17 00:00:00 2001 From: techknowlogick Date: Wed, 14 Jul 2021 13:08:43 -0400 Subject: [PATCH] Change docker tag logic (#16421) * Change docker logic * Apply suggestions from code review Co-authored-by: Kyle D. * docs Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Lauris BH Co-authored-by: Kyle D. --- .drone.yml | 185 +++++++++++++++++- docker/manifest.rootless.tmpl | 7 +- docker/manifest.tmpl | 9 +- .../with-docker-rootless.en-us.md | 17 +- .../doc/installation/with-docker.en-us.md | 3 +- 5 files changed, 197 insertions(+), 24 deletions(-) diff --git a/.drone.yml b/.drone.yml index ac88d1c9898d..e766ba613424 100644 --- a/.drone.yml +++ b/.drone.yml @@ -691,7 +691,7 @@ steps: --- kind: pipeline -name: docker-linux-amd64-release +name: docker-linux-amd64-release-version platform: os: linux @@ -703,7 +703,6 @@ depends_on: trigger: ref: - - refs/heads/main - "refs/tags/**" event: exclude: @@ -754,6 +753,70 @@ steps: exclude: - pull_request +--- +kind: pipeline +name: docker-linux-amd64-release + +platform: + os: linux + arch: amd64 + +depends_on: + - testing-amd64 + - testing-arm64 + +trigger: + ref: + - refs/heads/main + event: + exclude: + - cron + +steps: + - name: fetch-tags + image: docker:git + commands: + - git fetch --tags --force + + - name: publish + pull: always + image: techknowlogick/drone-docker:latest + settings: + auto_tag: false + tags: dev-linux-amd64 + repo: gitea/gitea + build_args: + - GOPROXY=off + password: + from_secret: docker_password + username: + from_secret: docker_username + when: + event: + exclude: + - pull_request + + - name: publish-rootless + image: techknowlogick/drone-docker:latest + settings: + dockerfile: Dockerfile.rootless + auto_tag: false + tags: dev-linux-amd64-rootless + repo: gitea/gitea + build_args: + - GOPROXY=off + password: + from_secret: docker_password + username: + from_secret: docker_username + environment: + PLUGIN_MIRROR: + from_secret: plugin_mirror + when: + event: + exclude: + - pull_request + --- kind: pipeline name: docker-linux-arm64-dry-run @@ -788,7 +851,7 @@ steps: --- kind: pipeline -name: docker-linux-arm64-release +name: docker-linux-arm64-release-version platform: os: linux @@ -800,7 +863,6 @@ depends_on: trigger: ref: - - refs/heads/main - "refs/tags/**" event: exclude: @@ -856,7 +918,73 @@ steps: --- kind: pipeline -name: docker-manifest +name: docker-linux-arm64-release + +platform: + os: linux + arch: arm64 + +depends_on: + - testing-amd64 + - testing-arm64 + +trigger: + ref: + - refs/heads/main + event: + exclude: + - cron + +steps: + - name: fetch-tags + image: docker:git + commands: + - git fetch --tags --force + + - name: publish + pull: always + image: techknowlogick/drone-docker:latest + settings: + auto_tag: false + tags: dev-linux-arm64 + repo: gitea/gitea + build_args: + - GOPROXY=off + password: + from_secret: docker_password + username: + from_secret: docker_username + environment: + PLUGIN_MIRROR: + from_secret: plugin_mirror + when: + event: + exclude: + - pull_request + + - name: publish-rootless + image: techknowlogick/drone-docker:latest + settings: + dockerfile: Dockerfile.rootless + auto_tag: false + tags: dev-linux-arm64-rootless + repo: gitea/gitea + build_args: + - GOPROXY=off + password: + from_secret: docker_password + username: + from_secret: docker_username + environment: + PLUGIN_MIRROR: + from_secret: plugin_mirror + when: + event: + exclude: + - pull_request +--- +kind: pipeline +name: docker-manifest-version platform: os: linux @@ -888,12 +1016,54 @@ steps: trigger: ref: - - refs/heads/main - "refs/tags/**" event: exclude: - cron +depends_on: + - docker-linux-amd64-release-version + - docker-linux-arm64-release-version + +--- +kind: pipeline +name: docker-manifest + +platform: + os: linux + arch: amd64 + +steps: + - name: manifest-rootless + pull: always + image: plugins/manifest + settings: + auto_tag: false + ignore_missing: true + spec: docker/manifest.rootless.tmpl + password: + from_secret: docker_password + username: + from_secret: docker_username + + - name: manifest + image: plugins/manifest + settings: + auto_tag: false + ignore_missing: true + spec: docker/manifest.tmpl + password: + from_secret: docker_password + username: + from_secret: docker_username + +trigger: + ref: + - refs/heads/main + event: + exclude: + - cron + depends_on: - docker-linux-amd64-release - docker-linux-arm64-release @@ -927,7 +1097,10 @@ depends_on: - release-latest - docker-linux-amd64-release - docker-linux-arm64-release + - docker-linux-amd64-release-version + - docker-linux-arm64-release-version - docker-manifest + - docker-manifest-version - docs steps: diff --git a/docker/manifest.rootless.tmpl b/docker/manifest.rootless.tmpl index aed36caa4e87..1d14041ff276 100644 --- a/docker/manifest.rootless.tmpl +++ b/docker/manifest.rootless.tmpl @@ -1,18 +1,19 @@ -image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}-rootless +image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}dev{{/if}}-rootless {{#if build.tags}} tags: {{#each build.tags}} - {{this}}-rootless {{/each}} + - "latest-rootless" {{/if}} manifests: - - image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64-rootless + image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}dev{{/if}}-linux-amd64-rootless platform: architecture: amd64 os: linux - - image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64-rootless + image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}dev{{/if}}-linux-arm64-rootless platform: architecture: arm64 os: linux diff --git a/docker/manifest.tmpl b/docker/manifest.tmpl index 9678449628a1..43a57f7f2722 100644 --- a/docker/manifest.tmpl +++ b/docker/manifest.tmpl @@ -1,19 +1,20 @@ -image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} +image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}dev{{/if}} {{#if build.tags}} tags: {{#each build.tags}} - {{this}} {{/each}} + - "latest" {{/if}} manifests: - - image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 + image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{else}}dev-{{/if}}linux-amd64 platform: architecture: amd64 os: linux - - image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 + image: gitea/gitea:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{else}}dev-{{/if}}linux-arm64 platform: architecture: arm64 os: linux - variant: v8 + variant: v8 \ No newline at end of file diff --git a/docs/content/doc/installation/with-docker-rootless.en-us.md b/docs/content/doc/installation/with-docker-rootless.en-us.md index 53eaed3bb116..62902a8866b9 100644 --- a/docs/content/doc/installation/with-docker-rootless.en-us.md +++ b/docs/content/doc/installation/with-docker-rootless.en-us.md @@ -32,15 +32,14 @@ image as a service. Since there is no database available, one can be initialized Create a directory for `data` and `config` then paste the following content into a file named `docker-compose.yml`. Note that the volume should be owned by the user/group with the UID/GID specified in the config file. By default Gitea in docker will use uid:1000 gid:1000. If needed you can set ownership on those folders with the command: `sudo chown 1000:1000 config/ data/` If you don't give the volume correct permissions, the container may not start. -Also be aware that the tag `:latest-rootless` will install the current development version. -For a stable release you can use `:1-rootless` or specify a certain release like `:{{< version >}}-rootless`. +For a stable release you could use `:latest-rootless`, `:1-rootless` or specify a certain release like `:{{< version >}}-rootless`, but if you'd like to use the latest development version then `:dev-rootless` would be an appropriate tag. ```yaml version: "2" services: server: - image: gitea/gitea:latest-rootless + image: gitea/gitea:{{< version >}}-rootless restart: always volumes: - ./data:/var/lib/gitea @@ -63,7 +62,7 @@ version: "2" services: server: - image: gitea/gitea:latest-rootless + image: gitea/gitea:{{< version >}}-rootless restart: always volumes: - ./data:/var/lib/gitea @@ -87,7 +86,7 @@ version: "2" services: server: - image: gitea/gitea:latest-rootless + image: gitea/gitea:{{< version >}}-rootless + environment: + - GITEA__database__DB_TYPE=mysql + - GITEA__database__HOST=db:3306 @@ -128,7 +127,7 @@ version: "2" services: server: - image: gitea/gitea:latest-rootless + image: gitea/gitea:{{< version >}}-rootless environment: + - GITEA__database__DB_TYPE=postgres + - GITEA__database__HOST=db:5432 @@ -174,7 +173,7 @@ version: "2" + services: server: - image: gitea/gitea:latest-rootless + image: gitea/gitea:{{< version >}}-rootless restart: always volumes: - - ./data:/var/lib/gitea @@ -201,7 +200,7 @@ version: "2" services: server: - image: gitea/gitea:latest-rootless + image: gitea/gitea:{{< version >}}-rootless restart: always + user: 1001 volumes: @@ -262,7 +261,7 @@ docker-compose up -d - Rename folder (inside volume) gitea to custom - Edit app.ini if needed - Set START_SSH_SERVER = true -- Use image gitea/gitea:latest-rootless +- Use image gitea/gitea:{{< version >}}-rootless ## Managing Deployments With Environment Variables diff --git a/docs/content/doc/installation/with-docker.en-us.md b/docs/content/doc/installation/with-docker.en-us.md index 06917b5d8a41..3c51852fba98 100644 --- a/docs/content/doc/installation/with-docker.en-us.md +++ b/docs/content/doc/installation/with-docker.en-us.md @@ -34,8 +34,7 @@ image as a service. Since there is no database available, one can be initialized Create a directory like `gitea` and paste the following content into a file named `docker-compose.yml`. Note that the volume should be owned by the user/group with the UID/GID specified in the config file. If you don't give the volume correct permissions, the container may not start. -Also be aware that the tag `:latest` will install the current development version. -For a stable release you can use `:1` or specify a certain release like `:{{< version >}}`. +For a stable release you can use `:latest`, `:1` or specify a certain release like `:{{< version >}}`, but if you'd like to use the latest development version of Gitea then you could use the `:dev` tag. ```yaml version: "3"