diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..cd28ce09 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,35 @@ +name: push go app +on: + push: + branches: + - master +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@master + - name: setup go + uses: actions/setup-go@v3 + with: + go-version: 1.19 + - name: check go version + run: go version + - name: go mod init + run: go mod init github.com/thedevopsschool/user-service + - name: go mod tidy + run: go mod tidy + - name: go build + run: go build -o user-service + # - name: remove go mod init + # run: rm go.mod + + - name: Build and Push Docker Image + uses: mr-smithers-excellent/docker-build-push@v4 + with: + image: thedevopsschool/user-service + registry: docker.io + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml deleted file mode 100644 index 83d8b2f5..00000000 --- a/.github/workflows/main.yaml +++ /dev/null @@ -1,88 +0,0 @@ -name: ci - -on: - push: - branches: - - "*" # run for branches - tags: - - "*" # run for tags - pull_request: - branches: - - "*" # run for branches - tags: - - "*" # run for tags - -jobs: - test: - defaults: - run: - working-directory: go/src/github.com/microservices-demo/user - runs-on: ubuntu-latest - env: - GROUP: weaveworksdemos - COMMIT: ${{ github.sha }} - REPO: user - GO_VERSION: 1.7.5 - GOPATH: /home/runner/work/user/user/go - - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 1 - path: go/src/github.com/microservices-demo/user - - - uses: actions/setup-go@v1 - with: - go-version: ${{ env.GO_VERSION }} - - - name: Setup PATH - run: echo "${GOPATH}/bin" >> $GITHUB_PATH - - - name: Install dependencies - run: make deps && go get -v github.com/mattn/goveralls - - - name: Install/Downgrade MongoDB to version 3.6 - run: | - wget -qO - https://www.mongodb.org/static/pgp/server-3.6.asc | sudo apt-key add - - echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list - sudo apt-get update - sudo apt-get install -y --allow-downgrades mongodb-org=3.6.20 mongodb-org-server=3.6.20 mongodb-org-shell=3.6.20 mongodb-org-mongos=3.6.20 mongodb-org-tools=3.6.20 || echo "Error is misleading, it was successfully installed" - - - name: Unit Tests - run: glide novendor| xargs go test -v - - - name: Create cover profile - run: make coverprofile - - - name: Run Docker Test - run: make dockertest - - - name: Submit Coveralls - env: - COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: goveralls -coverprofile=cover.profile -service=github - - # Push to dockerhub - - name: Push user to Docker Hub - uses: docker/build-push-action@v1 - if: startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/master' - with: - username: ${{ secrets.DOCKER_USER }} - password: ${{ secrets.DOCKER_PASS }} - dockerfile: go/src/github.com/microservices-demo/user/docker/user/Dockerfile-release - path: go/src/github.com/microservices-demo/user - repository: ${{ env.GROUP }}/${{ env.REPO }} - tag_with_ref: true - tag_with_sha: true - - - name: Push user-db to Docker Hub - uses: docker/build-push-action@v1 - if: startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/master' - with: - username: ${{ secrets.DOCKER_USER }} - password: ${{ secrets.DOCKER_PASS }} - dockerfile: go/src/github.com/microservices-demo/user/docker/user-db/Dockerfile - path: go/src/github.com/microservices-demo/user/docker/user-db - repository: ${{ env.GROUP }}/${{ env.REPO }} - tag_with_ref: true - tag_with_sha: true diff --git a/Dockerfile b/Dockerfile index 8c331cba..6052ffe7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,11 @@ -FROM golang:1.7-alpine -ENV sourcesdir /go/src/github.com/microservices-demo/user/ -ENV MONGO_HOST mytestdb:27017 -ENV HATEAOS user -ENV USER_DATABASE mongodb +From golang:1.19-alpine -COPY . ${sourcesdir} -RUN apk update -RUN apk add git -RUN go get -v github.com/Masterminds/glide && cd ${sourcesdir} && glide install && go install +WORKDIR /app +COPY . /app +RUN whoami + +RUN go mod init github.com/thedevopsschool/user-service +RUN go mod tidy +RUN go build . +CMD ["/app/user-service"] -ENTRYPOINT user -EXPOSE 8084 diff --git a/docker/user/Dockerfile-release b/docker/user/Dockerfile-release deleted file mode 100644 index b116eee8..00000000 --- a/docker/user/Dockerfile-release +++ /dev/null @@ -1,34 +0,0 @@ -FROM golang:1.7-alpine - -COPY . /go/src/github.com/microservices-demo/user/ -WORKDIR /go/src/github.com/microservices-demo/user/ - -RUN apk update -RUN apk add git -RUN go get -v github.com/Masterminds/glide -RUN glide install && CGO_ENABLED=0 go build -a -installsuffix cgo -o /user main.go - -FROM alpine:3.4 - -ENV SERVICE_USER=myuser \ - SERVICE_UID=10001 \ - SERVICE_GROUP=mygroup \ - SERVICE_GID=10001 - -RUN addgroup -g ${SERVICE_GID} ${SERVICE_GROUP} && \ - adduser -g "${SERVICE_NAME} user" -D -H -G ${SERVICE_GROUP} -s /sbin/nologin -u ${SERVICE_UID} ${SERVICE_USER} - -ENV HATEAOS user -ENV USER_DATABASE mongodb -ENV MONGO_HOST user-db - -WORKDIR / -EXPOSE 8080 -COPY --from=0 /user / - -RUN chmod +x /user && \ - chown -R ${SERVICE_USER}:${SERVICE_GROUP} /user - -USER ${SERVICE_USER} - -CMD ["/user", "-port=8080"] diff --git a/doesntexist b/doesntexist new file mode 100644 index 00000000..8c331cba --- /dev/null +++ b/doesntexist @@ -0,0 +1,13 @@ +FROM golang:1.7-alpine +ENV sourcesdir /go/src/github.com/microservices-demo/user/ +ENV MONGO_HOST mytestdb:27017 +ENV HATEAOS user +ENV USER_DATABASE mongodb + +COPY . ${sourcesdir} +RUN apk update +RUN apk add git +RUN go get -v github.com/Masterminds/glide && cd ${sourcesdir} && glide install && go install + +ENTRYPOINT user +EXPOSE 8084