diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 2172e08cfb2a..1bfad2a8a4db 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,48 +1,10 @@
-# Legacy codebases
-/batch-submitter @ethereum-optimism/legacy-reviewers
-/bss-core @ethereum-optimism/legacy-reviewers
-/gas-oracle @ethereum-optimism/legacy-reviewers
-/integration-tests @ethereum-optimism/legacy-reviewers
-/l2geth @ethereum-optimism/legacy-reviewers
-/l2geth-exporter @ethereum-optimism/legacy-reviewers
-/packages/actor-tests @ethereum-optimism/legacy-reviewers
-/packages/common-ts @ethereum-optimism/typescript-reviewers
-/packages/contracts @ethereum-optimism/contract-reviewers
-/packages/contracts-bedrock @ethereum-optimism/contract-reviewers
-/packages/contracts-periphery @ethereum-optimism/contract-reviewers
-/packages/core-utils @ethereum-optimism/legacy-reviewers
-/packages/data-transport-layer @ethereum-optimism/legacy-reviewers
-/packages/chain-mon @smartcontracts
-/packages/fault-detector @ethereum-optimism/legacy-reviewers
-/packages/hardhat-deploy-config @ethereum-optimism/legacy-reviewers
-/packages/message-relayer @ethereum-optimism/legacy-reviewers
-/packages/migration-data @ethereum-optimism/legacy-reviewers
-/packages/replica-healthcheck @ethereum-optimism/legacy-reviewers
-/packages/sdk @ethereum-optimism/ecopod
-/packages/atst @ethereum-optimism/ecopod
-
-# Bedrock codebases
-/bedrock-devnet @ethereum-optimism/go-reviewers
-/op-batcher @ethereum-optimism/go-reviewers
-/op-chain-ops @ethereum-optimism/go-reviewers
-/op-e2e @ethereum-optimism/go-reviewers
-/op-node @ethereum-optimism/go-reviewers
-/op-node/rollup @protolambda @trianglesphere
-/op-proposer @ethereum-optimism/go-reviewers
-/op-program @ethereum-optimism/go-reviewers
-/op-service @ethereum-optimism/go-reviewers
-/ops-bedrock @ethereum-optimism/go-reviewers
-
-
-# Ops
-/.circleci @ethereum-optimism/infra-reviewers
-/.github @ethereum-optimism/infra-reviewers
-/ops @ethereum-optimism/infra-reviewers
-/op-signer @ethereum-optimism/infra-reviewers
-
-# Misc
-/proxyd @ethereum-optimism/infra-reviewers
-/indexer @ethereum-optimism/infra-reviewers
-/infra @ethereum-optimism/infra-reviewers
-/specs @ethereum-optimism/contract-reviewers @ethereum-optimism/go-reviewers
-/endpoint-monitor @ethereum-optimism/infra-reviewers
+# CODEOWNERS: https://help.github.com/articles/about-codeowners/
+
+# Everything goes through the following "global owners" by default.
+# Unless a later match takes precedence, these three will be
+# requested for review when someone opens a PR.
+# Note that the last matching pattern takes precedence, so
+# global owners are only requested if there isn't a more specific
+# codeowner specified below. For this reason, the global codeowners
+# are often repeated in package-level definitions.
+* @tuxcanfly @jcstein @Ferret-san
diff --git a/.github/auto_request_review.yml b/.github/auto_request_review.yml
new file mode 100644
index 000000000000..6257b8a6f8cb
--- /dev/null
+++ b/.github/auto_request_review.yml
@@ -0,0 +1,18 @@
+reviewers:
+ defaults:
+ - code-owners
+ groups:
+ code-owners:
+ - tuxcanfly
+ - jcstein
+ - Ferret-san
+ celestia:
+ - team:celestia
+files:
+ '**':
+ - code-owners
+options:
+ ignore_draft: true
+ ignored_keywords:
+ - WIP
+ number_of_reviewers: 3
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000000..542de477686a
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,25 @@
+version: 2
+updates:
+ # Check for updates on our docker image and for celestia-node
+ - package-ecosystem: docker
+ directory: "/ops-bedrock"
+ schedule:
+ interval: daily
+ open-pull-requests-limit: 10
+ labels:
+ - dependencies
+ - package-ecosystem: github-actions
+ directory: "/"
+ schedule:
+ interval: daily
+ open-pull-requests-limit: 10
+ labels:
+ - dependencies
+ # Check for updates on celestia packages
+ - package-ecosystem: gomod
+ directory: "/"
+ schedule:
+ interval: daily
+ open-pull-requests-limit: 10
+ labels:
+ - dependencies
diff --git a/.github/labeler.yml b/.github/labeler.yml
deleted file mode 100644
index 2a7b8f5dfb6d..000000000000
--- a/.github/labeler.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-C-Protocol-Critical:
- - 'packages/data-transport-layer/**/*.ts'
- - 'packages/contracts/**/*.sol'
- - 'l2geth/**/*.go'
diff --git a/.github/mergify.yml b/.github/mergify.yml
deleted file mode 100644
index 76296581af90..000000000000
--- a/.github/mergify.yml
+++ /dev/null
@@ -1,137 +0,0 @@
-queue_rules:
- - name: default
- conditions: []
-
-pull_request_rules:
- - name: Automatic merge on approval
- conditions:
- - and:
- - "#review-threads-unresolved=0"
- - "#approved-reviews-by>=1"
- - "#changes-requested-reviews-by=0"
- - "label!=do-not-merge"
- - "label!=multiple-reviewers"
- - "label!=mergify-ignore"
- - "base=develop"
- - or:
- - and:
- - "label!=SR-Risk"
- - "label!=C-Protocol-Critical"
- - and:
- - "label=SR-Risk"
- - "approved-reviews-by=maurelian"
- - and:
- - "label=C-Protocol-Critical"
- - or:
- - "approved-reviews-by=tynes"
- - "approved-reviews-by=smartcontracts"
- actions:
- queue:
- name: default
- method: merge
- merge_bot_account: OptimismBot
- - name: Add merge train label
- conditions:
- - "queue-position >= 0"
- actions:
- comment:
- message: |
- This PR has been added to the merge queue, and will be merged soon.
- label:
- add:
- - on-merge-train
- - name: Remove merge train label
- conditions:
- - "queue-position = -1"
- actions:
- label:
- remove:
- - on-merge-train
- - name: Handle security critical PRs
- conditions:
- - "label=SR-Risk"
- actions:
- request_reviews:
- users:
- - "maurelian"
- comment:
- message: |
- Hey there @{{author}}! You flagged this PR as security critical. To make review easier, please add a comment describing
-
- 1. The risks present in this PR.
- 2. The mitigations you have added to try and reduce those risks.
- - name: Request protocol critical reviewers
- conditions:
- - label=C-Protocol-Critical
- actions:
- request_reviews:
- users:
- - tynes
- - smartcontracts
- random_count: 1
- - name: Ask to resolve conflict
- conditions:
- - conflict
- actions:
- comment:
- message: Hey @{{author}}! This PR has merge conflicts. Please fix them before continuing review.
- label:
- add:
- - conflict
- - name: Remove conflicts label when conflicts gone
- conditions:
- - -conflict
- actions:
- label:
- remove:
- - conflict
- - name: Notify author when added to merge queue
- conditions:
- - "check-pending=Queue: Embarked in merge train"
- actions:
- comment:
- message: |
- This PR is next in line to be merged, and will be merged as soon as checks pass.
- - name: Notify author on queue failure
- conditions:
- - 'check-failure=Queue: Embarked in merge train'
- actions:
- comment:
- message: >
- Hey @{{ author }}, this pull request failed to merge and has been
- dequeued from the merge train. If you believe your PR failed in
- the merge train because of a flaky test, requeue it by commenting
- with `@mergifyio requeue`.
-
- More details can be found on the `Queue: Embarked in merge train`
- check-run.
- - name: Add indexer tag and ecopod reviewers
- conditions:
- - 'files~=^indexer/'
- actions:
- label:
- add:
- - indexer
- request_reviews:
- users:
- - roninjin10
- - name: Add sdk tag and ecopod reviewers
- conditions:
- - 'files~=^packages/sdk/'
- actions:
- label:
- add:
- - sdk
- request_reviews:
- users:
- - roninjin10
- - name: Add common-ts tag and ecopod reviewers
- conditions:
- - 'files~=^packages/common-ts/'
- actions:
- label:
- add:
- - common-ts
- request_reviews:
- users:
- - roninjin10
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 000000000000..a99ea3e7fcfe
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,29 @@
+name: CI
+on:
+ push:
+ branches:
+ - main
+ # Trigger on version tags
+ tags:
+ - 'v[0-9]+\.[0-9]+\.[0-9]+-OP_v[0-9]+\.[0-9]+\.[0-9]+-CN_v[0-9]+\.[0-9]+\.[0-9]+'
+ - 'v[0-9]+\.[0-9]+\.[0-9]+-OP_v[0-9]+\.[0-9]+\.[0-9]+-CN_v[0-9]+\.[0-9]+\.[0-9]+-rc(?:[0-9]+|\.[0-9]+)'
+ pull_request:
+ workflow_dispatch:
+ # Inputs the workflow accepts.
+ inputs:
+ version:
+ # Friendly description to be shown in the UI instead of 'name'
+ description: "Semver type of new version (major / minor / patch)"
+ # Input has to be provided for the workflow to run
+ required: true
+ type: choice
+ options:
+ - patch
+ - minor
+ - major
+
+jobs:
+ test:
+ uses: ./.github/workflows/test.yml
+ with:
+ GO_VERSION: '1.20'
diff --git a/.github/workflows/close-stale.yml b/.github/workflows/close-stale.yml
deleted file mode 100644
index d36e8d6c6b4d..000000000000
--- a/.github/workflows/close-stale.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: 'Close stale issues and PRs'
-on:
- schedule:
- - cron: '30 1 * * *'
-
-jobs:
- stale:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/stale@v4
- with:
- stale-pr-message: 'This PR is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
- exempt-pr-labels: exempt-stale
- days-before-issue-stale: 999
- days-before-pr-stale: 14
- days-before-close: 5
- repo-token: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/devnet.yml b/.github/workflows/devnet.yml
new file mode 100644
index 000000000000..51577b39c9ba
--- /dev/null
+++ b/.github/workflows/devnet.yml
@@ -0,0 +1,10 @@
+# devnet.yml
+name: 'Celestia Devnet'
+description: 'Launch a local celestia devnet'
+runs:
+ using: 'docker'
+ image: 'ghcr.io/rollkit/local-celestia-devnet:v0.9.5'
+ ports:
+ - 26650:26657
+ - 26659:26659
+ options: --platform linux/amd64
diff --git a/.github/workflows/housekeeping.yml b/.github/workflows/housekeeping.yml
new file mode 100644
index 000000000000..5a7ccd14ecbc
--- /dev/null
+++ b/.github/workflows/housekeeping.yml
@@ -0,0 +1,75 @@
+name: Housekeeping
+
+on:
+ issues:
+ types: [opened]
+ pull_request_target:
+ types: [opened]
+
+jobs:
+ project:
+ # ignore dependabot PRs
+ if: ${{ github.actor != 'dependabot[bot]' }}
+ name: Add issues and PRs to project and add grooming label
+ uses: celestiaorg/.github/.github/workflows/reusable_housekeeping.yml@v0.1.1
+ secrets: inherit
+ permissions:
+ issues: write
+ pull-requests: write
+ with:
+ run-labels: true
+ labels-to-add: "needs-grooming"
+ run-projects: true
+ project-url: https://github.com/orgs/celestiaorg/projects/32
+
+ auto-add-reviewer:
+ name: Auto add reviewer to PR
+ if: github.event.pull_request
+ uses: celestiaorg/.github/.github/workflows/reusable_housekeeping.yml@v0.1.1
+ secrets: inherit
+ permissions:
+ issues: write
+ pull-requests: write
+ with:
+ run-auto-request-review: true
+
+ auto-add-assignee:
+ # ignore dependabot PRs
+ if: ${{ github.actor != 'dependabot[bot]' }}
+ name: Assign issue and PR to creator
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+ pull-requests: write
+ steps:
+ - name: Set issue url and creator login
+ if: ${{ github.event.issue }}
+ run: |
+ echo "ISSUE=${{ github.event.issue.html_url }}" >> $GITHUB_ENV
+ echo "CREATOR=${{ github.event.issue.user.login }}" >> $GITHUB_ENV
+ - name: Set pull_request url and creator login
+ if: ${{ github.event.pull_request }}
+ # yamllint disable rule:line-length
+ run: |
+ echo "PR=${{ github.event.pull_request.html_url }}" >> $GITHUB_ENV
+ echo "CREATOR=${{ github.event.pull_request.user.login }}" >> $GITHUB_ENV
+ # yamllint enable rule:line-length
+ - name: Assign issue to creator (issue)
+ if: ${{ github.event.issue }}
+ run: gh issue edit ${{ env.ISSUE }} --add-assignee ${{ env.CREATOR }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Assign issue to creator (PR)
+ if: ${{ github.event.pull_request }}
+ run: gh pr edit ${{ env.PR }} --add-assignee ${{ env.CREATOR }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ required-labels:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: mheap/github-action-required-labels@v4
+ with:
+ mode: minimum
+ count: 1
+ labels: "T:enhancement, T:documentation, T:code-hygiene, T:bug, T:adr, T:sdk, T:testing, T:question, T:dependencies, T:spec-and-docs, T:da-integration, T:dev-usability-and-ux" # yamllint disable-line rule:line-length
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
deleted file mode 100644
index f689dfbc359a..000000000000
--- a/.github/workflows/labeler.yml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-name: "Pull Request Labeler"
-on:
- - pull_request_target
-
-jobs:
- pr-labeler:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/labeler@main
- with:
- repo-token: "${{ secrets.GITHUB_TOKEN }}"
- configuration-path: .github/labeler.yml
diff --git a/.github/workflows/publish-canary.yml b/.github/workflows/publish-canary.yml
deleted file mode 100644
index 3d690f424ccf..000000000000
--- a/.github/workflows/publish-canary.yml
+++ /dev/null
@@ -1,587 +0,0 @@
-name: Publish Packages (canary)
-
-on:
- # enable users to manually trigger with workflow_dispatch
- workflow_dispatch:
- inputs:
- customImageName:
- description: 'Custom Docker Image Tag (keep empty for git hash)'
- required: false
- default: '0.0.0-rc-0'
-
-jobs:
- canary-publish:
- name: Publish Packages (canary)
- runs-on: ubuntu-latest
- # map the step outputs to job outputs
- outputs:
- l2geth: ${{ steps.packages.outputs.l2geth }}
- message-relayer: ${{ steps.packages.outputs.message-relayer }}
- fault-detector: ${{ steps.packages.outputs.fault-detector }}
- balance-mon: ${{ steps.packages.outputs.balance-mon }}
- drippie-mon: ${{ steps.packages.outputs.drippie-mon }}
- wd-mon: ${{ steps.packages.outputs.wd-mon }}
- data-transport-layer: ${{ steps.packages.outputs.data-transport-layer }}
- contracts: ${{ steps.packages.outputs.contracts }}
- contracts-bedrock: ${{ steps.packages.outputs.contracts-bedrock }}
- gas-oracle: ${{ steps.packages.outputs.gas-oracle }}
- replica-healthcheck: ${{ steps.packages.outputs.replica-healthcheck }}
- hardhat-node: ${{ steps.packages.outputs.hardhat-node }}
- canary-docker-tag: ${{ steps.docker-image-name.outputs.canary-docker-tag }}
- op-exporter: ${{ steps.packages.outputs.op-exporter }}
- l2geth-exporter: ${{ steps.packages.outputs.l2geth-exporter }}
- batch-submitter-service: ${{ steps.packages.outputs.batch-submitter-service }}
- endpoint-monitor: ${{ steps.packages.outputs.l2geth-exporter }}
-
- steps:
- - name: Check out source code
- uses: actions/checkout@v2
- with:
- # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
- fetch-depth: 0
-
- - name: Setup Node.js 16.x
- uses: actions/setup-node@master
- with:
- node-version: 16.x
-
- - name: Get yarn cache directory path
- id: yarn-cache-dir-path
- run: echo "::set-output name=dir::$(yarn cache dir)"
-
- - uses: actions/cache@v2
- id: yarn-cache
- with:
- path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
-
- - name: Install Dependencies
- run: yarn --frozen-lockfile
-
- - name: Install Foundry
- uses: foundry-rs/foundry-toolchain@v1
- with:
- version: nightly
-
- - name: Build
- run: yarn build
-
- - name: Setup Canary Snapshot
- run: yarn changeset version --snapshot
-
- - name: Publish To NPM
- uses: changesets/action@v1
- id: changesets
- with:
- createGithubReleases: false
- publish: yarn changeset publish --tag canary
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
-
- # Conditional on the release being executed, we unbundle the publishedPackages to specific
- # job outputs
- - name: Get version tags from each published version
- id: packages
- run: |
- node ops/scripts/ci-versions.js ${{ toJSON(steps.changesets.outputs.publishedPackages) }}
-
- - name: Docker Image Name
- id: docker-image-name
- run: |
- if [ ${CUSTOM_IMAGE_NAME} == '' ]
- then
- echo "::set-output name=canary-docker-tag::${GITHUB_SHA::8}"
- else
- echo "::set-output name=canary-docker-tag::prerelease-${CUSTOM_IMAGE_NAME}"
- fi
- env:
- CUSTOM_IMAGE_NAME: ${{ github.event.inputs.customImageName }}
-
- l2geth:
- name: Publish L2Geth Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.l2geth != ''
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Publish L2Geth
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./l2geth/Dockerfile
- push: true
- tags: ethereumoptimism/l2geth:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- gas-oracle:
- name: Publish Gas Oracle ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.gas-oracle != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./gas-oracle/Dockerfile
- push: true
- tags: ethereumoptimism/gas-oracle:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- hardhat-node:
- name: Publish Hardhat Node ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.hardhat-node != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: ./ops/docker/hardhat
- file: ./ops/docker/hardhat/Dockerfile
- push: true
- tags: ethereumoptimism/hardhat-node:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- message-relayer:
- name: Publish Message Relayer Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.message-relayer != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: message-relayer
- push: true
- tags: ethereumoptimism/message-relayer:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- fault-detector:
- name: Publish Fault Detector Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.fault-detector != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: fault-detector
- push: true
- tags: ethereumoptimism/fault-detector:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- balance-mon:
- name: Publish Balance Monitor Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.balance-mon != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: balance-mon
- push: true
- tags: ethereumoptimism/balance-mon:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- drippie-mon:
- name: Publish Drippie Monitor Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.drippie-mon != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: drippie-mon
- push: true
- tags: ethereumoptimism/drippie-mon:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- wd-mon:
- name: Publish Withdrawal Monitor Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.wd-mon != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: wd-mon
- push: true
- tags: ethereumoptimism/wd-mon:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- data-transport-layer:
- name: Publish Data Transport Layer Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.data-transport-layer != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: data-transport-layer
- push: true
- tags: ethereumoptimism/data-transport-layer:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- contracts:
- name: Publish Deployer Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.contracts != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: deployer
- push: true
- tags: ethereumoptimism/deployer:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- contracts-bedrock:
- name: Publish deployer-bedrock Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.contracts-bedrock != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: deployer-bedrock
- push: true
- tags: ethereumoptimism/deployer-bedrock:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- integration_tests:
- name: Publish Integration tests ${{ needs.canary-publish.outputs.integration-tests }}
- needs: canary-publish
- if: needs.canary-publish.outputs.integration-tests != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: integration-tests
- push: true
- tags: ethereumoptimism/integration-tests:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- replica-healthcheck:
- name: Publish Replica Healthcheck Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.replica-healthcheck != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: replica-healthcheck
- push: true
- tags: ethereumoptimism/replica-healthcheck:${{ needs.canary-publish.outputs.canary-docker-tag }}
-
- op-exporter:
- name: Publish op-exporter Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.op-exporter != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set build args
- id: build_args
- run: |
- echo ::set-output name=GITDATE::"$(date +%d-%m-%Y)"
- echo ::set-output name=GITVERSION::$(jq -r .version ./op-exporter/package.json)
- echo ::set-output name=GITCOMMIT::"$GITHUB_SHA"
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./op-exporter/Dockerfile=
- push: true
- tags: ethereumoptimism/op-exporter:${{ needs.canary-publish.outputs.op-exporter }}
- build-args: |
- GITDATE=${{ steps.build_args.outputs.GITDATE }}
- GITCOMMIT=${{ steps.build_args.outputs.GITCOMMIT }}
- GITVERSION=${{ steps.build_args.outputs.GITVERSION }}
-
- l2geth-exporter:
- name: Publish l2geth-exporter Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.l2geth-exporter != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set build args
- id: build_args
- run: |
- echo ::set-output name=GITDATE::"$(date +%d-%m-%Y)"
- echo ::set-output name=GITVERSION::$(jq -r .version ./l2geth-exporter/package.json)
- echo ::set-output name=GITCOMMIT::"$GITHUB_SHA"
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./l2geth-exporter/Dockerfile
- push: true
- tags: ethereumoptimism/l2geth-exporter:${{ needs.canary-publish.outputs.l2geth-exporter }}
- build-args: |
- GITDATE=${{ steps.build_args.outputs.GITDATE }}
- GITCOMMIT=${{ steps.build_args.outputs.GITCOMMIT }}
- GITVERSION=${{ steps.build_args.outputs.GITVERSION }}
-
- batch-submitter-service:
- name: Publish batch-submitter-service Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.batch-submitter-service != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./batch-submitter/Dockerfile
- push: true
- tags: ethereumoptimism/batch-submitter-service:${{ needs.canary-publish.outputs.batch-submitter-service }}
-
- endpoint-monitor:
- name: Publish endpoint-monitor Version ${{ needs.canary-publish.outputs.canary-docker-tag }}
- needs: canary-publish
- if: needs.canary-publish.outputs.endpoint-monitor != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set build args
- id: build_args
- run: |
- echo ::set-output name=GITDATE::"$(date +%d-%m-%Y)"
- echo ::set-output name=GITVERSION::$(jq -r .version ./endpoint-monitor/package.json)
- echo ::set-output name=GITCOMMIT::"$GITHUB_SHA"
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./endpoint-monitor/Dockerfile
- push: true
- tags: ethereumoptimism/endpoint-monitor:${{ needs.canary-publish.outputs.endpoint-monitor }}
- build-args: |
- GITDATE=${{ steps.build_args.outputs.GITDATE }}
- GITCOMMIT=${{ steps.build_args.outputs.GITCOMMIT }}
- GITVERSION=${{ steps.build_args.outputs.GITVERSION }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
deleted file mode 100644
index 4722ce592391..000000000000
--- a/.github/workflows/release.yml
+++ /dev/null
@@ -1,619 +0,0 @@
-name: Release
-
-on:
- push:
- branches:
- - master
-
-jobs:
- release:
- name: Release
- runs-on: ubuntu-latest
- # map the step outputs to job outputs
- outputs:
- l2geth: ${{ steps.packages.outputs.l2geth }}
- message-relayer: ${{ steps.packages.outputs.message-relayer }}
- fault-detector: ${{ steps.packages.outputs.fault-detector }}
- balance-mon: ${{ steps.packages.outputs.drippie-mon }}
- drippie-mon: ${{ steps.packages.outputs.drippie-mon }}
- wd-mon: ${{ steps.packages.outputs.wd-mon }}
- data-transport-layer: ${{ steps.packages.outputs.data-transport-layer }}
- contracts: ${{ steps.packages.outputs.contracts }}
- contracts-bedrock: ${{ steps.packages.outputs.contracts-bedrock }}
- balance-monitor: ${{ steps.packages.outputs.balance-monitor }}
- gas-oracle: ${{ steps.packages.outputs.gas-oracle }}
- replica-healthcheck: ${{ steps.packages.outputs.replica-healthcheck }}
- hardhat-node: ${{ steps.packages.outputs.hardhat-node }}
- op-exporter: ${{ steps.packages.outputs.op-exporter }}
- l2geth-exporter: ${{ steps.packages.outputs.l2geth-exporter }}
- batch-submitter-service: ${{ steps.packages.outputs.batch-submitter-service }}
- foundry: ${{ steps.packages.outputs.foundry }}
- endpoint-monitor: ${{ steps.packages.outputs.endpoint-monitor }}
-
- steps:
- - name: Checkout Repo
- uses: actions/checkout@master
- with:
- # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
- fetch-depth: 0
-
- - name: Setup Node.js 16.x
- uses: actions/setup-node@master
- with:
- node-version: 16.x
-
- - name: Get yarn cache directory path
- id: yarn-cache-dir-path
- run: echo "::set-output name=dir::$(yarn cache dir)"
-
- - uses: actions/cache@v2
- id: yarn-cache
- with:
- path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
- key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
- restore-keys: |
- ${{ runner.os }}-yarn-
-
- - name: Install Dependencies
- run: yarn --frozen-lockfile
-
- - name: Install Foundry
- uses: foundry-rs/foundry-toolchain@v1
- with:
- version: nightly
-
- - name: Publish To NPM or Create Release Pull Request
- uses: changesets/action@v1
- id: changesets
- with:
- createGithubReleases: false
- publish: yarn release
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
-
- # Conditional on the release being executed, we unbundle the publishedPackages to specific
- # job outputs
- - name: Get version tags from each published version
- id: packages
- if: steps.changesets.outputs.published == 'true'
- run: |
- node ops/scripts/ci-versions.js ${{ toJSON(steps.changesets.outputs.publishedPackages) }}
-
- l2geth:
- name: Publish L2Geth Version ${{ needs.release.outputs.l2geth }}
- needs: release
- if: needs.release.outputs.l2geth != ''
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Publish L2Geth
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./l2geth/Dockerfile
- push: true
- tags: ethereumoptimism/l2geth:${{ needs.release.outputs.l2geth }},ethereumoptimism/l2geth:latest
-
- gas-oracle:
- name: Publish Gas Oracle Version ${{ needs.release.outputs.gas-oracle }}
- needs: release
- if: needs.release.outputs.gas-oracle != ''
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Publish Gas Oracle
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./gas-oracle/Dockerfile
- push: true
- tags: ethereumoptimism/gas-oracle:${{ needs.release.outputs.gas-oracle }},ethereumoptimism/gas-oracle:latest
-
- hardhat-node:
- name: Publish Hardhat Node ${{ needs.release.outputs.hardhat-node }}
- needs: release
- if: needs.release.outputs.hardhat-node != ''
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Publish Hardhat Node
- uses: docker/build-push-action@v2
- with:
- context: ./ops/docker/hardhat
- file: ./ops/docker/hardhat/Dockerfile
- push: true
- tags: ethereumoptimism/hardhat-node:${{ needs.release.outputs.hardhat-node }},ethereumoptimism/hardhat-node:latest
-
- foundry:
- name: Publish foundry ${{ needs.release.outputs.foundry }}
- needs: release
- if: needs.release.outputs.foundry != ''
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Publish foundry
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/foundry/Dockerfile
- push: true
- tags: ethereumoptimism/foundry:${{ needs.release.outputs.foundry }},ethereumoptimism/foundry:latest
-
- l2geth-exporter:
- name: Publish l2geth-exporter Version ${{ needs.release.outputs.l2geth-exporter}}
- needs: release
- if: needs.release.outputs.l2geth-exporter != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set build args
- id: build_args
- run: |
- echo ::set-output name=GITDATE::"$(date +%d-%m-%Y)"
- echo ::set-output name=GITVERSION::$(jq -r .version ./l2geth-exporter/package.json)
- echo ::set-output name=GITCOMMIT::"$GITHUB_SHA"
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./l2geth-exporter/Dockerfile
- push: true
- tags: ethereumoptimism/l2geth-exporter:${{ needs.release.outputs.l2geth-exporter }},ethereumoptimism/l2geth-exporter:latest
- build-args: |
- GITDATE=${{ steps.build_args.outputs.GITDATE }}
- GITCOMMIT=${{ steps.build_args.outputs.GITCOMMIT }}
- GITVERSION=${{ steps.build_args.outputs.GITVERSION }}
-
- op-exporter:
- name: Publish op-exporter Version ${{ needs.release.outputs.op-exporter}}
- needs: release
- if: needs.release.outputs.op-exporter != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set build args
- id: build_args
- run: |
- echo ::set-output name=GITDATE::"$(date +%d-%m-%Y)"
- echo ::set-output name=GITVERSION::$(jq -r .version ./op-exporter/package.json)
- echo ::set-output name=GITCOMMIT::"$GITHUB_SHA"
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./op-exporter/Dockerfile
- push: true
- tags: ethereumoptimism/op-exporter:${{ needs.release.outputs.op-exporter }},ethereumoptimism/op-exporter:latest
- build-args: |
- GITDATE=${{ steps.build_args.outputs.GITDATE }}
- GITCOMMIT=${{ steps.build_args.outputs.GITCOMMIT }}
- GITVERSION=${{ steps.build_args.outputs.GITVERSION }}
-
- message-relayer:
- name: Publish Message Relayer Version ${{ needs.release.outputs.message-relayer }}
- needs: release
- if: needs.release.outputs.message-relayer != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: message-relayer
- push: true
- tags: ethereumoptimism/message-relayer:${{ needs.release.outputs.message-relayer }},ethereumoptimism/message-relayer:latest
-
- fault-detector:
- name: Publish Fault Detector Version ${{ needs.release.outputs.fault-detector }}
- needs: release
- if: needs.release.outputs.fault-detector != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: fault-detector
- push: true
- tags: ethereumoptimism/fault-detector:${{ needs.release.outputs.fault-detector }},ethereumoptimism/fault-detector:latest
-
- wd-mon:
- name: Publish Withdrawal Monitor Version ${{ needs.release.outputs.wd-mon }}
- needs: release
- if: needs.release.outputs.wd-mon != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: wd-mon
- push: true
- tags: ethereumoptimism/wd-mon:${{ needs.release.outputs.wd-mon }},ethereumoptimism/wd-mon:latest
-
- balance-mon:
- name: Publish Balance Monitor Version ${{ needs.release.outputs.balance-mon }}
- needs: release
- if: needs.release.outputs.balance-mon != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: balance-mon
- push: true
- tags: ethereumoptimism/balance-mon:${{ needs.release.outputs.balance-mon }},ethereumoptimism/balance-mon:latest
-
- drippie-mon:
- name: Publish Drippie Monitor Version ${{ needs.release.outputs.drippie-mon }}
- needs: release
- if: needs.release.outputs.drippie-mon != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: drippie-mon
- push: true
- tags: ethereumoptimism/drippie-mon:${{ needs.release.outputs.drippie-mon }},ethereumoptimism/drippie-mon:latest
-
- data-transport-layer:
- name: Publish Data Transport Layer Version ${{ needs.release.outputs.data-transport-layer }}
- needs: release
- if: needs.release.outputs.data-transport-layer != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: data-transport-layer
- push: true
- tags: ethereumoptimism/data-transport-layer:${{ needs.release.outputs.data-transport-layer }},ethereumoptimism/data-transport-layer:latest
-
- contracts:
- name: Publish Deployer Version ${{ needs.release.outputs.contracts }}
- needs: release
- if: needs.release.outputs.contracts != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: deployer
- push: true
- tags: ethereumoptimism/deployer:${{ needs.release.outputs.contracts }},ethereumoptimism/deployer:latest
-
- contracts-bedrock:
- name: Publish deployer-bedrock Version ${{ needs.release.outputs.contracts-bedrock }}
- needs: release
- if: needs.release.outputs.contracts != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: deployer-bedrock
- push: true
- tags: ethereumoptimism/deployer-bedrock:${{ needs.release.outputs.contracts-bedrock }},ethereumoptimism/deployer-bedrock:latest
-
- balance-monitor:
- name: Publish balance-monitor Version ${{ needs.release.outputs.balance-monitor }}
- needs: release
- if: needs.release.outputs.balance-monitor != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: balance-monitor
- push: true
- tags: ethereumoptimism/balance-monitor:${{ needs.release.outputs.balance-monitor }},ethereumoptimism/balance-monitor:latest
-
- integration_tests:
- name: Publish Integration tests ${{ needs.release.outputs.integration-tests }}
- needs: release
- if: needs.release.outputs.integration-tests != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: integration-tests
- push: true
- tags: ethereumoptimism/integration-tests:${{ needs.release.outputs.integration-tests }},ethereumoptimism/integration-tests:latest
-
- replica-healthcheck:
- name: Publish Replica Healthcheck Version ${{ needs.release.outputs.replica-healthcheck }}
- needs: release
- if: needs.release.outputs.replica-healthcheck != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./ops/docker/Dockerfile.packages
- target: replica-healthcheck
- push: true
- tags: ethereumoptimism/replica-healthcheck:${{ needs.release.outputs.replica-healthcheck }},ethereumoptimism/replica-healthcheck:latest
-
- batch-submitter-service:
- name: Publish batch-submitter-service Version ${{ needs.release.outputs.batch-submitter-service }}
- needs: release
- if: needs.release.outputs.batch-submitter-service != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./batch-submitter/Dockerfile
- push: true
- tags: ethereumoptimism/batch-submitter-service:${{ needs.release.outputs.batch-submitter-service }},ethereumoptimism/batch-submitter-service:latest
-
- endpoint-monitor:
- name: Publish endpoint-monitor Version ${{ needs.release.outputs.endpoint-monitor}}
- needs: release
- if: needs.release.outputs.endpoint-monitor != ''
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to Docker Hub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_USERNAME }}
- password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN_SECRET }}
-
- - name: Set build args
- id: build_args
- run: |
- echo ::set-output name=GITDATE::"$(date +%d-%m-%Y)"
- echo ::set-output name=GITVERSION::$(jq -r .version ./endpoint-monitor/package.json)
- echo ::set-output name=GITCOMMIT::"$GITHUB_SHA"
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: .
- file: ./endpoint-monitor/Dockerfile
- push: true
- tags: ethereumoptimism/endpoint-monitor:${{ needs.release.outputs.endpoint-monitor }},ethereumoptimism/endpoint-monitor:latest
- build-args: |
- GITDATE=${{ steps.build_args.outputs.GITDATE }}
- GITCOMMIT=${{ steps.build_args.outputs.GITCOMMIT }}
- GITVERSION=${{ steps.build_args.outputs.GITVERSION }}
diff --git a/.github/workflows/tag-service.yml b/.github/workflows/tag-service.yml
deleted file mode 100644
index d7a24fb1d099..000000000000
--- a/.github/workflows/tag-service.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-name: Tag Service
-
-on:
- workflow_dispatch:
- inputs:
- bump:
- description: 'How much to bump the version by'
- required: true
- type: choice
- options:
- - major
- - minor
- - patch
- - prerelease
- - finalize-prerelease
- service:
- description: 'Which service to release'
- required: true
- type: choice
- options:
- - op-node
- - op-batcher
- - op-proposer
- - proxyd
- - indexer
- prerelease:
- description: Increment major/minor/patch as prerelease?
- required: false
- type: boolean
- default: false
-
-jobs:
- release:
- runs-on: ubuntu-latest
- environment: op-stack-production
-
- steps:
- - uses: actions/checkout@v2
- - name: Fetch tags
- run: git fetch --tags origin
- - name: Setup Python 3.10
- uses: actions/setup-python@v4
- with:
- python-version: "3.10"
- - name: Install deps
- run: pip install -r requirements.txt
- working-directory: ops/tag-service
- - run: ops/tag-service/tag-service.py --bump="$BUMP" --service="$SERVICE"
- env:
- INPUT_GITHUB_TOKEN: ${{ github.token }}
- BUMP: ${{ github.event.inputs.bump }}
- SERVICE: ${{ github.event.inputs.service }}
- if: ${{ github.event.inputs.prerelease == 'false' }}
- - run: ops/tag-service/tag-service.py --bump="$BUMP" --service="$SERVICE" --pre-release
- env:
- INPUT_GITHUB_TOKEN: ${{ github.token }}
- BUMP: ${{ github.event.inputs.bump }}
- SERVICE: ${{ github.event.inputs.service }}
- if: ${{ github.event.inputs.prerelease == 'true' }}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 000000000000..507e7b761b73
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,28 @@
+name: Tests
+on:
+ workflow_call:
+ inputs:
+ GO_VERSION:
+ description: 'Go version to use'
+ type: string
+ required: true
+
+jobs:
+ integration_test:
+ name: Run Integration Tests
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: set up go
+ uses: actions/setup-go@v4
+ with:
+ go-version: ${{ inputs.GO_VERSION }}
+
+ - name: Integration Tests
+ run: |
+ cd op-e2e
+ docker run --platform linux/amd64 -p 26650:26657 -p 26659:26659 ghcr.io/rollkit/local-celestia-devnet:v0.9.5 & sleep 15
+ make test
+ docker stop $(docker ps -q --filter ancestor=ghcr.io/rollkit/local-celestia-devnet:v0.9.5)
+ cd ..
diff --git a/Makefile b/Makefile
index fb6ba7049db5..c9ddb9805e53 100644
--- a/Makefile
+++ b/Makefile
@@ -65,26 +65,46 @@ devnet-up:
@bash ./ops-bedrock/devnet-up.sh
.PHONY: devnet-up
+testnet-up:
+ @bash ./ops-bedrock/testnet-up.sh
+.PHONY: testnet-up
+
devnet-up-deploy:
PYTHONPATH=./bedrock-devnet python3 ./bedrock-devnet/main.py --monorepo-dir=.
.PHONY: devnet-up-deploy
devnet-down:
- @(cd ./ops-bedrock && GENESIS_TIMESTAMP=$(shell date +%s) docker-compose stop)
+ @(cd ./ops-bedrock && GENESIS_TIMESTAMP=$(shell date +%s) docker-compose -f docker-compose-devnet.yml stop)
.PHONY: devnet-down
+testnet-down:
+ @(cd ./ops-bedrock && GENESIS_TIMESTAMP=$(shell date +%s) docker-compose -f docker-compose-testnet.yml stop)
+.PHONY: testnet-down
+
devnet-clean:
rm -rf ./packages/contracts-bedrock/deployments/devnetL1
rm -rf ./.devnet
- cd ./ops-bedrock && docker-compose down
+ cd ./ops-bedrock && docker-compose -f docker-compose-devnet.yml down
docker image ls 'ops-bedrock*' --format='{{.Repository}}' | xargs -r docker rmi
docker volume ls --filter name=ops-bedrock --format='{{.Name}}' | xargs -r docker volume rm
.PHONY: devnet-clean
+testnet-clean:
+ rm -rf ./packages/contracts-bedrock/deployments/devnetL1
+ rm -rf ./.devnet
+ cd ./ops-bedrock && docker-compose -f docker-compose-testnet.yml down
+ docker image ls 'ops-bedrock*' --format='{{.Repository}}' | xargs -r docker rmi
+ docker volume ls --filter name=ops-bedrock --format='{{.Name}}' | xargs -r docker volume rm
+.PHONY: testnet-clean
+
devnet-logs:
- @(cd ./ops-bedrock && docker-compose logs -f)
+ @(cd ./ops-bedrock && docker-compose -f docker-compose-devnet.yml logs -f)
.PHONY: devnet-logs
+testnet-logs:
+ @(cd ./ops-bedrock && docker-compose -f docker-compose-testnet.yml logs -f)
+ .PHONY: testnet-logs
+
test-unit:
make -C ./op-node test
make -C ./op-proposer test
diff --git a/README.md b/README.md
index 767fce6e619a..f80278262734 100644
--- a/README.md
+++ b/README.md
@@ -3,50 +3,96 @@
+