Skip to content

Moved linting of container images in CI to take place before stack build. #229

Moved linting of container images in CI to take place before stack build.

Moved linting of container images in CI to take place before stack build. #229

# This action is used for Scaffold maintenance. It will not be used in the scaffolded project.
name: Scaffold - Test
on:
push:
branches:
- develop
pull_request:
branches:
- develop
- 'feature/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
scaffold-test-common:
runs-on: ubuntu-latest
container:
image: drevops/ci-runner:latest
env:
# Prevent GitHub overriding the Docker config.
DOCKER_CONFIG: /root/.docker
DREVOPS_DOCTOR_CHECK_MINIMAL: 1
TEST_GITHUB_TOKEN: ${{ secrets.TEST_GITHUB_TOKEN }}
TEST_DREVOPS_CONTAINER_REGISTRY_USER: ${{ secrets.TEST_DREVOPS_CONTAINER_REGISTRY_USER }}
TEST_DREVOPS_CONTAINER_REGISTRY_PASS: ${{ secrets.TEST_DREVOPS_CONTAINER_REGISTRY_PASS }}
SCAFFOLD_DEV_VOLUMES_MOUNTED: 0
SCAFFOLD_DEV_TEST_COVERAGE_DIR: /tmp/.scaffold-coverage-html
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
- name: Process codebase to run in CI
run: find . -name "docker-compose.yml" -print0 | xargs -0 -I {} sh -c "sed -i -e ''/###/d'' {} && sed -i -e ''s/##//'' {}"
- name: Adjust git config to allow running git-related tests
run: git config --global safe.directory '*'
- name: Generate test SSH key pair used for deployment tests
run: |
mkdir -p "$HOME/.ssh"
ssh-keygen -t rsa -b 4096 -m PEM -N '' -f "$HOME/.ssh/id_rsa"
chmod 600 "$HOME/.ssh/id_rsa"
ssh-agent -a "${HOME}/ssh-agent.sock" > ssh-agent-output
export SSH_AUTH_SOCK=$(grep SSH_AUTH_SOCK ssh-agent-output | cut -d';' -f1 | cut -d= -f2)
echo "SSH_AUTH_SOCK=${SSH_AUTH_SOCK}" >> "$GITHUB_ENV"
- name: Install dependencies
run: npm ci
working-directory: .scaffold/tests
- name: Lint code
run: |
./tests/lint.scripts.sh
./tests/lint.dockerfiles.sh
working-directory: .scaffold
- name: Run tests
run: ./tests/test.common.sh
working-directory: .scaffold
- name: Upload coverage report as an artifact
uses: actions/upload-artifact@v4
with:
name: ${{github.job}}-code-coverage-report
path: /tmp/.scaffold-coverage-html
- name: Upload coverage report to Codecov
uses: codecov/codecov-action@v4
with:
directory: /tmp/.scaffold-coverage-html
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
scaffold-test-workflow:
runs-on: ubuntu-latest
strategy:
matrix:
batch: [0, 1, 2]
container:
image: drevops/ci-runner:latest
env:
# Prevent GitHub overriding the Docker config.
DOCKER_CONFIG: /root/.docker
DREVOPS_DOCTOR_CHECK_MINIMAL: 1
TEST_GITHUB_TOKEN: ${{ secrets.TEST_GITHUB_TOKEN }}
TEST_DREVOPS_CONTAINER_REGISTRY_USER: ${{ secrets.TEST_DREVOPS_CONTAINER_REGISTRY_USER }}
TEST_DREVOPS_CONTAINER_REGISTRY_PASS: ${{ secrets.TEST_DREVOPS_CONTAINER_REGISTRY_PASS }}
SCAFFOLD_DEV_VOLUMES_MOUNTED: 0
SCAFFOLD_DEV_TEST_COVERAGE_DIR: /tmp/.scaffold-coverage-html
TEST_NODE_INDEX: ${{ matrix.batch }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
- name: Adjust git config to allow running git-related tests
run: git config --global safe.directory '*'
- name: Install dependencies
run: npm ci
working-directory: .scaffold/tests
- name: Run tests
run: ./tests/test.workflow.sh
working-directory: .scaffold
- name: Upload coverage report as an artifact
uses: actions/upload-artifact@v4
with:
name: ${{github.job}}-${{ matrix.batch }}-code-coverage-report
path: /tmp/.scaffold-coverage-html
- name: Upload coverage report to Codecov
uses: codecov/codecov-action@v4
with:
directory: /tmp/.scaffold-coverage-html
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
scaffold-test-deployment:
runs-on: ubuntu-latest
strategy:
matrix:
batch: [0, 1]
container:
image: drevops/ci-runner:latest
env:
# Prevent GitHub overriding the Docker config.
DOCKER_CONFIG: /root/.docker
DREVOPS_DOCTOR_CHECK_MINIMAL: 1
TEST_GITHUB_TOKEN: ${{ secrets.TEST_GITHUB_TOKEN }}
TEST_DREVOPS_CONTAINER_REGISTRY_USER: ${{ secrets.TEST_DREVOPS_CONTAINER_REGISTRY_USER }}
TEST_DREVOPS_CONTAINER_REGISTRY_PASS: ${{ secrets.TEST_DREVOPS_CONTAINER_REGISTRY_PASS }}
SCAFFOLD_DEV_VOLUMES_MOUNTED: 0
SCAFFOLD_DEV_TEST_COVERAGE_DIR: /tmp/.scaffold-coverage-html
TEST_NODE_INDEX: ${{ matrix.batch }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
- name: Adjust git config to allow running git-related tests
run: git config --global safe.directory '*'
- name: Generate test SSH key pair used for deployment tests
run: |
mkdir -p "$HOME/.ssh"
ssh-keygen -t rsa -b 4096 -m PEM -N '' -f "$HOME/.ssh/id_rsa"
chmod 600 "$HOME/.ssh/id_rsa"
ssh-agent -a "${HOME}/ssh-agent.sock" > ssh-agent-output
export SSH_AUTH_SOCK="$(grep SSH_AUTH_SOCK ssh-agent-output | cut -d';' -f1 | cut -d= -f2)"
echo "SSH_AUTH_SOCK=${SSH_AUTH_SOCK}" >> "$GITHUB_ENV"
- name: Install dependencies
run: npm ci
working-directory: .scaffold/tests
- name: Run tests
run: ./tests/test.deployment.sh
working-directory: .scaffold
- name: Upload coverage report as an artifact
uses: actions/upload-artifact@v4
with:
name: ${{github.job}}-${{ matrix.batch }}-code-coverage-report
path: /tmp/.scaffold-coverage-html
- name: Upload coverage report to Codecov
uses: codecov/codecov-action@v4
with:
directory: /tmp/.scaffold-coverage-html
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
scaffold-test-actions:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Check coding standards with yamllint
run: yamllint --config-file .scaffold/tests/.yamllint-for-gha.yml .github/workflows
continue-on-error: ${{ vars.DREVOPS_CI_YAMLLINT_IGNORE_FAILURE == '1' }}
- name: Check coding standards with actionlint
run: docker run --rm -v "${GITHUB_WORKSPACE:-.}":/app --workdir /app rhysd/actionlint:1.6.27 -ignore 'SC2002:' -ignore 'SC2155:'
continue-on-error: ${{ vars.DREVOPS_CI_ACTIONLINT_IGNORE_FAILURE == '1' }}