Skip to content

chore: improve build script #7

chore: improve build script

chore: improve build script #7

Workflow file for this run

name: Build, Test and Deploy
on: [ push, workflow_dispatch ]
jobs:
setup:
name: Setup environment and determine templates
runs-on: ubuntu-latest
outputs:
template_dirs: ${{ steps.get-dirs.outputs.dirs }}
# template_variants: ${{ steps.get-variants.outputs.variants }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- name: Install dependencies
run: npm ci
- name: Get list of test directories
id: get-dirs
run: echo "dirs=$(ls -d test/*/ | grep -v 'test/test-utils/' | jq -R -s -c 'split("\n")[:-1] | map(split("/")[1])')" >> $GITHUB_OUTPUT
# - name: Get list of variants for an image
# id: get-variants
# run: |
# variants=$(cat variants.json)
# echo "variants=${variants}" >> $GITHUB_ENV
test:
name: Run test on images
runs-on: ubuntu-latest
needs: setup
strategy:
matrix:
template: ${{ fromJson(needs.setup.outputs.template_dirs) }}
variant: [
"22-bookworm",
"22-bullseye",
"20-bookworm",
"20-bullseye",
"18-bookworm",
"18-bullseye"
]
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- name: Install dependencies
run: npm ci
- name: Run test for ${{ matrix.template }}
env:
VARIANT: ${{ matrix.variant }}
run: test/${{ matrix.template }}/test.sh
build:
name: Build devcontainer images
runs-on: ubuntu-latest
needs:
- setup
- test
strategy:
matrix:
template: ${{ fromJson(needs.setup.outputs.template_dirs) }}
variant: [
"22-bookworm",
"22-bullseye",
"20-bookworm",
"20-bullseye",
"18-bookworm",
"18-bullseye"
]
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install devcontainer cli
run: npm install -g @devcontainers/cli
- name: Build image ${{ matrix.template }}/${{ matrix.variant }}
env:
TEMPLATE: ${{ matrix.template }}
VARIANT: ${{ matrix.variant }}
run: scripts/build.sh
# - name: Build devcontainer
# run: |
# echo "starting devcontainer build..."
# devcontainer build \
# --workspace-folder tmp/src/${{ matrix.template }}/${{ matrix.variant }}/ \
# --image-name ghcr.io/The-Nefarious-Developer/${{ matrix.template }}:${{ matrix.variant }} \
# # --no-cache true