Skip to content

Commit 92f9b78

Browse files
authored
Merge pull request #113 from puppetlabs/improve-devx
(RE-15696) Improve development experience
2 parents 3f34b85 + 45388de commit 92f9b78

File tree

12 files changed

+118
-98
lines changed

12 files changed

+118
-98
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
/*/**/vendor/bundle/
2-
/docker/**/vmpooler.yaml
2+
/docker/data/vmpooler*.yaml
33
/docker/data/*.json
44
.vagrant/
55
.idea/
66
helm-charts/vmpooler/charts/
77
/docker/data/redis/**
8-
!docker/data/**/*.yaml
98
!docker/data/**/.gitkeep

README.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
# vmpooler-deployment
22

3-
- [VMPooler Components](#vmpooler-components)
4-
- [Docker Registry](#docker-registry)
5-
- [Helm Repository](#helm-repository)
6-
- [Adding / updating charts](#adding--updating-charts)
7-
- [Development](#development)
8-
- [Docker Compose URLs](#docker-compose-urls)
9-
- [Deploy Chart for Testing](#deploy-chart-for-testing)
10-
- [Releasing](#releasing)
11-
- [Contributing](#contributing)
12-
- [License](#license)
3+
- [vmpooler-deployment](#vmpooler-deployment)
4+
- [VMPooler Components](#vmpooler-components)
5+
- [Docker Registry](#docker-registry)
6+
- [Helm Repository](#helm-repository)
7+
- [Adding / updating charts](#adding--updating-charts)
8+
- [Development](#development)
9+
- [Docker Compose URLs](#docker-compose-urls)
10+
- [Deploy Chart for Testing](#deploy-chart-for-testing)
11+
- [Releasing](#releasing)
12+
- [Contributing](#contributing)
13+
- [License](#license)
1314

1415
This repo contains Dockerfiles and a Helm chart that can be used to deploy [VMPooler](https://github.com/puppetlabs/vmpooler). The Release Engineering team at Puppet uses the code here as part of operating our VMPooler instances.
1516

@@ -64,21 +65,21 @@ Prerequisites:
6465

6566
```bash
6667
|-- vmpooler-projects
68+
| |--vmpooler
6769
| |--vmpooler-deployment
68-
| |--vmpooler-dns-google-clouddns
70+
| |--vmpooler-dns-gcp
6971
| |--vmpooler-provider-ec2
7072
| |--vmpooler-provider-gce
7173
| |--vmpooler-provider-vsphere
7274
```
7375

74-
2. From the `vmpooler-projects` directory run `docker build -t vmpooler-local -f vmpooler-deployment/docker/Dockerfile.local .`
75-
3. Run `docker compose -f vmpooler-deployment/docker/docker-compose.local.yml up`
76+
2. From the `vmpooler-projects/vmpooler-deployment` directory run `docker compose -f docker/docker-compose.dev.yml up --build`
7677

7778
- Develop via Git source:
78-
4. For the component(s) you are developing on, commit and push changes to a branch.
79-
5. Change to the `docker` directory and modify the `Gemfile` as needed to pull the gem(s) from your git branch.
80-
6. Run `./update-gemfile-lock` to update the `Gemfile.lock`
81-
7. Run `docker compose build && docker compose up`.
79+
1. For the component(s) you are developing on, commit and push changes to a branch.
80+
2. Change to the `docker` directory and modify the `Gemfile` as needed to pull the gem(s) from your git branch.
81+
3. Run `./update-gemfile-lock` to update the `Gemfile.lock`
82+
4. Run `docker compose build && docker compose up`.
8283

8384
When a dependency Helm chart is updated, be sure to run `./update-chart-lock` to update the lockfile, otherwise the test and release workflows will fail.
8485

@@ -91,7 +92,7 @@ These are the default ports used in the docker compose file, to change them edit
9192
| Redis Server | `localhost:6379` (Password: `vmpooler`) |
9293
| Redis Commander | <http://localhost:8080> (Credentials: `admin:admin`) |
9394
| Jaeger | <http://localhost:8081>
94-
| VMPooler API | <http://localhost:8082/api/v2> |
95+
| VMPooler API | <http://localhost:8082/api/v3> |
9596
| VMPooler Dashboard | <http://localhost:8082/dashboard> |
9697
| Metrics (API) | <http://localhost:8082/prometheus> |
9798
| Metrics (Manager) | <http://localhost:8083/prometheus> |

docker/.dockerignore

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Exclude everything by default; explicitly include necessary files
22
*
3+
!.rerun
4+
!docker-entrypoint.dev.sh
5+
!docker-entrypoint.sh
36
!Gemfile
7+
!Gemfile.dev
48
!Gemfile.lock
5-
!Gemfile.local
6-
!docker-entrypoint.sh

docker/.rerun

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
--dir /opt/vmpooler-projects/
2+
--pattern **/lib/**/*.{erb,rb}

docker/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ RUN chmod +x /usr/local/bin/docker-entrypoint.sh
3131

3232
COPY ./Gemfile* ./
3333

34-
RUN bundle config set --local jobs 3 && \
34+
RUN bundle config set --local jobs 3 without development && \
3535
bundle install
3636

3737
ENTRYPOINT ["docker-entrypoint.sh"]

docker/Dockerfile.local renamed to docker/Dockerfile.dev

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,15 @@ RUN apt-get update -qq && \
2424
apt-get autoremove -y && \
2525
rm -rf /var/lib/apt/lists/*
2626

27-
COPY vmpooler /opt/vmpooler
28-
COPY vmpooler-dns-gcp /opt/vmpooler-dns-gcp
29-
COPY vmpooler-provider-ec2 /opt/vmpooler-provider-ec2
30-
COPY vmpooler-provider-gce /opt/vmpooler-provider-gce
31-
COPY vmpooler-provider-vsphere /opt/vmpooler-provider-vsphere
32-
3327
RUN gem install bundler
3428

35-
COPY vmpooler-deployment/docker/docker-entrypoint.sh /usr/local/bin/
29+
COPY docker-entrypoint.dev.sh /usr/local/bin/docker-entrypoint.sh
3630

3731
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
3832

39-
COPY vmpooler-deployment/docker/Gemfile.local ./Gemfile
33+
COPY Gemfile.dev ./Gemfile
34+
COPY .rerun ./.rerun
4035

41-
RUN bundle config set --local jobs 3 && \
42-
bundle install
36+
RUN bundle config set --local jobs 3
4337

4438
ENTRYPOINT ["docker-entrypoint.sh"]

docker/Gemfile.dev

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
2+
3+
gem 'vmpooler', path: '/opt/vmpooler-projects/vmpooler'
4+
gem 'vmpooler-dns-gcp', path: '/opt/vmpooler-projects/vmpooler-dns-gcp'
5+
# gem 'vmpooler-provider-ec2', path: '/opt/vmpooler-projects/vmpooler-provider-ec2'
6+
gem 'vmpooler-provider-gce', path: '/opt/vmpooler-projects/vmpooler-provider-gce'
7+
gem 'vmpooler-provider-vsphere', path: '/opt/vmpooler-projects/vmpooler-provider-vsphere'
8+
9+
group :development do
10+
gem 'rerun', '~> 0.14'
11+
end

docker/Gemfile.local

Lines changed: 0 additions & 7 deletions
This file was deleted.

docker/data/vmpooler.yaml

Lines changed: 0 additions & 56 deletions
This file was deleted.

docker/docker-compose.local.yml renamed to docker/docker-compose.dev.yml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,14 @@ services:
3636

3737
vmpooler-api:
3838
# See image build instructions in README and Dockerfile.local
39-
image: vmpooler-local
39+
build:
40+
context: .
41+
dockerfile: ./Dockerfile.dev
42+
tty: true
4043
volumes:
44+
- type: bind
45+
source: ../../
46+
target: /opt/vmpooler-projects
4147
- type: bind
4248
source: ./data/vmpooler.yaml
4349
target: /etc/vmpooler/vmpooler.yaml
@@ -63,8 +69,14 @@ services:
6369

6470
vmpooler-manager:
6571
# See image build instructions in README and Dockerfile.local
66-
image: vmpooler-local
72+
build:
73+
context: .
74+
dockerfile: ./Dockerfile.dev
75+
tty: true
6776
volumes:
77+
- type: bind
78+
source: ../../
79+
target: /opt/vmpooler-projects
6880
- type: bind
6981
source: ./data/vmpooler.yaml
7082
target: /etc/vmpooler/vmpooler.yaml

0 commit comments

Comments
 (0)