From 54858c0fc02196f797e4bb411eb00bc12267b0cc Mon Sep 17 00:00:00 2001 From: Ray Myers Date: Mon, 6 Apr 2026 16:51:09 -0500 Subject: [PATCH] ci: retire Blacksmith from all GitHub Actions workflows (#13795) Co-authored-by: openhands --- .github/workflows/fe-e2e-tests.yml | 6 ++++-- .github/workflows/fe-unit-tests.yml | 6 ++++-- .github/workflows/ghcr-build.yml | 20 ++++++++++---------- .github/workflows/lint-fix.yml | 15 ++++++++------- .github/workflows/lint.yml | 21 +++++++++++---------- .github/workflows/npm-publish-ui.yml | 4 ++-- .github/workflows/py-tests.yml | 12 +++++++----- .github/workflows/pypi-release.yml | 4 ++-- .github/workflows/stale.yml | 2 +- .github/workflows/ui-build.yml | 2 +- 10 files changed, 50 insertions(+), 42 deletions(-) diff --git a/.github/workflows/fe-e2e-tests.yml b/.github/workflows/fe-e2e-tests.yml index d10da855e8..2a109fe600 100644 --- a/.github/workflows/fe-e2e-tests.yml +++ b/.github/workflows/fe-e2e-tests.yml @@ -17,7 +17,7 @@ concurrency: jobs: fe-e2e-test: name: FE E2E Tests - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 strategy: matrix: node-version: [22] @@ -26,9 +26,11 @@ jobs: - name: Checkout uses: actions/checkout@v6 - name: Set up Node.js - uses: useblacksmith/setup-node@v5 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} + cache: 'npm' + cache-dependency-path: frontend/package-lock.json - name: Install dependencies working-directory: ./frontend run: npm ci diff --git a/.github/workflows/fe-unit-tests.yml b/.github/workflows/fe-unit-tests.yml index 24d65b062d..436d27a94e 100644 --- a/.github/workflows/fe-unit-tests.yml +++ b/.github/workflows/fe-unit-tests.yml @@ -21,7 +21,7 @@ jobs: # Run frontend unit tests fe-test: name: FE Unit Tests - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 strategy: matrix: node-version: [22] @@ -30,9 +30,11 @@ jobs: - name: Checkout uses: actions/checkout@v6 - name: Set up Node.js - uses: useblacksmith/setup-node@v5 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} + cache: 'npm' + cache-dependency-path: frontend/package-lock.json - name: Install dependencies working-directory: ./frontend run: npm ci diff --git a/.github/workflows/ghcr-build.yml b/.github/workflows/ghcr-build.yml index e503fe9cff..8dbd5d0a7c 100644 --- a/.github/workflows/ghcr-build.yml +++ b/.github/workflows/ghcr-build.yml @@ -30,7 +30,7 @@ env: jobs: define-matrix: - runs-on: blacksmith + runs-on: ubuntu-latest outputs: base_image: ${{ steps.define-base-images.outputs.base_image }} platforms: ${{ steps.define-base-images.outputs.platforms }} @@ -57,7 +57,7 @@ jobs: # Builds the OpenHands Docker images ghcr_build_app: name: Build App Image - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 if: "!(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/ext-v'))" needs: define-matrix permissions: @@ -92,7 +92,7 @@ jobs: # Builds the runtime Docker images ghcr_build_runtime: name: Build Runtime Image - runs-on: blacksmith-8vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 if: "!(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/ext-v'))" permissions: contents: read @@ -122,7 +122,7 @@ jobs: - name: Install poetry via pipx run: pipx install poetry - name: Set up Python - uses: useblacksmith/setup-python@v6 + uses: actions/setup-python@v5 with: python-version: "3.12" cache: poetry @@ -149,7 +149,7 @@ jobs: echo "DOCKER_BUILD_ARGS=$(echo "$DOCKER_BUILD_JSON" | jq -r '.build_args | join(",")')" >> $GITHUB_ENV - name: Build and push runtime image ${{ matrix.base_image.image }} if: github.event.pull_request.head.repo.fork != true - uses: useblacksmith/build-push-action@v1 + uses: docker/build-push-action@v6 with: push: true tags: ${{ env.DOCKER_TAGS }} @@ -163,7 +163,7 @@ jobs: # Forked repos can't push to GHCR, so we just build in order to populate the cache for rebuilding - name: Build runtime image ${{ matrix.base_image.image }} for fork if: github.event.pull_request.head.repo.fork - uses: useblacksmith/build-push-action@v1 + uses: docker/build-push-action@v6 with: tags: ghcr.io/${{ env.REPO_OWNER }}/runtime:${{ env.RELEVANT_SHA }}-${{ matrix.base_image.tag }} context: containers/runtime @@ -176,7 +176,7 @@ jobs: ghcr_build_enterprise: name: Push Enterprise Image - runs-on: blacksmith-8vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 permissions: contents: read packages: write @@ -229,7 +229,7 @@ jobs: # rather than a mutable branch tag like "main" which can serve stale cached layers. echo "OPENHANDS_DOCKER_TAG=${RELEVANT_SHA}" >> $GITHUB_ENV - name: Build and push Docker image - uses: useblacksmith/build-push-action@v1 + uses: docker/build-push-action@v6 with: context: . file: enterprise/Dockerfile @@ -248,7 +248,7 @@ jobs: # We can remove this once the config changes runtime_tests_check_success: name: All Runtime Tests Passed - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 steps: - name: All tests passed run: echo "All runtime tests have passed successfully!" @@ -257,7 +257,7 @@ jobs: name: Update PR Description if: github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork && github.actor != 'dependabot[bot]' needs: [ghcr_build_runtime] - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v6 diff --git a/.github/workflows/lint-fix.yml b/.github/workflows/lint-fix.yml index 4880b1c2c7..4e6d693be5 100644 --- a/.github/workflows/lint-fix.yml +++ b/.github/workflows/lint-fix.yml @@ -9,7 +9,7 @@ jobs: lint-fix-frontend: if: github.event.label.name == 'lint-fix' name: Fix frontend linting issues - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 permissions: contents: write pull-requests: write @@ -22,13 +22,14 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Install Node.js 22 - uses: useblacksmith/setup-node@v5 + uses: actions/setup-node@v4 with: node-version: 22 + cache: 'npm' + cache-dependency-path: frontend/package-lock.json - name: Install frontend dependencies - run: | - cd frontend - npm install --frozen-lockfile + working-directory: ./frontend + run: npm ci - name: Generate i18n and route types run: | cd frontend @@ -58,7 +59,7 @@ jobs: lint-fix-python: if: github.event.label.name == 'lint-fix' name: Fix Python linting issues - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 permissions: contents: write pull-requests: write @@ -71,7 +72,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Set up python - uses: useblacksmith/setup-python@v6 + uses: actions/setup-python@v5 with: python-version: 3.12 cache: "pip" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9bd8c9ac7c..0e79ce122b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,34 +19,35 @@ jobs: # Run lint on the frontend code lint-frontend: name: Lint frontend - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v6 - name: Install Node.js 22 - uses: useblacksmith/setup-node@v5 + uses: actions/setup-node@v4 with: node-version: 22 + cache: 'npm' + cache-dependency-path: frontend/package-lock.json - name: Install dependencies - run: | - cd frontend - npm install --frozen-lockfile + working-directory: ./frontend + run: npm ci - name: Lint, TypeScript compilation, and translation checks run: | cd frontend npm run lint - npm run make-i18n && tsc + npm run make-i18n && npx tsc npm run check-translation-completeness # Run lint on the python code lint-python: name: Lint python - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Set up python - uses: useblacksmith/setup-python@v6 + uses: actions/setup-python@v5 with: python-version: 3.12 cache: "pip" @@ -57,13 +58,13 @@ jobs: lint-enterprise-python: name: Lint enterprise python - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Set up python - uses: useblacksmith/setup-python@v6 + uses: actions/setup-python@v5 with: python-version: 3.12 cache: "pip" diff --git a/.github/workflows/npm-publish-ui.yml b/.github/workflows/npm-publish-ui.yml index 9993be3c95..f3e7b68245 100644 --- a/.github/workflows/npm-publish-ui.yml +++ b/.github/workflows/npm-publish-ui.yml @@ -18,7 +18,7 @@ concurrency: jobs: check-version: name: Check if version has changed - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 defaults: run: shell: bash @@ -55,7 +55,7 @@ jobs: publish: name: Publish to npm - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 needs: check-version if: needs.check-version.outputs.should-publish == 'true' defaults: diff --git a/.github/workflows/py-tests.yml b/.github/workflows/py-tests.yml index b45b6e8bc5..2a2c422b90 100644 --- a/.github/workflows/py-tests.yml +++ b/.github/workflows/py-tests.yml @@ -19,7 +19,7 @@ jobs: # Run python tests on Linux test-on-linux: name: Python Tests on Linux - runs-on: blacksmith-4vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 env: INSTALL_DOCKER: "0" # Set to '0' to skip Docker installation strategy: @@ -37,13 +37,15 @@ jobs: - name: Install tmux run: sudo apt-get update && sudo apt-get install -y tmux - name: Setup Node.js - uses: useblacksmith/setup-node@v5 + uses: actions/setup-node@v4 with: node-version: "22.x" + cache: 'npm' + cache-dependency-path: frontend/package-lock.json - name: Install poetry via pipx run: pipx install poetry - name: Set up Python - uses: useblacksmith/setup-python@v6 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: "poetry" @@ -73,7 +75,7 @@ jobs: test-enterprise: name: Enterprise Python Unit Tests - runs-on: blacksmith-4vcpu-ubuntu-2404 + runs-on: ubuntu-24.04 strategy: matrix: python-version: ["3.12"] @@ -82,7 +84,7 @@ jobs: - name: Install poetry via pipx run: pipx install poetry - name: Set up Python - uses: useblacksmith/setup-python@v6 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: "poetry" diff --git a/.github/workflows/pypi-release.yml b/.github/workflows/pypi-release.yml index 0a794f393e..8414f686c1 100644 --- a/.github/workflows/pypi-release.yml +++ b/.github/workflows/pypi-release.yml @@ -17,14 +17,14 @@ on: jobs: release: - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 # Run when manually dispatched for "app server" OR for tag pushes that don't contain '-cli' and don't start with 'cloud-' if: | (github.event_name == 'workflow_dispatch' && github.event.inputs.reason == 'app server') || (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && !contains(github.ref, '-cli') && !startsWith(github.ref, 'refs/tags/cloud-')) steps: - uses: actions/checkout@v6 - - uses: useblacksmith/setup-python@v6 + - uses: actions/setup-python@v5 with: python-version: 3.12 - name: Install Poetry diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 29a97b6dcb..534a35268d 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -8,7 +8,7 @@ on: jobs: stale: - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 if: github.repository == 'OpenHands/OpenHands' steps: - uses: actions/stale@v10 diff --git a/.github/workflows/ui-build.yml b/.github/workflows/ui-build.yml index 042b5fc9cb..12b857d69d 100644 --- a/.github/workflows/ui-build.yml +++ b/.github/workflows/ui-build.yml @@ -19,7 +19,7 @@ concurrency: jobs: ui-build: name: Build openhands-ui - runs-on: blacksmith-4vcpu-ubuntu-2204 + runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v6