Skip to content

Commit

Permalink
chore: implement automated deploy
Browse files Browse the repository at this point in the history
  • Loading branch information
massimo-ua committed Feb 15, 2025
1 parent ad4b006 commit 4089dca
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 132 deletions.
159 changes: 47 additions & 112 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,24 +1,3 @@
# GitLab CI configuration for Dependabot
#
# Usage:
# * Set the required global variables required for dependabot-gitlab
# https://docs.gitlab.com/ee/ci/variables/#variables
#
# SETTINGS__GITLAB_ACCESS_TOKEN = gitlab personal access token with `api`, `read_repository` access scope and at least `Developer` role
# SETTINGS__GITHUB_ACCESS_TOKEN = github personal access token with repository read scope
#
# * Create a pipeline schedule for each managed repository, package manager and directory
# https://docs.gitlab.com/ee/user/project/pipelines/schedules.html
#
# * Set in the schedule required variables
#
# PROJECT_PATH = group/repository
# PACKAGE_MANAGER_SET = bundler,composer,npm
# DIRECTORY = /
#
# https://gitlab.com/dependabot-gitlab/dependabot
# https://docs.gitlab.com/ee/ci/yaml/

variables:
DEPENDABOT_GITLAB_IMAGE: docker.io/andrcuns/dependabot-gitlab
DEPENDABOT_GITLAB_VERSION: 3.38.0-alpha.1
Expand All @@ -39,114 +18,70 @@ variables:
- cd /home/dependabot/app
- bundle exec rake "dependabot:update[${PROJECT_PATH:-$CI_PROJECT_PATH},${PACKAGE_MANAGER?},${DIRECTORY?}]"

bundler:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bbundler\b/'

pip:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bpip\b/'

npm:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /(\bnpm|yarn|pnpm\b)/'

maven:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bmaven\b/'

gradle:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bgradle\b/'

cargo:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bcargo\b/'

mix:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bmix\b/'

composer:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bcomposer\b/'

nuget:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bnuget\b/'

gomod:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bgomod\b/'

elm:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\belm\b/'

gitsubmodule:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bgitsubmodule\b/'

docker:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bdocker\b/'

terraform:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bterraform\b/'

pub:
extends: .dependabot-gitlab
rules:
- if: $DEPENDENCY_UPDATES_DISABLED
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule" && $PACKAGE_MANAGER_SET =~ /\bpub\b/'

