Skip to content

Commit f1668e0

Browse files
committed
Chapter 12
1 parent 293854c commit f1668e0

File tree

68 files changed

+2666
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2666
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: deploy
2+
on:
3+
push:
4+
branches:
5+
- master
6+
jobs:
7+
deploy_aws_ecs:
8+
steps:
9+
- uses: actions/checkout@v2
10+
11+
- name: AWS - Config
12+
run: |
13+
aws configure set aws_access_key_id ${{ secrets.AWS_KEY }} --profile default
14+
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET }} --profile default
15+
aws configure set region ${{ secrets.AWS_REGION }} --profile default
16+
17+
- name: AWS ECR - Login
18+
run: |
19+
LOGIN_COMMAND=$(aws ecr get-login --no-include-email --region ${{ secrets.AWS_REGION }})
20+
$LOGIN_COMMAND
21+
22+
- name: Docker - Build image
23+
run: |
24+
docker build \
25+
--build-arg AWS_RDS_HOST=${{secrets.AWS_RDS_HOST}} \
26+
--build-arg AWS_RDS_USER=${{secrets.AWS_RDS_USER}} \
27+
--build-arg AWS_RDS_PASS=${{secrets.AWS_RDS_PASS}} \
28+
--build-arg AWS_RDS_DB=${{secrets.AWS_RDS_DB}} \
29+
--build-arg FS_NAME=${{secrets.FS_NAME}} \
30+
--build-arg FS_REGION=${{secrets.FS_REGION}} \
31+
--build-arg AWS_KEY=${{secrets.AWS_KEY}} \
32+
--build-arg AWS_SECRET=${{secrets.AWS_SECRET}} \
33+
-t "${{ secrets.AWS_ECR_IMAGE_NAME }}:latest" -f Dockerfile .
34+
35+
- name: Docker - Push image
36+
run: docker push "${{ secrets.AWS_ECR_IMAGE_NAME }}:latest"
37+
38+
- name: AWS ECS - deploy image
39+
run: |
40+
aws ecs update-service --cluster "${{ secrets.AWS_ECS_CLUSTER }}" \
41+
--service "${{ secrets.AWS_ECS_SERVICE }}" \
42+
--force-new-deployment
43+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: test
2+
on:
3+
- pull_request
4+
5+
jobs:
6+
7+
test_on_macos:
8+
runs-on: macos-latest
9+
env:
10+
DEVELOPER_DIR: /Applications/Xcode_11.4.1.app/Contents/Developer
11+
steps:
12+
- uses: actions/checkout@v2
13+
- run: xcrun swift test --enable-test-discovery --sanitize=thread
14+
15+
test_on_ubuntu_xenial:
16+
container:
17+
image: vapor/swift:5.2.2-xenial-ci
18+
runs-on: ubuntu-latest
19+
steps:
20+
- run: apt update -y; apt install -y libsqlite3-dev
21+
- uses: actions/checkout@v2
22+
- run: swift test --enable-test-discovery --sanitize=thread
23+
24+
test_on_ubuntu_bionic:
25+
container:
26+
image: vapor/swift:5.2.2-bionic-ci
27+
runs-on: ubuntu-latest
28+
steps:
29+
- run: apt update -y; apt install -y libsqlite3-dev
30+
- uses: actions/checkout@v2
31+
- run: swift test --enable-test-discovery --sanitize=thread

Chapter 12/myProject/.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Packages
2+
Resources/Views/
3+
.build
4+
xcuserdata
5+
*.xcodeproj
6+
DerivedData/
7+
.DS_Store
8+
db.sqlite
9+
.swiftpm
10+

Chapter 12/myProject/Dockerfile

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Build image
2+
FROM swift:5.2.3-bionic as build
3+
4+
RUN apt-get update -y \
5+
&& apt-get install -y libsqlite3-dev
6+
7+
WORKDIR /build
8+
9+
COPY . .
10+
11+
RUN for f in Sources/App/Modules/*; do \
12+
m=$(basename $f); \
13+
cp -r "${f}/Views/" "Resources/Views/${m}" 2>/dev/null; \
14+
done; \
15+
exit 0;
16+
17+
RUN swift build \
18+
--enable-test-discovery \
19+
-c release \
20+
-Xswiftc -g
21+
22+
# Run image
23+
FROM swift:5.2.3-bionic-slim
24+
25+
RUN useradd --user-group --create-home --home-dir /app vapor
26+
27+
WORKDIR /app
28+
29+
COPY --from=build --chown=vapor:vapor /build/.build/release /app
30+
COPY --from=build --chown=vapor:vapor /build/Public /app/Public
31+
COPY --from=build --chown=vapor:vapor /build/Resources /app/Resources
32+
33+
ARG AWS_RDS_HOST
34+
ARG AWS_RDS_USER
35+
ARG AWS_RDS_PASS
36+
ARG AWS_RDS_DB
37+
ARG FS_NAME
38+
ARG FS_REGION
39+
ARG AWS_KEY
40+
ARG AWS_SECRET
41+
42+
RUN echo "DB_HOST=${AWS_RDS_HOST}" > .env.production
43+
RUN echo "DB_USER=${AWS_RDS_USER}" >> .env.production
44+
RUN echo "DB_PASS=${AWS_RDS_PASS}" >> .env.production
45+
RUN echo "DB_NAME=${AWS_RDS_DB}" >> .env.production
46+
RUN echo "FS_NAME=${FS_NAME}" >> .env.production
47+
RUN echo "FS_REGION=${FS_REGION}" >> .env.production
48+
RUN echo "AWS_KEY=${AWS_KEY}" >> .env.production
49+
RUN echo "AWS_SECRET=${AWS_SECRET}" >> .env.production
50+
51+
USER vapor
52+
ENTRYPOINT ["./Run"]
53+
CMD ["serve", "--env", "production", "--hostname", "0.0.0.0", "--port", "8080"]

0 commit comments

Comments
 (0)