Menyesuaikan tampilan Drone CI 2.0

Mendengarkan!

Lagi pula, jika bintang-bintang menyala,

berarti seseorang membutuhkannya?

(V.V. Mayakovsky)





Kata pengantar

Kebetulan beberapa waktu lalu, di salah satu pekerjaan saya, saya harus menyiapkan alat pengembangan kode kolektif untuk satu grup programmer Fortran . Pertama, mereka menyiapkan Gitosis sendiri , lalu Trac , tetapi selalu ada sesuatu yang hilang. Ada masalah konstan dengan injeksi kode secara bersamaan, serta dengan apa yang disebut tinjauan kode ... Secara umum, kelompok pengembang ini telah berkembang menjadi sistem pengembangan bersama yang lengkap dengan CI / CD. Karena grup tidak kaya, pada saat pemasangan sistem pengembangan bersama, mereka memiliki server inti ganda yang lemah dengan RAM 2 GB yang mereka miliki. Untuk alasan ini, pilihan jatuh pada sekelompok Gogs + Drone . Yang kecil ditulis dalam Go, praktis tanpa "fitur" khusus dari program ini. Tetapi segera setelah injeksi kode berikutnya, menjadi mungkin untuk memeriksa perakitannya dan menguji apakah itu berfungsi dengan benar.





Seperti inilah tampilan versi Drone 0.8 saat ini yang digunakan dalam mode "pertempuran" .





Memperbarui

, , , 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 .





Selama peningkatan dari Drone 0.8 ke Drone 1.10 dan selanjutnya ke Drone 2.0, ditemukan bahwa langkah rakitan lama, yang dibuat di versi 0.8 dan biasanya ditransfer ke versi 1.10 oleh utilitas standar, tidak lagi terlihat . Masalah ini diselesaikan dengan cukup sederhana. Jika saya menjelaskan langkah-langkah transisi dari Drone 0.8 ke Drone 2.0, saya akan membagikan pengalaman ini juga.





Mungkin juga masuk akal untuk berbagi masalah (dan solusinya) yang muncul dalam transisi dari Gogs ke Gitea versi terbaru. Awalnya, transisi ini dianggap cukup sederhana, tetapi ternyata ada beberapa kendala di sini juga.








All Articles