# Used for CI/CD component release and test
#
include:
- local: .gitlab/ci/*.gitlab-ci.yml
rules:
- if: $CI_PROJECT_PATH == 'dependabot-gitlab/dependabot-standalone'

image: golang:1.24

stages:
- build
- deploy

variables:
BINARY_NAME: "projecta-web"
REMOTE_BIN_DIR: "~/bin"

build:
stage: build
script:
- cd cmd/web
- CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-w -s -X main.Version=${CI_COMMIT_SHA}" -o ../../builds/${BINARY_NAME}-${CI_COMMIT_SHA} .
artifacts:
paths:
- builds/${BINARY_NAME}-${CI_COMMIT_SHA}

deploy:
stage: deploy
needs: [build]
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: manual
script:
# Install SSH client
- apt-get update && apt-get install -y openssh-client

# Set up SSH
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- echo "$SSH_PUBLIC_KEY" > ~/.ssh/id_rsa.pub
- chmod 600 ~/.ssh/id_rsa.pub

# Add server to known hosts
- ssh-keyscan -H ${HOSTING_SERVER} >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts

# Upload binary and update symlink
- scp builds/${BINARY_NAME}-${CI_COMMIT_SHA} ${HOSTING_USER}@${HOSTING_SERVER}:${REMOTE_BIN_DIR}/
- |
ssh ${HOSTING_USER}@${HOSTING_SERVER} "cd ${REMOTE_BIN_DIR} && \
ln -sf ${BINARY_NAME}-${CI_COMMIT_SHA} ${BINARY_NAME} && \
ls -t ${BINARY_NAME}-* | tail -n +6 | xargs -r rm"
18 changes: 18 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Variables
BINARY_NAME=projecta-web
VERSION?=1.0.0
BUILD_DIR=builds
GOLANG_CROSS_VERSION?=1.24

.PHONY: clean build build-linux

clean:
rm -rf $(BUILD_DIR)

# Optional: for multiple architectures
build-linux:
cd cmd/web && CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-w -s -X main.Version=$(VERSION)" \
-o ../../$(BUILD_DIR)/$(BINARY_NAME) .

# Build for all platforms
build: clean build-linux
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
module gitlab.com/massimo-ua/projecta

go 1.23.0
go 1.24.0

require (
github.com/Rhymond/go-money v1.0.14
github.com/go-kit/kit v0.13.0
github.com/golang-jwt/jwt/v5 v5.2.1
github.com/golang-migrate/migrate/v4 v4.18.1
github.com/golang-migrate/migrate/v4 v4.18.2
github.com/google/uuid v1.6.0
github.com/gorilla/mux v1.8.1
github.com/huandu/go-sqlbuilder v1.33.1
github.com/huandu/go-sqlbuilder v1.34.0
github.com/jackc/pgx/v5 v5.7.2
github.com/rabbitmq/amqp091-go v1.10.0
golang.org/x/crypto v0.32.0
golang.org/x/crypto v0.33.0
)

require (
Expand All @@ -26,6 +26,6 @@ require (
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/lib/pq v1.10.9 // indirect
go.uber.org/atomic v1.11.0 // indirect
golang.org/x/sync v0.10.0 // indirect
golang.org/x/text v0.21.0 // indirect
golang.org/x/sync v0.11.0 // indirect
golang.org/x/text v0.22.0 // indirect
)
28 changes: 14 additions & 14 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ github.com/Rhymond/go-money v1.0.14/go.mod h1:iHvCuIvitxu2JIlAlhF0g9jHqjRSr+rpdO
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dhui/dktest v0.4.3 h1:wquqUxAFdcUgabAVLvSCOKOlag5cIZuaOjYIBOWdsR0=
github.com/dhui/dktest v0.4.3/go.mod h1:zNK8IwktWzQRm6I/l2Wjp7MakiyaFWv4G1hjmodmMTs=
github.com/dhui/dktest v0.4.4 h1:+I4s6JRE1yGuqflzwqG+aIaMdgXIorCf5P98JnaAWa8=
github.com/dhui/dktest v0.4.4/go.mod h1:4+22R4lgsdAXrDyaH4Nqx2JEz2hLp49MqQmm9HLCQhM=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/docker v27.2.0+incompatible h1:Rk9nIVdfH3+Vz4cyI/uhbINhEZ/oLmc+CBXmH6fbNk4=
Expand All @@ -33,8 +33,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang-migrate/migrate/v4 v4.18.1 h1:JML/k+t4tpHCpQTCAD62Nu43NUFzHY4CV3uAuvHGC+Y=
github.com/golang-migrate/migrate/v4 v4.18.1/go.mod h1:HAX6m3sQgcdO81tdjn5exv20+3Kb13cmGli1hrD6hks=
github.com/golang-migrate/migrate/v4 v4.18.2 h1:2VSCMz7x7mjyTXx3m2zPokOY82LTRgxK1yQYKo6wWQ8=
github.com/golang-migrate/migrate/v4 v4.18.2/go.mod h1:2CM6tJvn2kqPXwnXO/d3rAQYiyoIm180VsO8PRX6Rpk=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
Expand All @@ -46,8 +46,8 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/huandu/go-assert v1.1.6 h1:oaAfYxq9KNDi9qswn/6aE0EydfxSa+tWZC1KabNitYs=
github.com/huandu/go-assert v1.1.6/go.mod h1:JuIfbmYG9ykwvuxoJ3V8TB5QP+3+ajIA54Y44TmkMxs=
github.com/huandu/go-sqlbuilder v1.33.1 h1:lwLv8Azdi5BUmaG/QgRkzeaxyMjaqp5rj39oBbmTi1o=
github.com/huandu/go-sqlbuilder v1.33.1/go.mod h1:mS0GAtrtW+XL6nM2/gXHRJax2RwSW1TraavWDFAc1JA=
github.com/huandu/go-sqlbuilder v1.34.0 h1:m0l8JVVUfABCWOur3wldQ3X97WXuvvr/4UBACp7+f3s=
github.com/huandu/go-sqlbuilder v1.34.0/go.mod h1:mS0GAtrtW+XL6nM2/gXHRJax2RwSW1TraavWDFAc1JA=
github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=
github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
Expand Down Expand Up @@ -94,14 +94,14 @@ go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
Expand Down

0 comments on commit 4089dca

Please sign in to comment.