127 lines
3.3 KiB
YAML
127 lines
3.3 KiB
YAML
env:
|
|
REGISTRY: ghcr.io
|
|
ECR_REGISTRY: 976079455550.dkr.ecr.us-east-1.amazonaws.com
|
|
IMAGE_NAME: ${{ github.repository }}-extra
|
|
|
|
name: Publish windmill-extra
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*"
|
|
workflow_dispatch:
|
|
|
|
permissions: write-all
|
|
|
|
jobs:
|
|
sleep:
|
|
runs-on: ubicloud
|
|
steps:
|
|
- name: Sleep for 900 seconds waiting for pypi to update index
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
run: sleep 900
|
|
shell: bash
|
|
|
|
# Build and test the image before publishing
|
|
test_extra:
|
|
needs: [sleep]
|
|
runs-on: ubicloud-standard-8
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Bun
|
|
uses: oven-sh/setup-bun@v2
|
|
with:
|
|
bun-version: latest
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Build test image
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
file: ./docker/DockerfileExtra
|
|
load: true
|
|
tags: windmill-extra:test
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
|
|
- name: Start container
|
|
run: |
|
|
docker run -d --name windmill-extra-test \
|
|
-p 3001:3001 -p 3002:3002 -p 3003:3003 \
|
|
-e ENABLE_LSP=true \
|
|
-e ENABLE_MULTIPLAYER=true \
|
|
-e ENABLE_DEBUGGER=true \
|
|
-e DEBUGGER_PORT=3003 \
|
|
-e REQUIRE_SIGNED_DEBUG_REQUESTS=false \
|
|
windmill-extra:test
|
|
|
|
# Wait for container to start
|
|
echo "Waiting for container to initialize..."
|
|
sleep 10
|
|
|
|
# Show container logs for debugging
|
|
docker logs windmill-extra-test
|
|
|
|
- name: Run integration tests
|
|
run: |
|
|
bun run docker/test_windmill_extra.ts
|
|
|
|
- name: Show container logs on failure
|
|
if: failure()
|
|
run: |
|
|
echo "=== Container logs ==="
|
|
docker logs windmill-extra-test
|
|
|
|
- name: Cleanup
|
|
if: always()
|
|
run: |
|
|
docker stop windmill-extra-test || true
|
|
docker rm windmill-extra-test || true
|
|
|
|
publish_extra:
|
|
needs: [sleep, test_extra]
|
|
runs-on: ubicloud-standard-8
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- uses: depot/setup-action@v1
|
|
|
|
- name: Docker meta
|
|
id: meta
|
|
uses: docker/metadata-action@v5
|
|
with:
|
|
images: |
|
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
tags: |
|
|
type=ref,event=branch
|
|
type=ref,event=pr
|
|
type=semver,pattern={{version}}
|
|
type=semver,pattern={{major}}.{{minor}}
|
|
|
|
- name: Login to registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build and push publicly
|
|
uses: depot/build-push-action@v1
|
|
with:
|
|
context: .
|
|
file: ./docker/DockerfileExtra
|
|
platforms: linux/amd64,linux/arm64
|
|
push: true
|
|
tags: |
|
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
|
${{ steps.meta.outputs.tags }}
|
|
labels: |
|
|
${{ steps.meta.outputs.labels }}
|
|
org.opencontainers.image.licenses=AGPLv3
|