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!