-
Notifications
You must be signed in to change notification settings - Fork 11
149 lines (124 loc) · 5.38 KB
/
test.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
name: contract Tests
on:
schedule:
- cron: '0 5 * * *' #Runs daily at 5 AM UTC
push:
branches:
- master
- develop
pull_request:
branches:
- develop
env:
CC_TEST_REPORTER_ID: "${{ secrets.CC_TEST_REPORTER_ID }}"
jobs:
contract-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: eu-west-1
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: set up enviromnts
run: |
export RECORD_RUNTIME=true
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
export LANGUAGE=C.UTF-8
export PATH=/root/.local/bin:$PATH
rm -rf tmp/cache tmp/cache1 tmp/cache2 tmp/cache3 tmp/cache4 tmp/cache5 && mkdir -p tmp/cache tmp/cache1 tmp/cache2 tmp/cache3 tmp/cache4 tmp/cache5
- name: set up comfiguration files
run: |
cp config/config.yml.example config/config.yml
cp config/database.yml.example config/database.yml
cp config/sidekiq.yml.example config/sidekiq.yml
cp config/credentials.json.example config/credentials.json
cp config/sidekiq-test.yml.example config/sidekiq-test.yml
- name: Build Docker Container
run: |
docker-compose build
- name: Run syntax checks
run: |
docker-compose run api bash -c 'touch /tmp/no-syntax-errors && find app lib config -name *.rb -exec bash -c "ruby -c {} >/dev/null || rm /tmp/no-syntax-errors" ";" && ls /tmp/no-syntax-errors'
- name: Run Container
run: docker-compose -f docker-compose.yml -f docker-test.yml up -d
- name: Wait for the server to be ready
run: |
tail -f log/test.log &
until curl --silent -I -f --fail http://localhost:3000 ; do printf .; sleep 1; done
- name: Set up parallel environment
run: docker-compose exec -T api test/setup-parallel-env.sh
- name: Precompile assets
run: docker-compose exec -T api bundle exec rake assets:precompile
- name: Prepare parallel runtime log
run: |
sleep 10
touch tmp/parallel_runtime_test.log
chmod +w tmp/parallel_runtime_test.log
- name: Run Contract Tests
id: run-tests
env:
TEST_RETRY_COUNT: 3
run: |
docker-compose exec -e TEST_RETRY_COUNT=$TEST_RETRY_COUNT -T -e PATTERN='controllers models mailers integration workers lib' api test/run-tests.sh
- name: Set ENV for Code Climate (Pull Request)
if: github.event_name == 'pull_request'
run: |
git fetch --no-tags --prune --depth=1 origin +refs/heads/$GITHUB_HEAD_REF:refs/remotes/origin/$GITHUB_HEAD_REF
echo "GIT_BRANCH=$GITHUB_HEAD_REF" >> $GITHUB_ENV
echo "GIT_COMMIT_SHA=$(git rev-parse origin/$GITHUB_HEAD_REF)" >> $GITHUB_ENV
- name: Set ENV for Code Climate (Push)
if: github.event_name == 'push'
run: |
echo "GIT_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
echo "GIT_COMMIT_SHA=$GITHUB_SHA" >> $GITHUB_ENV
# - name: Set up AWS credentials
# run: |
# echo "aws_access_key_id = ${{ secrets.AWS_ACCESS_KEY_ID }}" >> app/credentials
# echo "aws_secret_access_key = ${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> app/credentials
# - name: Download test coverage reporter
# env:
# CC_TEST_REPORTER_URL: https://codeclimate.com/downloads/test-reporter/test-reporter-0.7.0-linux-amd64
# run: curl -L $CC_TEST_REPORTER_URL > /test/cc-test-reporter
# - name: Give test coverage reporter executable permissions
# run: chmod +x /test/cc-test-reporter
- name: After coverage Test
env:
GIT_SHA: ${{ github.sha }}
GITHUB_PULL_REQUEST: ${{ github.event_name}}
GIT_BRANCH: ${{ github.head_ref || github.ref_name }}
GITHUB_REPO_SLUG: ${{ github.repository }}
GITHUB_TEST_RESULT: ${{ steps.run-tests.outcome}}
GITHUB_BUILD_NUMBER: ${{ github.run_number }}
GITHUB_COMMIT_SHA: ${{ github.sha }}
GITHUB_JOB_NAME: ${{ github.job }}
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
ROLE_TO_ASSUME: ${{ secrets.AWS_ROLE_TO_ASSUME }}
AWS_REGION: eu-west-1
run: |
docker-compose exec -T -e GIT_BRANCH=$GIT_BRANCH \
-e GITHUB_PULL_REQUEST=$GITHUB_PULL_REQUEST \
-e GITHUB_TEST_RESULT=$GITHUB_TEST_RESULT \
-e GITHUB_REPO_SLUG=$GITHUB_REPO_SLUG \
-e GITHUB_BUILD_NUMBER=$GITHUB_BUILD_NUMBER \
-e GIT_COMMIT_SHA=$GITHUB_COMMIT_SHA \
-e CC_TEST_REPORTER_ID=$CC_TEST_REPORTER_ID \
-e GITHUB_JOB_NAME=$GITHUB_JOB_NAME \
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
-e ROLE_TO_ASSUME=$AWS_ROLE_TO_ASSUME \
-e AWS_REGION=$AWS_REGION \
-e AWS_CONFIG_FILE=/app/credentials api test/test-coverage.sh