Configured CI/CD with docker and jenkins
This commit is contained in:
parent
a715a3c1b8
commit
e22e908ce5
11 changed files with 104 additions and 1 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,4 +1,6 @@
|
|||
vendor
|
||||
mtg-price-vk
|
||||
go-mtg-vk
|
||||
*/.swp
|
||||
vk/token.go
|
||||
vk/secrets.go
|
||||
|
|
|
|||
6
Dockerfile
Normal file
6
Dockerfile
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
FROM golang:latest
|
||||
|
||||
COPY . ./go-mtg-vk
|
||||
WORKDIR go-mtg-vk
|
||||
ENTRYPOINT ./run.sh
|
||||
|
||||
21
Jenkinsfile
vendored
Normal file
21
Jenkinsfile
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
pipeline {
|
||||
agent any
|
||||
|
||||
stages {
|
||||
stage('Pull') {
|
||||
steps {
|
||||
git pull
|
||||
}
|
||||
}
|
||||
stage('Test') {
|
||||
steps {
|
||||
./deploy.sh test
|
||||
}
|
||||
}
|
||||
stage('Deploy') {
|
||||
steps {
|
||||
./deploy.sh prod
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,6 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
const HOST_NAME = "localhost:6379"
|
||||
const HOST_NAME = "redis:6379"
|
||||
const PASSWORD = ""
|
||||
const CACHE_EXPIRATION = time.Hour * 24
|
||||
|
|
|
|||
26
deploy.sh
Executable file
26
deploy.sh
Executable file
|
|
@ -0,0 +1,26 @@
|
|||
#!/bin/bash
|
||||
if [[ $1 = "test" ]]
|
||||
then
|
||||
TEST_NETWORK_NAME="go_mtg_vk_test_network"
|
||||
sudo docker network create $TEST_NETWORK_NAME || true
|
||||
TEST_REDIS_NAME="go_mtg_vk_test_redis"
|
||||
sudo docker run -d --rm --name $TEST_REDIS_NAME --network $TEST_NETWORK_NAME --net-alias redis redis
|
||||
TEST_IMAGE_NAME="go_mtg_vk_test_image"
|
||||
sudo docker build -t $TEST_IMAGE_NAME .
|
||||
TEST_CONTAINER_NAME="go_mtg_vk_test_container"
|
||||
sudo docker run --rm --name $TEST_CONTAINER_NAME --network $TEST_NETWORK_NAME -e MODE="test" -e VK_TOKEN=$VK_TOKEN -e VK_SECRET_KEY=$VK_SECRET_KEY -e VK_GROUP_ID=$VK_GROUP_ID -e VK_CONFIRMATION_STRING=$VK_CONFIRMATION_STRING $TEST_IMAGE_NAME
|
||||
EXIT_CODE=$$
|
||||
sudo docker rm -f $TEST_REDIS_NAME
|
||||
sudo docker image rm -f $TEST_IMAGE_NAME
|
||||
exit $EXIT_CODE
|
||||
elif [[ $1 = "prod" ]]
|
||||
then
|
||||
PROD_NETWORK_NAME="go_mtg_vk_prod_network"
|
||||
sudo docker network create $PROD_NETWORK_NAME || true
|
||||
PROD_REDIS_NAME="go_mtg_vk_prod_redis"
|
||||
sudo docker run -d --restart always --network $PROD_NETWORK_NAME --name $PROD_REDIS_NAME redis
|
||||
PROD_IMAGE_NAME="go_mtg_vk_prod_image"
|
||||
sudo docker build -t $PROD_IMAGE_NAME .
|
||||
PROD_CONTAINER_NAME="go_mtg_vk_prod_container"
|
||||
sudo docker run --network $PROD_NETWORK_NAME --restart always --name $PROD_CONTAINER_NAME -e MODE="prod" -e VK_TOKEN=$VK_TOKEN -e VK_SECRET_KEY=$VK_SECRET_KEY -e VK_GROUP_ID=$VK_GROUP_ID -e VK_CONFIRMATION_STRING=$VK_CONFIRMATION_STRING $PROD_IMAGE_NAME
|
||||
fi
|
||||
BIN
go-mtg-vk
BIN
go-mtg-vk
Binary file not shown.
1
go.mod
1
go.mod
|
|
@ -7,5 +7,6 @@ require (
|
|||
github.com/antchfx/xpath v1.0.0 // indirect
|
||||
github.com/gin-gonic/gin v1.4.0
|
||||
github.com/go-redis/redis v6.15.2+incompatible
|
||||
github.com/stretchr/testify v1.3.0
|
||||
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297
|
||||
)
|
||||
|
|
|
|||
3
go.sum
3
go.sum
|
|
@ -12,10 +12,13 @@ github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDA
|
|||
github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
|
||||
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc=
|
||||
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
|
||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
|
|
|
|||
20
jenkins/Dockerfile
Normal file
20
jenkins/Dockerfile
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
FROM jenkins/jenkins:latest
|
||||
USER root
|
||||
RUN apt update
|
||||
RUN apt install -y sudo
|
||||
RUN echo "jenkins ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
USER jenkins
|
||||
RUN sudo apt update
|
||||
RUN sudo apt install -y \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
gnupg-agent \
|
||||
software-properties-common
|
||||
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
||||
RUN sudo add-apt-repository \
|
||||
"deb [arch=amd64] https://download.docker.com/linux/debian \
|
||||
$(lsb_release -cs) \
|
||||
stable"
|
||||
RUN sudo apt update
|
||||
RUN sudo apt install -y docker-ce docker-ce-cli containerd.io
|
||||
14
jenkins/run.sh
Executable file
14
jenkins/run.sh
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
IMAGE_NAME="mtg_vk_go_jenkins_image"
|
||||
CONTAINER_NAME="mtg_vk_go_jenkins_container"
|
||||
sudo docker build -t $IMAGE_NAME .
|
||||
sudo docker run -d \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock\
|
||||
--name $CONTAINER_NAME\
|
||||
-e VK_TOKEN=$VK_TOKEN\
|
||||
-e VK_SECRET_KEY=$VK_SECRET_KEY\
|
||||
-e VK_GROUP_ID=$VK_GROUP_ID\
|
||||
-e VK_CONFIRMATION_STRING=$VK_CONFIRMATION_STRING\
|
||||
--name $CONTAINER_NAME\
|
||||
$IMAGE_NAME
|
||||
sudo docker exec -it $CONTAINER_NAME sudo service docker start
|
||||
10
run.sh
Executable file
10
run.sh
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
if [[ $MODE = "test" ]]
|
||||
then
|
||||
go test ./...
|
||||
elif [[ $MODE = "prod" ]]
|
||||
then
|
||||
go build .
|
||||
export GIN_MODE="release"
|
||||
./go-mtg-vk
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue