Skip to content

chore: add login and deploy to ghcr #66

chore: add login and deploy to ghcr

chore: add login and deploy to ghcr #66

Workflow file for this run

name: Build, Test and Deploy
on: [ push, workflow_dispatch ]
jobs:
build:
name: Determine images
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build dist
run: npm run build
- name: Compress build files
run: zip -r build-files.zip ./dist/
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: build-files
path: build-files.zip
setup:
name: Setup environment
runs-on: ubuntu-latest
needs: build
outputs:
matrix: ${{ steps.get-variants.outputs.matrix }}
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: build-files
path: .
- name: Unzip build files
run: unzip build-files.zip -d .
- name: Get list of variants for an image
id: get-variants
run: echo "::set-output name=matrix::$(jq -c '.variants' ./dist/variant-matrix.json)"
# test:
# name: Run test on image
# runs-on: ubuntu-latest
# needs: setup
# strategy:
# matrix:
# variant: ${{ fromJson(needs.setup.outputs.matrix) }}
# 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.variant.IMAGE }}
# env:
# VARIANT: ${{ matrix.variant.VERSION }}
# run: test/${{ matrix.variant.IMAGE }}/test.sh
publish:
name: Publish image
runs-on: ubuntu-latest
needs:
- setup
# - test
strategy:
matrix:
variant: ${{ fromJson(needs.setup.outputs.matrix) }}
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: build-files
path: .
- name: Unzip build files
run: unzip build-files.zip -d .
- name: Install devcontainer cli
run: npm install -g @devcontainers/cli
- name: Build devcontainer
run: |
devcontainer build \
--workspace-folder ./dist/${{ matrix.variant.IMAGE }}/${{ matrix.variant.VERSION }} \
--image-name ghcr.io/the-nefarious-developer/${{ matrix.variant.IMAGE }}:${{ matrix.variant.VERSION }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.NEFARIOUS_TOKEN }}
- name: Push image to GitHub Container Registry
run: docker push ghcr.io/the-nefarious-developer/${{ matrix.variant.IMAGE }}:${{ matrix.variant.VERSION }}