on: release: types: [released] workflow_dispatch: inputs: tag: description: "Tag to use for the release" required: true name: Release jobs: load: runs-on: ubicloud-standard-8 timeout-minutes: 30 strategy: matrix: migrate-strategy: ["latest"] rabbitmq-enabled: ["true", "false"] pg-version: ["15-alpine", "16-alpine", "17-alpine"] optimistic-scheduling: ["true", "false"] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Install Task uses: arduino/setup-task@b91d5d2c96a56797b48ac1e0e89220bf64044611 # v2.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Go uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 with: go-version: "1.25" - name: Setup pnpm uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 with: version: 10.16.1 run_install: false - name: Go deps run: go mod download - name: Test run: | go test -tags load ./... -p 5 -v -race -failfast -timeout 20m env: TESTING_MATRIX_MIGRATE: ${{ matrix.migrate-strategy }} TESTING_MATRIX_RABBITMQ_ENABLED: ${{ matrix.rabbitmq-enabled }} TESTING_MATRIX_PG_VERSION: ${{ matrix.pg-version }} push-hatchet-server: name: Push latest runs-on: ubicloud-standard-2 steps: - name: Get tag name id: tag_name run: | if [ -z "${{ github.event.inputs.tag }}" ]; then tag=${GITHUB_TAG/refs\/tags\//} else tag=${{ github.event.inputs.tag }} fi echo ::set-output name=tag::$tag env: GITHUB_TAG: ${{ github.ref }} - name: Login to GHCR id: login-ghcr run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Pull and push hatchet-api run: | docker pull ghcr.io/hatchet-dev/hatchet/hatchet-api:${{steps.tag_name.outputs.tag}}-arm64 docker pull ghcr.io/hatchet-dev/hatchet/hatchet-api:${{steps.tag_name.outputs.tag}}-amd64 docker manifest create ghcr.io/hatchet-dev/hatchet/hatchet-api:latest \ ghcr.io/hatchet-dev/hatchet/hatchet-api:${{steps.tag_name.outputs.tag}}-amd64 \ ghcr.io/hatchet-dev/hatchet/hatchet-api:${{steps.tag_name.outputs.tag}}-arm64 docker manifest push ghcr.io/hatchet-dev/hatchet/hatchet-api:latest - name: Pull and push hatchet-engine run: | docker pull ghcr.io/hatchet-dev/hatchet/hatchet-engine:${{steps.tag_name.outputs.tag}}-arm64 docker pull ghcr.io/hatchet-dev/hatchet/hatchet-engine:${{steps.tag_name.outputs.tag}}-amd64 docker manifest create ghcr.io/hatchet-dev/hatchet/hatchet-engine:latest \ ghcr.io/hatchet-dev/hatchet/hatchet-engine:${{steps.tag_name.outputs.tag}}-amd64 \ ghcr.io/hatchet-dev/hatchet/hatchet-engine:${{steps.tag_name.outputs.tag}}-arm64 docker manifest push ghcr.io/hatchet-dev/hatchet/hatchet-engine:latest - name: Pull and push hatchet-admin run: | docker pull ghcr.io/hatchet-dev/hatchet/hatchet-admin:${{steps.tag_name.outputs.tag}}-arm64 docker pull ghcr.io/hatchet-dev/hatchet/hatchet-admin:${{steps.tag_name.outputs.tag}}-amd64 docker manifest create ghcr.io/hatchet-dev/hatchet/hatchet-admin:latest \ ghcr.io/hatchet-dev/hatchet/hatchet-admin:${{steps.tag_name.outputs.tag}}-amd64 \ ghcr.io/hatchet-dev/hatchet/hatchet-admin:${{steps.tag_name.outputs.tag}}-arm64 docker manifest push ghcr.io/hatchet-dev/hatchet/hatchet-admin:latest - name: Pull and push hatchet-frontend run: | docker pull ghcr.io/hatchet-dev/hatchet/hatchet-frontend:${{steps.tag_name.outputs.tag}}-arm64 docker pull ghcr.io/hatchet-dev/hatchet/hatchet-frontend:${{steps.tag_name.outputs.tag}}-amd64 docker manifest create ghcr.io/hatchet-dev/hatchet/hatchet-frontend:latest \ ghcr.io/hatchet-dev/hatchet/hatchet-frontend:${{steps.tag_name.outputs.tag}}-amd64 \ ghcr.io/hatchet-dev/hatchet/hatchet-frontend:${{steps.tag_name.outputs.tag}}-arm64 docker manifest push ghcr.io/hatchet-dev/hatchet/hatchet-frontend:latest - name: Pull and push hatchet-migrate run: | docker pull ghcr.io/hatchet-dev/hatchet/hatchet-migrate:${{steps.tag_name.outputs.tag}}-arm64 docker pull ghcr.io/hatchet-dev/hatchet/hatchet-migrate:${{steps.tag_name.outputs.tag}}-amd64 docker manifest create ghcr.io/hatchet-dev/hatchet/hatchet-migrate:latest \ ghcr.io/hatchet-dev/hatchet/hatchet-migrate:${{steps.tag_name.outputs.tag}}-amd64 \ ghcr.io/hatchet-dev/hatchet/hatchet-migrate:${{steps.tag_name.outputs.tag}}-arm64 docker manifest push ghcr.io/hatchet-dev/hatchet/hatchet-migrate:latest - name: Pull and push hatchet-lite run: | docker pull ghcr.io/hatchet-dev/hatchet/hatchet-lite:${{steps.tag_name.outputs.tag}}-arm64 docker pull ghcr.io/hatchet-dev/hatchet/hatchet-lite:${{steps.tag_name.outputs.tag}}-amd64 docker manifest create ghcr.io/hatchet-dev/hatchet/hatchet-lite:latest \ ghcr.io/hatchet-dev/hatchet/hatchet-lite:${{steps.tag_name.outputs.tag}}-amd64 \ ghcr.io/hatchet-dev/hatchet/hatchet-lite:${{steps.tag_name.outputs.tag}}-arm64 docker manifest push ghcr.io/hatchet-dev/hatchet/hatchet-lite:latest - name: Pull and push hatchet-dashboard run: | docker pull ghcr.io/hatchet-dev/hatchet/hatchet-dashboard:${{steps.tag_name.outputs.tag}}-arm64 docker pull ghcr.io/hatchet-dev/hatchet/hatchet-dashboard:${{steps.tag_name.outputs.tag}}-amd64 docker manifest create ghcr.io/hatchet-dev/hatchet/hatchet-dashboard:latest \ ghcr.io/hatchet-dev/hatchet/hatchet-dashboard:${{steps.tag_name.outputs.tag}}-amd64 \ ghcr.io/hatchet-dev/hatchet/hatchet-dashboard:${{steps.tag_name.outputs.tag}}-arm64 docker manifest push ghcr.io/hatchet-dev/hatchet/hatchet-dashboard:latest - name: Pull and push hatchet-loadtest run: | docker pull ghcr.io/hatchet-dev/hatchet/hatchet-loadtest:${{steps.tag_name.outputs.tag}}-arm64 docker pull ghcr.io/hatchet-dev/hatchet/hatchet-loadtest:${{steps.tag_name.outputs.tag}}-amd64 docker manifest create ghcr.io/hatchet-dev/hatchet/hatchet-loadtest:latest \ ghcr.io/hatchet-dev/hatchet/hatchet-loadtest:${{steps.tag_name.outputs.tag}}-amd64 \ ghcr.io/hatchet-dev/hatchet/hatchet-loadtest:${{steps.tag_name.outputs.tag}}-arm64 docker manifest push ghcr.io/hatchet-dev/hatchet/hatchet-loadtest:latest