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
にコピーして実行します