Pages - Menu

2022年4月11日 星期一

[drone] build Open Source Edition,打包drone社群版

前言

在某一天,drone就跳出來了 『Your license limit is exceeded。』
當下真是嚇死我了,當天又是維護日,
一堆程式要上版,自動佈署掛掉就完了,要通通手動上。
還好,沒事,只是跳個通知在那邊,查了一些文件,
都沒說到期了會怎樣,就這樣過了兩個月,
也都沒事發生,本來想繼續撐下去的,
但有其他東西要用,就順便一起動了。


正文




官方文件有寫到關於權限的部分,

  • Your license limit is exceeded ,這個是因為你build 超過了5000次,然後你又是直接抓官方版本的image才會出現這個通知。(OS:一開始測試當然直接抓官方的image來用阿…)
  • 基本上只要是年收入沒到 1 million(美金)的公司,都能免費使用,但要自己打包image。

其他細項,可自行參考官方網站

Build image

我們可以先從官方的github看看,他們是怎麼編譯的。

drone.yml

  1. 先執行, scripts/build.sh
  2. 再根據 docker/Dockerfile.server.linux.amd64 的dockerfile去打包程式。

下面這段,直接存成dockerfile去編譯吧,
版本號自行更改。


補充說明,

docker 在編譯的時候,
每一行指令 (前面有加 RUN 或COPY…的這種算一行),
都算是一個新的image,可以看到sha256的數值都不一樣,
所以用 cd drone 切 路徑的話,要再同一行把要執行的command,
都執行完。

FROM golang AS Builder

ENV DRONE_VERSION v2.9.1
WORKDIR $GOPATH/src
RUN git clone  https://github.com/drone/drone --branch ${DRONE_VERSION} --single-branch
RUN cd drone && pwd  && go mod download && \
   go build -ldflags "-extldflags \"-static\"" -tags="nolimit" github.com/drone/drone/cmd/drone-server


FROM alpine:3.13 AS Certs

RUN apk add -U --no-cache ca-certificates

FROM alpine:3.13
EXPOSE 80 443
VOLUME /data

RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf

ENV GODEBUG netdns=go
ENV XDG_CACHE_HOME /data
ENV DRONE_DATABASE_DRIVER sqlite3
ENV DRONE_DATABASE_DATASOURCE /data/database.sqlite
ENV DRONE_RUNNER_OS=linux
ENV DRONE_RUNNER_ARCH=amd64
ENV DRONE_SERVER_PORT=:80
ENV DRONE_SERVER_HOST=localhost
ENV DRONE_DATADOG_ENABLED=true
ENV DRONE_DATADOG_ENDPOINT=https://stats.drone.ci/api/v1/series

COPY --from=Certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=Builder go/src/drone/drone-server /bin/drone-server

ENTRYPOINT ["/bin/drone-server"]

本來想用go get 的方式,直接把程式build出來,
但一直卡在go 的版號限制,看了一些文章都說要改裡面的程式。
但這東西寫完,基本上就不會再動了。
只好用git clone把程式先抓下來,再build了。

ref.

沒有留言:

張貼留言