Ik ben aan het experimenteren met het deployen van een website via Capistrano. En dit lukt zover maar als ik kort na de eerste deployment nogmaals het project deploy dan blijft het proces hangen op connectie met de git
server (wachtwoord).
In de onderstaande situatie heb ik de paden en applicatienaam voorzien van placeholders.
Het gaat nu alleen even over deployen naar de staging server. Overigs ben ik vrij nieuw met deze workflow dus mochten jullie uit ervaring tips of verbeteringen hebben sta ik hier uiteraard voor open.
Relevante software en hardware die ik gebruik:
Capistrano
Git
Commandline (Terminal)
De situatie:
Git Server:
Develop branch
Master branch
Lokaal word per bug of task een aparte branch gemaakt, zodra de bugfix of task correct is uitgevoerd en gecontroleerd worden deze lokaal gemerged in de develop branch. En gepushed naar de git server.
Staging Server:
Om het project te kunnen beoordelen en controleren maak ik gebruik van een staging omgeving identiek aan de live omgeving.
Production Server:
Uiteindelijk nadat staging geheel akkoord is en alle tickets in het ticket systeem zijn afgehandeld merg ik alles in de master branch en zet ik versie tag (1.0.0) voor deze en gaat het project live.
Capistrano:
capfile
config/deploy.rb
config/deploy/staging.rb
Eerste keer deployen met (cap staging deploy) gaat goed. als ik vlak daarna opnieuw wil deployen hangt hij dus op password.
Overigs als je enige tijd wacht 20+ min en opnieuw het deploy command uitvoer deployed hij gewoon naar de staging server.
Mocht ik iets vergeten zijn zal ik dit aanvullen indien nodig.
server (wachtwoord).
In de onderstaande situatie heb ik de paden en applicatienaam voorzien van placeholders.
Het gaat nu alleen even over deployen naar de staging server. Overigs ben ik vrij nieuw met deze workflow dus mochten jullie uit ervaring tips of verbeteringen hebben sta ik hier uiteraard voor open.
Relevante software en hardware die ik gebruik:
Capistrano
Git
Commandline (Terminal)
De situatie:
Git Server:
Develop branch
Master branch
Lokaal word per bug of task een aparte branch gemaakt, zodra de bugfix of task correct is uitgevoerd en gecontroleerd worden deze lokaal gemerged in de develop branch. En gepushed naar de git server.
Staging Server:
Om het project te kunnen beoordelen en controleren maak ik gebruik van een staging omgeving identiek aan de live omgeving.
Production Server:
Uiteindelijk nadat staging geheel akkoord is en alle tickets in het ticket systeem zijn afgehandeld merg ik alles in de master branch en zet ik versie tag (1.0.0) voor deze en gaat het project live.
Capistrano:
capfile
code:
1
2
3
4
5
6
7
8
| # Load DSL and set up stages
require "capistrano/setup"
# Include default deployment tasks
require "capistrano/deploy"
# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r } |
config/deploy.rb
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| set :keep_releases, 10 # or any other number of releases you would like to keep
set :ssh_options, {
forward_agent: true,
port: 22
}
set :pty, true
set :format, :pretty
set :log_level, :debug
set :application, "Naam van Appicatie" # set the name of you application here
set :stages, ["staging", "production"] # Set staging and production environment
set :default_stage, "staging" # Use staging environment as the default one to prevent accidentally deploying to production
set :deploy_via, :remote_cache # it will only fetch from the repository on server, not clone the entire repository from scratch
set :use_sudo, false # do not use sudo
# Git
set :scm, :git # set git as a Source Code Manager
set :repo_url, "ssh://pad-naar-git-locatie.git"
set :branch, "develop" # set git branch here
# Serverrole
role :web, "gebruikersnaam@stagingserver.nl" # HTTP Server
role :app, "gebruikersnaam@stagingserver.nl" # server with your app
role :db, "gebruikersnaam@stagingserver.nl", :primary => true # database server
role :db, "gebruikersnaam@stagingserver.nl" |
config/deploy/staging.rb
code:
1
2
| set :tmp_dir, "/pad-naar-staging-locatie/applicatienaam/tmp" set :deploy_to, "/pad-naar-staging-locatie/applicatienaam" |
Eerste keer deployen met (cap staging deploy) gaat goed. als ik vlak daarna opnieuw wil deployen hangt hij dus op password.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| cap staging deploy --trace ** Invoke staging (first_time) ** Execute staging ** Invoke load:defaults (first_time) ** Execute load:defaults ** Invoke deploy (first_time) ** Execute deploy ** Invoke deploy:starting (first_time) ** Execute deploy:starting ** Invoke deploy:check (first_time) ** Execute deploy:check ** Invoke git:check (first_time) ** Invoke git:wrapper (first_time) ** Execute git:wrapper INFO [f1c58664] Running /usr/bin/env mkdir -p /pad-naar-staging-locatie/applicatienaam/tmp/ as gebruikersnaam@stagingserver.nl DEBUG [f1c58664] Command: /usr/bin/env mkdir -p /pad-naar-staging-locatie/applicatienaam/tmp/ Password:************* INFO [f1c58664] Finished in 3.083 seconds with exit status 0 (successful). DEBUG Uploading /pad-naar-staging-locatie/applicatienaam/tmp/git-ssh.sh 0.0% INFO Uploading /pad-naar-staging-locatie/applicatienaam/tmp/git-ssh.sh 100.0% INFO [abe882ed] Running /usr/bin/env chmod +rx /pad-naar-staging-locatie/applicatienaam/tmp/git-ssh.sh as gebruikersnaam@stagingserver.nl DEBUG [abe882ed] Command: /usr/bin/env chmod +rx /pad-naar-staging-locatie/applicatienaam/tmp/git-ssh.sh INFO [abe882ed] Finished in 0.014 seconds with exit status 0 (successful). ** Execute git:check INFO [9f4b3e07] Running /usr/bin/env git ls-remote --heads ssh://pad-naar-git-locatie.git as gebruikersnaam@stagingserver.nl DEBUG [9f4b3e07] Command: ( export GIT_ASKPASS="/bin/echo" GIT_SSH="/pad-naar-staging-locatie/applicatienaam/tmp/git-ssh.sh" ; /usr/bin/env git ls-remote --heads ssh://pad-naar-git-locatie.git ) DEBUG [9f4b3e07] Password: |
Overigs als je enige tijd wacht 20+ min en opnieuw het deploy command uitvoer deployed hij gewoon naar de staging server.
Mocht ik iets vergeten zijn zal ik dit aanvullen indien nodig.
You're not completely useless, you can always serve as a bad example!