Skip to content

refactor(docker): collapse tests Dockerfiles into single one #26

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ workflows:
config-path: .circleci/workflows.yml

mapping: |
tests/.* test true
data/.* build true
i18n/.* build true
tests/.* tests true
static/.* build true
content/.* build true
layouts/.* build true
Expand Down
10 changes: 4 additions & 6 deletions .circleci/workflows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ parameters:
type: boolean
default: true

test:
tests:
type: boolean
default: false

Expand Down Expand Up @@ -147,9 +147,7 @@ jobs:

- run:
name: Run Tests
command: >
bats
tests/*
command: make tests-base

build:
executor: base
Expand Down Expand Up @@ -220,8 +218,8 @@ workflows:
jobs:
- verify

test:
when: << pipeline.parameters.test >>
tests:
when: << pipeline.parameters.tests >>

jobs:
- tests
Expand Down
5 changes: 0 additions & 5 deletions .docker/bats.alpine.Dockerfile

This file was deleted.

2 changes: 1 addition & 1 deletion .docker/blog.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ RUN \
sh ./scripts/install/git.sh ${BLOG_BUILD_ENVIRONMENT} && \
sh ./scripts/shared/git-submodules.sh ${BLOG_BUILD_ENVIRONMENT}

ENTRYPOINT ["./scripts/docker-entrypoint.sh"]
ENTRYPOINT ["./scripts/blog.docker-entrypoint.sh"]

CMD ["hugo"]

Expand Down
8 changes: 6 additions & 2 deletions .docker/bats.node.Dockerfile → .docker/tests.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
FROM node:18.7.0-alpine3.16
FROM alpine:3.16

LABEL maintainer="Airscript <dev.airscript@gmail.com>"

ARG APP_DIR=app

RUN \
apk update && \
apk add npm && \
apk add bash && \
apk add make && \
npm install -g bats \
mkdir ${APP_DIR}

WORKDIR /${APP_DIR}

COPY . .

ENTRYPOINT ["bash", "bats"]
ENTRYPOINT ["./scripts/tests.docker-entrypoint.sh"]

CMD ["bats"]
70 changes: 31 additions & 39 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
SHELL = /bin/sh
TESTS_IMAGE_NAME = airscript/tests:base

.SUFFIXES:
.SUFFIXES: .sh
Expand All @@ -22,85 +23,76 @@ build: git-submodules
run:
docker compose up -d

.PHONY: all-test
all-test: build-test run-test

.PHONY: clean-test
clean-test:
docker rm worker-bats-node; \
docker rm worker-bats-alpine; \
docker rmi airscript/bats:node; \
docker rmi airscript/bats:alpine

.PHONY: clean-bats
clean-bats:
docker rmi bats/bats:1.7.0
docker rmi node:18.7.0-alpine3.16

.PHONY: build-test
build-test:
docker build -f .docker/bats.alpine.Dockerfile -t airscript/bats:alpine .
docker build -f .docker/bats.node.Dockerfile -t airscript/bats:node .

.PHONY: run-test
run-test:
docker run -it --rm --name="worker-bats-alpine" airscript/bats:alpine \
./tests/_.bats ./tests/install.bats ./tests/shared.bats

docker run -it --rm --name="worker-bats-node" airscript/bats:node \
./tests/_.bats ./tests/install-node.bats
.PHONY: all-tests
all-tests: build-tests run-tests

.PHONY: clean-tests
clean-tests:
docker rmi $(TESTS_IMAGE_NAME)

.PHONY: build-tests
build-tests:
docker build -f .docker/tests.Dockerfile -t $(TESTS_IMAGE_NAME) .

.PHONY: run-tests
run-tests:
docker run --rm -it $(TESTS_IMAGE_NAME)

.PHONY: install-bash
install-bash:
sh ./scripts/install/bash.sh

.PHONY: install-npm
install-npm:
sh ./scripts/install/npm.sh
bash ./scripts/install/npm.sh

.PHONY: install-netlify-cli
install-netlify-cli:
sh ./scripts/install/netlify-cli.sh
bash ./scripts/install/netlify-cli.sh

.PHONY: install-hugo
install-hugo:
sh ./scripts/install/hugo.sh
bash ./scripts/install/hugo.sh

.PHONY: install-cli
install-git:
sh ./scripts/install/git.sh $(environment)
bash ./scripts/install/git.sh $(environment)

.PHONY: install-docker-cli
install-docker-cli:
sh ./scripts/install/docker-cli.sh
bash ./scripts/install/docker-cli.sh

.PHONY: verify-ci
verify-ci:
sh ./scripts/ci/verify.sh $(environment)
bash ./scripts/ci/verify.sh $(environment)

.PHONY: build-ci
build-ci:
sh ./scripts/ci/build.sh
bash ./scripts/ci/build.sh

.PHONY: deploy-ci
deploy-ci:
sh ./scripts/ci/deploy.sh $(id) $(token)
bash ./scripts/ci/deploy.sh $(id) $(token)

.PHONY: publish-ci
publish-ci: docker-login docker-build docker-push

.PHONY: git-submodules
git-submodules:
sh ./scripts/shared/git-submodules.sh $(environment)
bash ./scripts/shared/git-submodules.sh $(environment)

.PHONY: docker-login
docker-login:
sh ./scripts/docker/login.sh $(username) $(token)
bash ./scripts/docker/login.sh $(username) $(token)

.PHONY: docker-build
docker-build:
sh ./scripts/docker/build.sh $(tag)
bash ./scripts/docker/build.sh $(tag)

.PHONY: docker-push
docker-push:
sh ./scripts/docker/push.sh $(tag)
bash ./scripts/docker/push.sh $(tag)

.PHONY: tests-base
tests-base:
bash scripts/tests/base.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ set -e

if [ "$1" = 'hugo' ]; then
hugo server --bind $BLOG_INTERFACE --port $BLOG_PORT
fi

exec "$@"
else
exec "$@"
fi
9 changes: 9 additions & 0 deletions scripts/tests.docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash
set -e

if [ "$1" = 'bats' ]; then
make tests-base

else
exec "$@"
fi
2 changes: 2 additions & 0 deletions scripts/tests/base.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
bats tests/*
Empty file modified scripts/update.sh
100644 → 100755
Empty file.