diff --git a/packages/contracts/.github/workflows/integration.yml b/packages/contracts/.github/workflows/integration.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a57ab3a061e471c3e0a6e2d1f86716f915c2f2f1
--- /dev/null
+++ b/packages/contracts/.github/workflows/integration.yml
@@ -0,0 +1,39 @@
+name: Setup & Run Integration Test Suite
+
+on:
+  push:
+    branches:
+      - master
+  pull_request:
+    branches:
+      - master
+
+jobs:
+  build:
+    name: Setup & Run Integration Tests
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - uses: webfactory/ssh-agent@v0.4.1
+        with:
+          ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY_READ }}
+
+      - name: Build
+        run: |
+          git clone https://github.com/ethereum-optimism/optimism-integration.git \
+              $HOME/optimism-integration \
+              --recurse-submodules
+          cd $HOME/optimism-integration
+          if [ -z $GITHUB_HEAD_REF ]; then
+              GITHUB_HEAD_REF=${GITHUB_REF##*/}
+          fi
+          GIT_COMMIT=$(git rev-parse HEAD | head -c 8)
+          echo "optimism-integration $GIT_COMMIT"
+          ./docker/build.sh -s deployer -b $GITHUB_HEAD_REF
+
+      - name: Test
+        run: |
+          cd $HOME/optimism-integration
+          DEPLOYER_TAG=$GITHUB_HEAD_REF ./test.sh