banner
uyoung

uyoung

twitter

JenkinsでGoアプリケーションをデプロイする

golang

Jenkins に Docker プラグインをインストールする#

Jenkins がインストールされていない場合は、前の記事を参照してください docker で Jenkins をデプロイする

アプリケーションの Docker パッケージングとデプロイメントなので、Go 環境はインストールしません(一つのステップが省略されました)

左側のシステム管理 -> プラグインの管理 -> 利用可能なプラグイン -> Dockerを検索します

Docker Pipelineを選択してインストールします

インストールが完了したら、Jenkins を再起動します

タスクの作成#

ホームに戻り、新しいタスクを選択します

フリースタイルなソフトウェアプロジェクトのビルドを選択します

プロジェクト名を入力します

タスクの編集#

ソースコード管理#

ソースコード管理で Git オプションを選択します

Repository URL:Git プロジェクトのアドレスまたは絶対パスを入力します
Credentials:Git の資格情報を入力します。パブリックプロジェクトの場合は入力しなくても構いません
Branches to build:監視するブランチ名を入力します。デフォルトは master ですが、GitHub でもデフォルトが main に変更されているので、間違えないように注意してください

ビルドトリガー#

その他のタスクトリガー、定期的なビルド、GitHub プロジェクトのポーリング、GitHub フック
一旦何も選択しなくても構いません。必要に応じて手動で実行してデバッグします

ビルド環境#

何も必要ありません。一番トラブルの起きやすい場所です

ビルド#

ここでは、シェルコマンドを使用してパッケージングとデプロイを行います

私の Jenkins はホストマシンの Docker に直接アクセスできるため、パッケージングが完了したら直接イメージが生成されます

IMAGES_NAME='go-qqbot'
CONTAINER_NAME='qqbot1'

echo "IMAGES_ID:$GIT_COMMIT"

docker build  -t ${IMAGES_NAME}  .
docker stop ${CONTAINER_NAME} || true
docker rm ${CONTAINER_NAME} || true
docker run -d --network botnetwork --name ${CONTAINER_NAME} ${IMAGES_NAME}
docker rmi $(docker images | grep "none" | awk '{print $3}')

echo "デプロイ完了!"

次に、Dockerfile ファイルを貼り付けます


FROM golang:1.15-alpine AS builder

RUN go env -w GO111MODULE=auto \
  && go env -w CGO_ENABLED=0 \
  && go env -w GOPROXY=https://mirrors.tencent.com/go/,https://goproxy.cn,direct

WORKDIR /build

COPY ./ .

RUN set -ex \
    && cd /build \
    && go build -ldflags "-s -w -extldflags '-static'" -o botqq

FROM alpine:latest

COPY --from=builder /build/botqq /usr/bin/botqq
RUN chmod +x /usr/bin/botqq

WORKDIR /data

ENTRYPOINT [ "/usr/bin/botqq" ]

golang:1.15-alpineイメージを使用してアプリケーションをパッケージ化し、パッケージ化されたファイルをalpine:latestにコピーして実行します

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。