-
Notifications
You must be signed in to change notification settings - Fork 14
66 lines (60 loc) · 3.26 KB
/
build_and_test_on_pr.yml
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
---
# Test the Docker image on every pull request.
#
# The steps are:
# 1. Build docker image using cached data.
# 2. Start the docker container with local folder mounted to it.
# 3. Check that postgresql and rabbitmq are running.
# 4. Copy id_rsa file from the docker container to local folder.
# 5. Restart the container and check that the id_rsa file didn't change.
name: build-and-test-image-from-pull-request
on: [pull_request]
jobs:
build-and-test:
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build image locally
uses: docker/build-push-action@v2
with:
load: true
push: false
tags: aiidalab-docker-stack:latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
- name: Start and test the container
id: test_run
run: |
mkdir tmp
export DOCKERID=`docker run -v $PWD/tmp:/home/aiida -d aiidalab-docker-stack:latest`
echo "::set-output name=docker_id_first_run::${DOCKERID}"
docker exec --tty --user root $DOCKERID wait-for-services
docker exec --tty --user aiida $DOCKERID wait-for-services
docker exec --tty --user aiida $DOCKERID /bin/bash -l -c '/usr/lib/postgresql/10/bin/pg_ctl -D /home/$SYSTEM_USER/.postgresql status' # Check that postgres is up.
docker exec --tty --user root $DOCKERID /bin/bash -l -c 'service rabbitmq-server status' # Check that rabbitmq is up.
docker exec --tty --user aiida $DOCKERID /bin/bash -l -c 'conda create -y -n test_env python=3.8' # Check that one can create a new conda environment.
docker exec --tty --user aiida $DOCKERID /bin/bash -l -c 'conda activate test_env' # Check that new environment works.
sudo cp tmp/.ssh/id_rsa . # Copy id_rsa file from the mounted folder.
docker stop $DOCKERID # Stop the container.
export DOCKERID=`docker run -v $PWD/tmp:/home/aiida -d aiidalab-docker-stack:latest` # Start a new container using the same mounted folder.
echo "::set-output name=docker_id_second_run::${DOCKERID}"
docker exec --tty $DOCKERID wait-for-services
sudo diff id_rsa tmp/.ssh/id_rsa # Check that the id_rsa file wasn't modified.
- name: Show the container log (first run).
if: always()
run: docker logs "${{ steps.test_run.outputs.docker_id_first_run }}"
- name: Show the container log (second run).
if: always()
run: docker logs "${{ steps.test_run.outputs.docker_id_second_run }}"