Skip to content

Fix CI deploy action #572

Fix CI deploy action

Fix CI deploy action #572

Workflow file for this run

name: Build and Run Integration Test
on:
push:
branches:
- master
pull_request:
branches:
- develop
permissions:
id-token: write
contents: read
jobs:
integration-test:
runs-on: ubuntu-latest
outputs:
image: ${{ steps.build-image.outputs.image }}
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: Cache Docker layers
uses: actions/cache@v4
id: cache
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Set up configuration
run: |
cp config/database.yml.example config/database.yml
cp config/sidekiq.yml.example config/sidekiq.yml
cp config/config.yml.example config/config.yml
cp config/cookies.txt.example config/cookies.txt
bin/get_env_vars.sh
chmod -R a+w .
- name: Docker Buildx (build)
id: build-image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ github.event.repository.name }}
IMAGE_TAG: ${{ github.sha }}
run: |
docker buildx build \
--cache-from "type=local,src=/tmp/.buildx-cache" \
--cache-to "type=local,dest=/tmp/.buildx-cache-new" \
--load \
--tag $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG \
--file ./Dockerfile ./
echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
- name: Run container
id: run-container
run: |
docker compose -f docker-test.yml up -d pender
- name: Set up PR Tests
id: setup-tests
run: |
docker compose -f docker-test.yml exec -T -e DEPLOY_ENV=ci pender test/setup-parallel
- name: Run PR Tests
id: run-tests
env:
TEST_RETRY_COUNT: 5
run: |
docker compose -f docker-test.yml exec -e TEST_RETRY_COUNT=$TEST_RETRY_COUNT -e DEPLOY_ENV=ci -T pender bundle exec rake "parallel:test[3]"
docker compose -f docker-test.yml exec -e TEST_RETRY_COUNT=$TEST_RETRY_COUNT -e DEPLOY_ENV=ci -T pender bundle exec rake parallel:spec
- name: Upload coverage to CodeClimate
id: upload-coverage
env:
GIT_SHA: ${{ github.sha }}
GIT_COMMITED_AT: ${{ github.event.head_commit.timestamp }}
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
if: success() || failure()
run: |
docker compose -f docker-test.yml exec -T pender cat tmp/performance.csv
docker compose -f docker-test.yml exec -T pender ls -l coverage/
docker cp pender-pender-1:/app/pender/tmp/performance.csv performance.csv
docker cp pender-pender-1:/app/pender/coverage/.resultset.json test/.resultset.json
# pulled from test/test-coverage
cd test
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 -o cc-test-reporter
chmod +x cc-test-reporter
sed -i 's/\/app\/pender/\/home\/runner\/work\/pender\/pender/g' .resultset.json # convert container-paths to local-paths
GIT_COMMIT_SHA=$(git rev-parse HEAD) GIT_COMMITTED_AT=$(git log -1 --format=%ct) ./cc-test-reporter format-coverage .resultset.json -t simplecov -o codeclimate.json
sed -i 's/\/home\/runner\/work\/pender\///g' codeclimate.json
cp codeclimate.json ../coverage/
./cc-test-reporter upload-coverage -r $CC_TEST_REPORTER_ID -i codeclimate.json
- name: Reset cache
id: reset-cache
if: success() || failure()
run: |
rm -rf /tmp/.buildx-cache
[ -d "/tmp/.buildx-cache-new" ] && mv /tmp/.buildx-cache-new /tmp/.buildx-cache