Files
oneuptime/.github/workflows/test-release.yaml

2557 lines
89 KiB
YAML

name: Push Test Images to Docker Hub and GitHub Container Registry
concurrency:
group: test-release
cancel-in-progress: true
on:
push:
branches:
- "master"
jobs:
generate-build-number:
runs-on: ubuntu-latest
outputs:
build_number: ${{ steps.buildnumber.outputs.build_number }}
steps:
- name: Generate build number
id: buildnumber
uses: onyxmueller/build-tag-number@v1.0.2
with:
token: ${{secrets.github_token}}
- run: echo "Build number is ${{ steps.buildnumber.outputs.build_number }}"
read-version:
runs-on: ubuntu-latest
outputs:
major_minor: ${{ steps.read.outputs.major_minor }}
steps:
- name: Checkout
uses: actions/checkout@v4
- id: read
name: Read VERSION_PREFIX
run: |
MAJOR_MINOR=$(cat VERSION_PREFIX | tr -d '\n' | tr -d '\r')
echo "major_minor=$MAJOR_MINOR" >> $GITHUB_OUTPUT
echo "Using version prefix: $MAJOR_MINOR"
publish-terraform-provider:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{ github.run_number }}
GITHUB_TOKEN: ${{ secrets.SIMLARSEN_GITHUB_PAT }}
GPG_PRIVATE_KEY: ${{ secrets.TERRAFORM_GPG_PRIVATE_KEY }}
TERRAFORM_PROVIDER_GITHUB_REPO_DEPLOY_KEY: ${{ secrets.TERRAFORM_PROVIDER_GITHUB_REPO_DEPLOY_KEY }}
permissions:
contents: write # For creating releases
packages: write # For publishing packages
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Full history for changelog generation
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 'latest'
cache: 'npm'
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
cache: true
- name: Install GoReleaser
uses: goreleaser/goreleaser-action@v5
with:
install-only: true
- name: Determine version
id: version
run: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Publishing Terraform provider version: $VERSION"
- name: Install dependencies
run: |
npm install
if [ -d "Common" ]; then cd Common && npm install && cd ..; fi
if [ -d "Scripts" ]; then cd Scripts && npm install && cd ..; fi
- name: Import GPG key
run: |
echo '${{ secrets.TERRAFORM_GPG_PRIVATE_KEY }}' > private.key
gpg --import private.key || true
rm private.key
echo "GPG key imported successfully"
gpg --export-secret-keys >~/.gnupg/secring.gpg
echo "GPG key exported successfully"
- name: Generate Terraform provider
run: npm run publish-terraform-provider -- --version "${{ steps.version.outputs.version }}" --github-token "${{ secrets.SIMLARSEN_GITHUB_PAT }}" --github-repo-deploy-key "${{ secrets.TERRAFORM_PROVIDER_GITHUB_REPO_DEPLOY_KEY }}" --test-release
publish-mcp-server:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{ github.run_number }}
permissions:
contents: write # For creating releases
packages: write # For publishing packages
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Full history for changelog generation
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: latest
cache: 'npm'
registry-url: 'https://registry.npmjs.org'
- name: Install Common dependencies
run: cd Common && npm install
- name: Install root dependencies
run: npm install
- name: Install Script dependencies
run: cd Scripts && npm install
- name: Determine version
id: version
run: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Publishing MCP server version: $VERSION"
- name: Verify MCP server directory
run: |
MCP_DIR="./MCP"
if [ ! -d "$MCP_DIR" ]; then
echo "❌ MCP server directory not found"
exit 1
fi
echo "✅ MCP server directory found"
echo "📊 Source files:"
find "$MCP_DIR" -type f -name "*.ts" -o -name "*.js" -o -name "*.json" | wc -l
echo "📁 Directory structure:"
ls -la "$MCP_DIR"
- name: Update package version
run: |
cd MCP
npm version ${{ steps.version.outputs.version }} --no-git-tag-version
- name: Install dependencies and build
run: |
cd MCP
npm update @oneuptime/common
npm install
npm run build
- name: Run tests
run: |
cd MCP
npm test || echo "No tests found or tests failed, continuing..."
- name: Publish to npm (dry run for test releases)
run: |
cd MCP
npm pack --dry-run
echo "✅ Dry run completed successfully for test release"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push Docker images (test)
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{ steps.version.outputs.version }}"
docker buildx build \
--platform linux/amd64,linux/arm64 \
--file ./MCP/Dockerfile.tpl \
--tag oneuptime/mcp-server:${VERSION} \
--tag oneuptime/mcp-server:test \
--tag ghcr.io/oneuptime/mcp-server:${VERSION} \
--tag ghcr.io/oneuptime/mcp-server:test \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
--push .
docker buildx build \
--platform linux/amd64,linux/arm64 \
--file ./MCP/Dockerfile.tpl \
--tag oneuptime/mcp-server:enterprise-${VERSION} \
--tag oneuptime/mcp-server:enterprise-test \
--tag ghcr.io/oneuptime/mcp-server:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/mcp-server:enterprise-test \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
--push .
echo "✅ Pushed test Docker images to Docker Hub and GitHub Container Registry"
- name: Upload MCP server artifact
uses: actions/upload-artifact@v4
with:
name: mcp-server-${{ steps.version.outputs.version }}
path: ./MCP/
retention-days: 90
llm-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
# Docker compose needs a lot of space to build images, so we need to free up some space first in the GitHub Actions runner
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/llm
ghcr.io/oneuptime/llm
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
# - name: Setup Git LFS
# run: git lfs install
# # Cannot do this, no space on the gitHub standard runner. We need to use the large runner which is selfhosted
# - name: Download the Model from Hugging Face
# run: mkdir -p ./LLM/Models && cd ./LLM/Models && git clone https://${{ secrets.HUGGING_FACE_USERNAME }}:${{ secrets.HUGGING_FACE_PASSWORD }}@huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy nginx.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./LLM/Dockerfile \
--platform linux/amd64 \
--push \
--tag oneuptime/llm:test \
--tag oneuptime/llm:${VERSION} \
--tag ghcr.io/oneuptime/llm:test \
--tag ghcr.io/oneuptime/llm:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
./LLM
docker buildx build \
--file ./LLM/Dockerfile \
--platform linux/amd64 \
--push \
--tag oneuptime/llm:enterprise-test \
--tag oneuptime/llm:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/llm:enterprise-test \
--tag ghcr.io/oneuptime/llm:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
./LLM
nginx-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/nginx
ghcr.io/oneuptime/nginx
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy nginx.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./Nginx/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/nginx:test \
--tag oneuptime/nginx:${VERSION} \
--tag ghcr.io/oneuptime/nginx:test \
--tag ghcr.io/oneuptime/nginx:${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./Nginx/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/nginx:enterprise-test \
--tag oneuptime/nginx:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/nginx:enterprise-test \
--tag ghcr.io/oneuptime/nginx:enterprise-${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
e2e-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/e2e
ghcr.io/oneuptime/e2e
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy e2e.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./E2E/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/e2e:test \
--tag oneuptime/e2e:${VERSION} \
--tag ghcr.io/oneuptime/e2e:test \
--tag ghcr.io/oneuptime/e2e:${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./E2E/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/e2e:enterprise-test \
--tag oneuptime/e2e:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/e2e:enterprise-test \
--tag ghcr.io/oneuptime/e2e:enterprise-${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
test-server-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/test-server
ghcr.io/oneuptime/test-server
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy test-server.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./TestServer/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/test-server:test \
--tag oneuptime/test-server:${VERSION} \
--tag ghcr.io/oneuptime/test-server:test \
--tag ghcr.io/oneuptime/test-server:${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./TestServer/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/test-server:enterprise-test \
--tag oneuptime/test-server:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/test-server:enterprise-test \
--tag ghcr.io/oneuptime/test-server:enterprise-${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
otel-collector-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/otel-collector
ghcr.io/oneuptime/otel-collector
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy otel-collector.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./OTelCollector/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/otel-collector:test \
--tag oneuptime/otel-collector:${VERSION} \
--tag ghcr.io/oneuptime/otel-collector:test \
--tag ghcr.io/oneuptime/otel-collector:${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./OTelCollector/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/otel-collector:enterprise-test \
--tag oneuptime/otel-collector:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/otel-collector:enterprise-test \
--tag ghcr.io/oneuptime/otel-collector:enterprise-${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
isolated-vm-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/isolated-vm
ghcr.io/oneuptime/isolated-vm
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy isolated-vm.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./IsolatedVM/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/isolated-vm:test \
--tag oneuptime/isolated-vm:${VERSION} \
--tag ghcr.io/oneuptime/isolated-vm:test \
--tag ghcr.io/oneuptime/isolated-vm:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./IsolatedVM/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/isolated-vm:enterprise-test \
--tag oneuptime/isolated-vm:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/isolated-vm:enterprise-test \
--tag ghcr.io/oneuptime/isolated-vm:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
home-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/home
ghcr.io/oneuptime/home
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy isolated-vm.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./Home/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/home:test \
--tag oneuptime/home:${VERSION} \
--tag ghcr.io/oneuptime/home:test \
--tag ghcr.io/oneuptime/home:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./Home/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/home:enterprise-test \
--tag oneuptime/home:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/home:enterprise-test \
--tag ghcr.io/oneuptime/home:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
status-page-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/status-page
ghcr.io/oneuptime/status-page
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy status-page.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./StatusPage/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/status-page:test \
--tag oneuptime/status-page:${VERSION} \
--tag ghcr.io/oneuptime/status-page:test \
--tag ghcr.io/oneuptime/status-page:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./StatusPage/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/status-page:enterprise-test \
--tag oneuptime/status-page:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/status-page:enterprise-test \
--tag ghcr.io/oneuptime/status-page:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
test-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/test
ghcr.io/oneuptime/test
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy test.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./Tests/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/test:test \
--tag oneuptime/test:${VERSION} \
--tag ghcr.io/oneuptime/test:test \
--tag ghcr.io/oneuptime/test:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./Tests/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/test:enterprise-test \
--tag oneuptime/test:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/test:enterprise-test \
--tag ghcr.io/oneuptime/test:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
probe-ingest-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/probe-ingest
ghcr.io/oneuptime/probe-ingest
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy probe-ingest.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./ProbeIngest/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/probe-ingest:test \
--tag oneuptime/probe-ingest:${VERSION} \
--tag ghcr.io/oneuptime/probe-ingest:test \
--tag ghcr.io/oneuptime/probe-ingest:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./ProbeIngest/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/probe-ingest:enterprise-test \
--tag oneuptime/probe-ingest:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/probe-ingest:enterprise-test \
--tag ghcr.io/oneuptime/probe-ingest:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
server-monitor-ingest-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/server-monitor-ingest
ghcr.io/oneuptime/server-monitor-ingest
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy ServerMonitorIngest.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./ServerMonitorIngest/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/server-monitor-ingest:test \
--tag oneuptime/server-monitor-ingest:${VERSION} \
--tag ghcr.io/oneuptime/server-monitor-ingest:test \
--tag ghcr.io/oneuptime/server-monitor-ingest:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./ServerMonitorIngest/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/server-monitor-ingest:enterprise-test \
--tag oneuptime/server-monitor-ingest:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/server-monitor-ingest:enterprise-test \
--tag ghcr.io/oneuptime/server-monitor-ingest:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
incoming-request-ingest-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/incoming-request-ingest
ghcr.io/oneuptime/incoming-request-ingest
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy incoming-request-ingest.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./IncomingRequestIngest/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/incoming-request-ingest:test \
--tag oneuptime/incoming-request-ingest:${VERSION} \
--tag ghcr.io/oneuptime/incoming-request-ingest:test \
--tag ghcr.io/oneuptime/incoming-request-ingest:${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./IncomingRequestIngest/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/incoming-request-ingest:enterprise-test \
--tag oneuptime/incoming-request-ingest:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/incoming-request-ingest:enterprise-test \
--tag ghcr.io/oneuptime/incoming-request-ingest:enterprise-${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
open-telemetry-ingest-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/open-telemetry-ingest
ghcr.io/oneuptime/open-telemetry-ingest
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy incoming-request-ingest.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./OpenTelemetryIngest/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/open-telemetry-ingest:test \
--tag oneuptime/open-telemetry-ingest:${VERSION} \
--tag ghcr.io/oneuptime/open-telemetry-ingest:test \
--tag ghcr.io/oneuptime/open-telemetry-ingest:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./OpenTelemetryIngest/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/open-telemetry-ingest:enterprise-test \
--tag oneuptime/open-telemetry-ingest:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/open-telemetry-ingest:enterprise-test \
--tag ghcr.io/oneuptime/open-telemetry-ingest:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
fluent-ingest-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/fluent-ingest
ghcr.io/oneuptime/fluent-ingest
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy probe-ingest.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./FluentIngest/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/fluent-ingest:test \
--tag oneuptime/fluent-ingest:${VERSION} \
--tag ghcr.io/oneuptime/fluent-ingest:test \
--tag ghcr.io/oneuptime/fluent-ingest:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./FluentIngest/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/fluent-ingest:enterprise-test \
--tag oneuptime/fluent-ingest:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/fluent-ingest:enterprise-test \
--tag ghcr.io/oneuptime/fluent-ingest:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
probe-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/probe
ghcr.io/oneuptime/probe
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy probe.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./Probe/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/probe:test \
--tag oneuptime/probe:${VERSION} \
--tag ghcr.io/oneuptime/probe:test \
--tag ghcr.io/oneuptime/probe:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./Probe/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/probe:enterprise-test \
--tag oneuptime/probe:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/probe:enterprise-test \
--tag ghcr.io/oneuptime/probe:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
dashboard-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/dashboard
ghcr.io/oneuptime/dashboard
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy dashboard.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./Dashboard/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/dashboard:test \
--tag oneuptime/dashboard:${VERSION} \
--tag ghcr.io/oneuptime/dashboard:test \
--tag ghcr.io/oneuptime/dashboard:${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./Dashboard/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/dashboard:enterprise-test \
--tag oneuptime/dashboard:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/dashboard:enterprise-test \
--tag ghcr.io/oneuptime/dashboard:enterprise-${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
admin-dashboard-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/admin-dashboard
ghcr.io/oneuptime/admin-dashboard
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy admin-dashboard.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./AdminDashboard/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/admin-dashboard:test \
--tag oneuptime/admin-dashboard:${VERSION} \
--tag ghcr.io/oneuptime/admin-dashboard:test \
--tag ghcr.io/oneuptime/admin-dashboard:${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./AdminDashboard/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/admin-dashboard:enterprise-test \
--tag oneuptime/admin-dashboard:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/admin-dashboard:enterprise-test \
--tag ghcr.io/oneuptime/admin-dashboard:enterprise-${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
app-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/app
ghcr.io/oneuptime/app
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy app.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./App/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/app:test \
--tag oneuptime/app:${VERSION} \
--tag ghcr.io/oneuptime/app:test \
--tag ghcr.io/oneuptime/app:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./App/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/app:enterprise-test \
--tag oneuptime/app:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/app:enterprise-test \
--tag ghcr.io/oneuptime/app:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
api-reference-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/api-reference
ghcr.io/oneuptime/api-reference
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy app.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./APIReference/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/api-reference:test \
--tag oneuptime/api-reference:${VERSION} \
--tag ghcr.io/oneuptime/api-reference:test \
--tag ghcr.io/oneuptime/api-reference:${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./APIReference/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/api-reference:enterprise-test \
--tag oneuptime/api-reference:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/api-reference:enterprise-test \
--tag ghcr.io/oneuptime/api-reference:enterprise-${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
accounts-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/accounts
ghcr.io/oneuptime/accounts
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy accounts.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./Accounts/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/accounts:test \
--tag oneuptime/accounts:${VERSION} \
--tag ghcr.io/oneuptime/accounts:test \
--tag ghcr.io/oneuptime/accounts:${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./Accounts/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/accounts:enterprise-test \
--tag oneuptime/accounts:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/accounts:enterprise-test \
--tag ghcr.io/oneuptime/accounts:enterprise-${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
worker-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/worker
ghcr.io/oneuptime/worker
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy accounts.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./MCP/Dockerfile.tpl \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/mcp-server:${VERSION} \
--tag oneuptime/mcp-server:test \
--tag ghcr.io/oneuptime/mcp-server:${VERSION} \
--tag ghcr.io/oneuptime/mcp-server:test \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./MCP/Dockerfile.tpl \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/mcp-server:enterprise-test \
--tag oneuptime/mcp-server:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/mcp-server:enterprise-test \
--tag ghcr.io/oneuptime/mcp-server:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
copilot-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/copilot
ghcr.io/oneuptime/copilot
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy accounts.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./Copilot/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/copilot:test \
--tag oneuptime/copilot:${VERSION} \
--tag ghcr.io/oneuptime/copilot:test \
--tag ghcr.io/oneuptime/copilot:${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./Copilot/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/copilot:enterprise-test \
--tag oneuptime/copilot:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/copilot:enterprise-test \
--tag ghcr.io/oneuptime/copilot:enterprise-${VERSION} \
--build-arg APP_VERSION=${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
workflow-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/workflow
ghcr.io/oneuptime/workflow
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy accounts.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./Workflow/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/workflow:test \
--tag oneuptime/workflow:${VERSION} \
--tag ghcr.io/oneuptime/workflow:test \
--tag ghcr.io/oneuptime/workflow:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./Workflow/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/workflow:enterprise-test \
--tag oneuptime/workflow:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/workflow:enterprise-test \
--tag ghcr.io/oneuptime/workflow:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
docs-docker-image-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/docs
ghcr.io/oneuptime/docs
tags: |
type=raw,value=test,enable=true
type=raw,value=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test,enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: npm run prerun
# Build and deploy accounts.
- name: Login to Docker Hub
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
- name: Login to GitHub Container Registry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin
- name: Build and push
uses: nick-fields/retry@v3
with:
timeout_minutes: 30
max_attempts: 3
command: |
VERSION="${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}-test"
docker buildx build \
--file ./Docs/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/docs:test \
--tag oneuptime/docs:${VERSION} \
--tag ghcr.io/oneuptime/docs:test \
--tag ghcr.io/oneuptime/docs:${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=false \
.
docker buildx build \
--file ./Docs/Dockerfile \
--platform linux/amd64,linux/arm64 \
--push \
--tag oneuptime/docs:enterprise-test \
--tag oneuptime/docs:enterprise-${VERSION} \
--tag ghcr.io/oneuptime/docs:enterprise-test \
--tag ghcr.io/oneuptime/docs:enterprise-${VERSION} \
--build-arg GIT_SHA=${{ github.sha }} \
--build-arg APP_VERSION=${VERSION} \
--build-arg IS_ENTERPRISE_EDITION=true \
.
test-helm-chart:
runs-on: ubuntu-latest
needs: [infrastructure-agent-deploy, publish-mcp-server, llm-docker-image-deploy, publish-terraform-provider, open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, docs-docker-image-deploy, worker-docker-image-deploy, workflow-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, api-reference-docker-image-deploy, test-server-docker-image-deploy, test-docker-image-deploy, probe-ingest-docker-image-deploy, server-monitor-ingest-docker-image-deploy, probe-docker-image-deploy, dashboard-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, accounts-docker-image-deploy, otel-collector-docker-image-deploy, status-page-docker-image-deploy, nginx-docker-image-deploy, e2e-docker-image-deploy, fluent-ingest-docker-image-deploy, incoming-request-ingest-docker-image-deploy]
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
# Docker compose needs a lot of space to build images, so we need to free up some space first in the GitHub Actions runner
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: cd HelmChart && cd Tests && bash index.sh
test-e2e-test-saas:
runs-on: ubuntu-latest
needs: [test-helm-chart]
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
# Docker compose needs a lot of space to build images, so we need to free up some space first in the GitHub Actions runner
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: npm run prerun && bash ./Tests/Scripts/change-release-to-test-tag.sh
- name: Start Server with release tag
run: npm run start
- name: Wait for server to start
run: bash ./Tests/Scripts/status-check.sh http://localhost
- name: Run E2E Tests. Run docker container e2e in docker compose file
uses: nick-fields/retry@v3
with:
timeout_minutes: 90
max_attempts: 3
on_retry_command: docker compose -f docker-compose.dev.yml down -v || true
command: export $(grep -v '^#' config.env | xargs) && docker compose -f docker-compose.dev.yml up --exit-code-from e2e --abort-on-container-exit e2e || (docker compose -f docker-compose.dev.yml logs e2e && exit 1)
- name: Upload test results
uses: actions/upload-artifact@v4
# Run this on failure
if: failure()
with:
# Name of the artifact to upload.
# Optional. Default is 'artifact'
name: test-results-${{ github.job }}-${{ github.run_attempt }}
# A file, directory or wildcard pattern that describes what to upload
# Required.
path: |
./E2E
# Duration after which artifact will expire in days. 0 means using default retention.
# Minimum 1 day.
# Maximum 90 days unless changed from the repository settings page.
# Optional. Defaults to repository settings.
retention-days: 7
test-e2e-test-self-hosted:
runs-on: ubuntu-latest
# After all the jobs runs
needs: [test-helm-chart]
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
# Docker compose needs a lot of space to build images, so we need to free up some space first in the GitHub Actions runner
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
- run: npm run prerun && bash ./Tests/Scripts/change-release-to-test-tag.sh
- name: Start Server with release tag
run: npm run start
- name: Wait for server to start
run: bash ./Tests/Scripts/status-check.sh http://localhost
- name: Run E2E Tests. Run docker container e2e in docker compose file
uses: nick-fields/retry@v3
with:
timeout_minutes: 90
max_attempts: 3
on_retry_command: docker compose -f docker-compose.dev.yml down -v || true
command: export $(grep -v '^#' config.env | xargs) && docker compose -f docker-compose.dev.yml up --exit-code-from e2e --abort-on-container-exit e2e || (docker compose -f docker-compose.dev.yml logs e2e && exit 1)
- name: Upload test results
uses: actions/upload-artifact@v4
# Run this on failure
if: failure()
with:
# Name of the artifact to upload.
# Optional. Default is 'artifact'
name: test-results-${{ github.job }}-${{ github.run_attempt }}
# A file, directory or wildcard pattern that describes what to upload
# Required.
path: |
./E2E
# Duration after which artifact will expire in days. 0 means using default retention.
# Minimum 1 day.
# Maximum 90 days unless changed from the repository settings page.
# Optional. Defaults to repository settings.
retention-days: 7
infrastructure-agent-deploy:
needs: [read-version, generate-build-number]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- name: Set up Go
uses: actions/setup-go@v4
- name: Install GoReleaser
uses: goreleaser/goreleaser-action@v6.1.0
with:
install-only: true
- name: GoReleaser Version
run: goreleaser -v
# This tool is used to generate .rpm and .deb packages
- name: Install NFPM
run: go install github.com/goreleaser/nfpm/v2/cmd/nfpm@latest
- name: Show GoReleaser version
run: goreleaser -v
- name: Run GoReleaser
run: cd InfrastructureAgent && export GORELEASER_CURRENT_TAG=${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}} && goreleaser release --clean --snapshot
- name: Release MSI Images
run: cd InfrastructureAgent && bash build-msi.sh ${{needs.read-version.outputs.major_minor}}.${{needs.generate-build-number.outputs.build_number}}
- name: Upload Release Binaries
uses: actions/upload-artifact@v4
# Run this on failure
with:
# Name of the artifact to upload.
# Optional. Default is 'artifact'
name: binaries
# A file, directory or wildcard pattern that describes what to upload
# Required.
path: |
./InfrastructureAgent/dist
# Duration after which artifact will expire in days. 0 means using default retention.
# Minimum 1 day.
# Maximum 90 days unless changed from the repository settings page.
# Optional. Defaults to repository settings.
retention-days: 7