Skip to content

Docker

Docker #7207

Workflow file for this run

name: Docker
on:
push:
branches:
- 'main'
- 'development'
tags:
- '*'
merge_group:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
docker:
runs-on: ubuntu-24.04
outputs:
docker_tag: ${{ steps.meta.outputs.version }}
strategy:
matrix:
package:
[
{ name: 'app-api', dockerfile: './containers/generic-app/Dockerfile' },
{ name: 'web-main', dockerfile: './containers/generic-web/Dockerfile' },
{ name: 'app-mock-gameserver', dockerfile: './containers/generic-app/Dockerfile' },
{ name: 'app-connector', dockerfile: './containers/generic-app/Dockerfile' },
]
steps:
- name: Apply nf_conntrack_tcp_be_liberal kernel change
run: |
sudo sh -c "echo 1 > /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal"
- name: Checkout code
uses: actions/checkout@v4
- name: Repo metadata
id: repo
uses: actions/github-script@v7
with:
script: |
const repo = await github.rest.repos.get(context.repo)
return repo.data
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}-${{ matrix.package.name }}
- name: Get Git commit timestamps
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
if: ${{ !startsWith(github.actor, 'renovate') }}
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v4
with:
context: .
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}-${{ matrix.package.name }}:latest
cache-to: type=inline
sbom: true
file: ${{ matrix.package.dockerfile }}
push: ${{ !startsWith(github.actor, 'renovate') }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
PACKAGE=${{ matrix.package.name }}
TAKARO_VERSION=${{ steps.meta.outputs.version }}
TAKARO_COMMIT=${{ github.sha }}
TAKARO_BUILD_DATE=${{ env.TIMESTAMP }}
env:
SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }}
node-ci:
needs: [docker]
timeout-minutes: 60
runs-on: ubuntu-24.04
strategy:
matrix:
node-version: [18.18]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: ./scripts/dev-init.sh
- run: npm run test:style
- name: Integration tests
run: npx zx scripts/integration-tests.mjs
env:
DOCKER_TAG: ${{ needs.docker.outputs.docker_tag }}
TEST_LOGGING_LEVEL: debug
LOGGING_LEVEL: debug
NODE_ENV: test
TRACING_ENABLED: false
GRAFANA_CLOUD_TEMPO_URL: ${{ secrets.GRAFANA_CLOUD_TEMPO_URL }}
GRAFANA_CLOUD_API_USER: ${{ secrets.GRAFANA_CLOUD_API_USER }}
GRAFANA_CLOUD_API_KEY: ${{ secrets.GRAFANA_CLOUD_API_KEY }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: integrationTests
path: reports
retention-days: 30
# e2e:
# needs: [docker]
# timeout-minutes: 60
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - uses: actions/setup-node@v3
# with:
# node-version: 18.18
# - run: ./scripts/dev-init.sh
# - name: Install Playwright Browsers
# run: npx playwright install --with-deps
# - name: Integration tests e2e
# run: npx zx scripts/integration-tests.mjs
# env:
# DOCKER_TAG: ${{ needs.docker.outputs.docker_tag }}
# IS_E2E: true
# - uses: actions/upload-artifact@v3
# if: always()
# with:
# name: e2e
# path: reports
# retention-days: 30