Personalización de la apariencia de Drone CI 2.0

¡Escuchar!

Después de todo, si las estrellas están encendidas, ¿

significa que alguien las necesita?

(V.V. Mayakovsky)





Prefacio

Dio la casualidad de que hace algún tiempo, en uno de mis trabajos, tuve que configurar herramientas de desarrollo de código colectivo para un grupo de programadores de Fortran . Primero, configuraron Gitosis ellos mismos , luego Trac , pero todo el tiempo faltaba algo. Había problemas constantes con la inyección simultánea de código, así como con lo que se llama revisión de código ... En general, este grupo de desarrolladores ha crecido hasta convertirse en un sistema completo de desarrollo conjunto con CI / CD. Dado que el grupo no es rico, en el momento de la instalación del sistema de desarrollo conjunto, tenían un servidor de doble núcleo débil con 2 GB de RAM a su disposición. Por esta razón, la elección recayó en un grupo de Gogs + Drone . Pequeños escritos en Go, prácticamente sin ninguna "característica" especial del programa. Pero inmediatamente después de la siguiente inyección de código, fue posible verificar su ensamblaje y probar si funciona correctamente.





Así es como se ve la versión actual de Drone 0.8 utilizada en el modo "combate" .





Actualizar

, , , 2021 . Gitea Drone . Gogs Gitea , . Drone 0.8 1.x , , , . , , — . Gitea + Drone 1.10 Drone 2.0 (13 2021 ), .





Drone 2.0

Drone CI . -, Drone CI Harness CI, :





, ( ). , : , , — ? , , Drone UI .





, , CSS . , , . , , , CSS Drone UI. , Drone GitHub Drone UI. , (.drone.yml) Drone UI. Drone UI . , , . — , :





go get -v -insecure xxx.com/xxx/drone-ui
sed -i '' 's/github.com\/drone\/drone-ui/xxx.com\/xxx\/drone-ui/' ./handler/web/{logout,pages,web}.go
      
      



, , Go ( , - ), , . , — .





( ), Drone Drone UI . - , , Node.js, . .





, , . drone : (clone), Go (test), drone-server (build) Docker- (publish). — .drone.yml, drone:





---
kind: pipeline
type: docker
name: linux-amd64

platform:
  arch: amd64
  os: linux

steps:
- name: test
  image: golang:1.14.4
  commands:
  - go test ./...
  
- name: build
  image: golang:1.14.4
  commands:
  - sh scripts/build.sh
  environment:
    GOARCH: amd64
    GOOS: linux

- name: publish
  image: plugins/docker:18
  settings:
    auto_tag: true
    auto_tag_suffix: linux-amd64
    dockerfile: docker/Dockerfile.server.linux.amd64
    repo: drone/drone
    username:
      from_secret: docker_username
    password:
      from_secret: docker_password
  when:
    event:
    - push
    - tag
      
      



, , , Drone UI.





. drone:





- name: clone
  image: drone/git
  commands:
  - export DRONE_TAG=v2.0.0
  - export DRONE_COMMIT_REF=refs/tags/$DRONE_TAG
  - export DRONE_REMOTE_URL=https://github.com/drone/drone.git
  - clone
      
      



drone-ui:





- name: clone drone-ui
  image: drone/git
  commands:
  - export DRONE_COMMIT_BRANCH=drone2
  - export DRONE_COMMIT_REF=refs/heads/$DRONE_COMMIT_BRANCH
  - export DRONE_COMMIT_SHA=d96f1e26d4482663535cfc913f650956c914f27f
  - export DRONE_REMOTE_URL=https://github.com/drone/drone-ui.git
  - export DRONE_WORKSPACE=$DRONE_WORKSPACE_BASE/web
  - clone
      
      



. , , drone/git.





:





- name: clone patch
  image: drone/git
  commands:
  - export DRONE_WORKSPACE=$DRONE_WORKSPACE_BASE/patch
  - mkdir -p $DRONE_WORKSPACE
  - clone
      
      



