name: Push Test Images to Docker Hub and GitHub Container Registry 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 }}" nginx-docker-image-deploy: needs: 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=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy nginx. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./Nginx/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} test-server-docker-image-deploy: needs: 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=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy test-server. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./TestServer/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} otel-collector-docker-image-deploy: needs: 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=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy otel-collector. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./OTelCollector/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} status-page-docker-image-deploy: needs: 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=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy status-page. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./StatusPage/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} test-docker-image-deploy: needs: 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=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy test. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./Tests/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} ingestor-docker-image-deploy: needs: generate-build-number runs-on: ubuntu-latest steps: - name: Docker Meta id: meta uses: docker/metadata-action@v4 with: images: | oneuptime/ingestor ghcr.io/oneuptime/ingestor tags: | type=raw,value=test,enable=true type=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy ingestor. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./Ingestor/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} probe-docker-image-deploy: needs: 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=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy probe. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./Probe/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} haraka-docker-image-deploy: needs: generate-build-number runs-on: ubuntu-latest steps: - name: Docker Meta id: meta uses: docker/metadata-action@v4 with: images: | oneuptime/haraka ghcr.io/oneuptime/haraka tags: | type=raw,value=test,enable=true type=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy haraka. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./Haraka/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} dashboard-docker-image-deploy: needs: 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=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy dashboard. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./Dashboard/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} admin-dashboard-docker-image-deploy: needs: 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=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy admin-dashboard. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./AdminDashboard/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} app-docker-image-deploy: needs: 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=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy app. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./App/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} accounts-docker-image-deploy: needs: 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=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true - uses: actions/checkout@v4 with: ref: ${{ github.ref }} - uses: actions/setup-node@v2 with: node-version: 18.3.0 - 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 run: npm run prerun # Build and deploy accounts. - name: Login to Docker Hub uses: docker/login-action@v2.2.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v2.2.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v4 with: file: ./Accounts/Dockerfile context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | GIT_SHA=${{ github.sha }} APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}} test-helm-chart: runs-on: ubuntu-latest needs: [test-server-docker-image-deploy, test-docker-image-deploy, ingestor-docker-image-deploy, probe-docker-image-deploy, haraka-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] env: CI_PIPELINE_ID: ${{github.run_number}} steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: 18.3.0 - run: cd HelmChart && cd Tests && bash index.sh