Skip to content

Update dependencies. #536

Update dependencies.

Update dependencies. #536

Workflow file for this run

name: CI
on:
push:
branches: "**"
pull_request:
env:
REGISTRY: ghcr.io
IMAGE_NAME: nrel/api-umbrella
DOCKER_BUILDKIT: 1
TESTS_GLOB: "test/**/test_*.rb"
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver-opts: network=host
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: dev-env container metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
suffix=-dev-env
- name: build-cache container metadata
id: build_cache_meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
suffix=-build-cache-test
- name: Build and push
id: docker_build
uses: docker/build-push-action@v5
with:
target: test
pull: true
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: |
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.build_cache_meta.outputs.version }}
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:build-cache-test-recent
cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.build_cache_meta.outputs.version }},mode=max
provenance: false
# Push the build cache also to a `build-cache-test-recent` tag (in
# addition to the branch name tag cached above). This is so that other
# branches or tags can still leverage some recent cache, even if there
# isn't a cache for that tag/branch yet.
#
# Ideally this could be accomplished above via multiple cache-to
# arguments, but that isn't currently supported:
# https://github.com/moby/buildkit/issues/2818
- name: Push recent test cache
uses: docker/build-push-action@v5
with:
target: test
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.build_cache_meta.outputs.version }}
cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:build-cache-test-recent,mode=max
provenance: false
build_runtime:
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver-opts: network=host
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: build-cache container metadata
id: build_cache_meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
suffix=-build-cache-test
- name: Push recent runtime cache
uses: docker/build-push-action@v5
with:
target: runtime
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.build_cache_meta.outputs.version }}
cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:build-cache-runtime-recent,mode=max
provenance: false
lint:
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: dev-env container metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
suffix=-dev-env
- name: Pull
run: docker pull "$DOCKER_IMAGE_CACHE_FROM"
env:
DOCKER_IMAGE_CACHE_FROM: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }}
- name: Lint
run: docker run --rm --volume "$(pwd)/.git:/app/.git" "$DOCKER_IMAGE_CACHE_FROM" bash -c 'git config --global --add safe.directory /app && make lint'
env:
DOCKER_IMAGE_CACHE_FROM: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }}
test:
needs: [build]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ci_node_total: [6]
ci_node_index: [0, 1, 2, 3, 4, 5]
steps:
- uses: actions/checkout@v4
- name: dev-env container metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
suffix=-dev-env
- name: Pull
run: docker pull "$DOCKER_IMAGE_CACHE_FROM"
env:
DOCKER_IMAGE_CACHE_FROM: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }}
- name: Test
run: |
curl -sL "https://github.com/leonid-shevtsov/split_tests/releases/download/${SPLIT_TEST_VERSION}/split_tests.linux.gz" | gzip -d > /usr/local/bin/split_tests
chmod +x /usr/local/bin/split_tests
tests=$(split_tests --glob "${{ env.TESTS_GLOB }}" --split-total=${CI_NODE_TOTAL} --split-index=${CI_NODE_INDEX})
docker compose run \
--rm \
-e TESTS="${tests}" \
-e MAXMIND_LICENSE_KEY="${MAXMIND_LICENSE_KEY}" \
app \
make test
env:
COMPOSE_FILE: docker-compose.ci.yml
TEST_IMAGE_REPO: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
TEST_IMAGE_TAG: ${{ steps.meta.outputs.version }}
SPLIT_TEST_VERSION: v0.3.0
CI_NODE_TOTAL: ${{ matrix.ci_node_total }}
CI_NODE_INDEX: ${{ matrix.ci_node_index }}
MAXMIND_LICENSE_KEY: ${{ secrets.MAXMIND_LICENSE_KEY }}
- name: Artifact permissions
if: ${{ always() }}
run: sudo chmod -R a+rwX test/tmp/artifacts
- name: Dump docker logs
if: ${{ always() }}
uses: jwalton/gh-docker-logs@v2
with:
dest: test/tmp/artifacts/docker-logs
- name: Compress artifacts
if: ${{ always() }}
run: gzip -r ./test/tmp/artifacts/log ./test/tmp/artifacts/docker-logs
- name: Archive artifacts
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: test-artifacts-matrix-${{ matrix.ci_node_index }}
path: test/tmp/artifacts/
publish-test-results:
runs-on: ubuntu-latest
needs:
- test
permissions:
checks: write
if: always()
steps:
- name: Download Artifacts
uses: actions/download-artifact@v3
with:
path: ./artifacts
- name: Publish Unit Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
junit_files: "artifacts/*/reports/**/*.xml"
comment_mode: off