. , Drone, , $DRONE_WORKSPACE_BASE



drone, patch



. , , :





clone:
  disable: true
      
      



drone-ui - CSS .





:





- name: patch drone-ui
  image: node:15.14.0
  commands:
  - cd $DRONE_WORKSPACE_BASE/web
  - patch -p1 < ../patch/drone-ui-2.0-customize.patch
      
      



, web drone-ui, () drone-server.





drone-ui:





- name: build drone-ui
  image: node:15.14.0
  commands:
  - cd $DRONE_WORKSPACE_BASE/web
  - npm install
  - npm run build
  environment:
    CI: false
      
      



Node.js, drone-ui . , CI



false



, (warnings) .





drone-ui — . dist_gen.go



, drone. :





- name: generate drone-ui
  image: golang:1.14.4
  commands:
  - cd $DRONE_WORKSPACE_BASE/web
  - go get github.com/bradrydzewski/togo
  - rm -vf dist/dist_gen.go
  - go generate ./dist
      
      



. togo, dist_gen.go



:





go get github.com/bradrydzewski/togo
      
      



, , dist_gen.go



:





go generate ./dist
      
      



( ) . , , :





rm -vf dist/dist_gen.go
      
      



drone drone-ui:





- name: replace drone-ui
  image: golang:1.14.4
  commands:
  - cd $DRONE_WORKSPACE_BASE/web
  - go mod init github.com/drone/drone-ui
  - cd $DRONE_WORKSPACE_BASE
  - go mod edit -replace=github.com/drone/drone-ui=./web
      
      



github.com/drone/drone-ui web:





go mod init github.com/drone/drone-ui
      
      



.





, , drone-ui , web:





go mod edit -replace=github.com/drone/drone-ui=./web
      
      



, . — ./web



. ./



, web.





drone-ui . drone :





- name: test
  image: golang:1.14.4
  commands:
  - export GOPATH=$DRONE_WORKSPACE_BASE/go
  - go test ./...

- name: build
  image: golang:1.14.4
  commands:
  - export GOPATH=$DRONE_WORKSPACE_BASE/go
  - sh scripts/build.sh
  - strip -s -R .comment release/linux/$GOARCH/drone-server
  environment:
    GOARCH: amd64
    GOOS: linux
      
      







export GOPATH=$DRONE_WORKSPACE_BASE/go
      
      



— , . , DRONE_WORKSPACE_BASE



/drone/src



, Drone CI.





,





strip -s -R .comment release/linux/$GOARCH/drone-server
      
      



, .





Docker- :





- name: publish
  image: plugins/docker:18
  settings:
    tags: [ latest, "2", "2.0", "2.0.0" ]
    dockerfile: docker/Dockerfile.server.linux.amd64
    repo: drone/drone-server-customized
    username:
      from_secret: docker_username
    password:
      from_secret: docker_password
    dry_run: true
  when:
    repo:
    - tkushnir/drone-server-customized
    branch:
    - main
    event:
      exclude:
      - pull_request
      
      



dry_run: true



, . .





Drone 2.0 :





Gitea Drone .





, , Drone. , - . , , , Vue Node.js .





Durante la actualización de Drone 0.8 a Drone 1.10 y luego a Drone 2.0, se descubrió que los pasos anteriores de los ensamblajes, que se realizaron en la versión 0.8 y normalmente se transfirieron a la versión 1.10 por la utilidad estándar, ya no son visibles . Este problema se resolvió de manera bastante simple. Si describo los pasos de la transición de Drone 0.8 a Drone 2.0, también compartiré esta experiencia.





También podría tener sentido compartir los problemas (y sus soluciones) que han surgido en la transición de Gogs a las últimas versiones de Gitea. Inicialmente, se pensó que esta transición sería bastante simple, pero resultó que aquí también hay algunos escollos.








All Articles