feat: export/import of modules now handles ALL versions of a module #11258
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Docker | |
on: | |
push: | |
branches: | |
- '*' | |
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 }} | |
tags: | | |
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }} | |
type=schedule | |
type=ref,event=branch | |
type=ref,event=tag | |
type=ref,event=pr | |
- name: Get Git commit timestamps | |
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to Github Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build and push | |
id: docker_build | |
uses: docker/build-push-action@v6 | |
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: true | |
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: [20] | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@v2 | |
with: | |
app_id: ${{ secrets.TAKARO_CI_APP_ID }} | |
private_key: ${{ secrets.TAKARO_CI_APP_PRIV_KEY }} | |
- uses: actions/checkout@v4 | |
with: | |
token: ${{ steps.generate_token.outputs.token }} | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
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 }} | |
- name: Commit and push if changed | |
if: github.ref == 'refs/heads/development' | |
run: | | |
# Check if there are any changes | |
if git diff --quiet; then | |
echo "No changes to commit." | |
else | |
# Check if the last commit was made by the CI bot | |
LAST_AUTHOR=$(git log -1 --pretty=format:'%an') | |
if [ "$LAST_AUTHOR" = "takaro-ci-bot[bot]" ]; then | |
echo "Last commit was made by the CI bot. Skipping commit." | |
else | |
git config --global user.name 'takaro-ci-bot[bot]' | |
git config --global user.email '138661031+takaro-ci-bot[bot]@users.noreply.github.com' | |
git commit -am "chore: generate api client" | |
git push | |
fi | |
fi | |
- uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: integrationTests | |
path: reports | |
retention-days: 30 | |
e2e: | |
needs: [docker] | |
timeout-minutes: 60 | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- 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@v4 | |
if: always() | |
with: | |
name: e2e | |
path: reports | |
retention-days: 30 |