diff --git a/.github/workflows/auto-approve.yml b/.github/workflows/auto-approve.yml new file mode 100644 index 000000000000..ba1cf70adb67 --- /dev/null +++ b/.github/workflows/auto-approve.yml @@ -0,0 +1,16 @@ +name: bot + +on: + pull_request: + types: [labeled] + +jobs: + approve: + if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)" + runs-on: ubuntu-latest + steps: + - uses: jacogr/action-approve@795afd1dd096a2071d7ec98740661af4e853b7da + with: + authors: jacogr + labels: -auto + token: ${{ secrets.GH_PAT_BOT }} diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml new file mode 100644 index 000000000000..dd61ab9903b5 --- /dev/null +++ b/.github/workflows/auto-merge.yml @@ -0,0 +1,16 @@ +name: bot + +on: + pull_request: + types: [labeled] + +jobs: + merge: + runs-on: ubuntu-latest + steps: + - uses: jacogr/action-merge@d2d64b4545acd93b0a9575177d3d215ae3f92029 + with: + checks: pr (build:code),pr (build:i18n),pr (build:electron),pr (lint),pr (test) + labels: -auto + strategy: squash + token: ${{ secrets.GH_PAT_BOT }} diff --git a/.github/workflows/chain-endpoints.yml b/.github/workflows/chain-endpoints.yml new file mode 100644 index 000000000000..bfbfa93167f1 --- /dev/null +++ b/.github/workflows/chain-endpoints.yml @@ -0,0 +1,32 @@ +name: Chain endpoints +on: + schedule: + # twice daily (mornings/afternoons, the latter being busy) + # - cron: '50 0/12 * * *' + # once daily (early mornings, 02:50 GMT, generally not busy) + - cron: '50 2 * * *' + +jobs: + endpoints: + if: github.repository == 'polkadot-js/apps' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 'lts/*' + - name: check + env: + CI_LOG: 123 + run: | + yarn install --immutable | grep -v 'YN0013' + yarn ci:chainEndpoints + + - name: issue + if: ${{ failure() }} + uses: JasonEtco/create-an-issue@e27dddc79c92bc6e4562f268fffa5ed752639abd + env: + GITHUB_TOKEN: ${{ secrets.GH_PAT_BOT }} + with: + filename: .github/chain-endpoints.md + update_existing: true diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml new file mode 100644 index 000000000000..5f7400fabfbf --- /dev/null +++ b/.github/workflows/lock.yml @@ -0,0 +1,23 @@ +name: 'Lock Threads' + +on: + schedule: + - cron: '15 2/3 * * *' + +jobs: + lock: + runs-on: ubuntu-latest + steps: + - uses: dessant/lock-threads@c1b35aecc5cdb1a34539d14196df55838bb2f836 + with: + github-token: ${{ secrets.GH_PAT_BOT }} + issue-inactive-days: '7' + issue-comment: > + This thread has been automatically locked since there has not been + any recent activity after it was closed. Please open a new issue + if you think you have a related problem or query. + pr-inactive-days: '2' + pr-comment: > + This pull request has been automatically locked since there + has not been any recent activity after it was closed. + Please open a new issue for related bugs. diff --git a/.github/workflows/push-master.yml b/.github/workflows/push-master.yml new file mode 100644 index 000000000000..bbd3ae9cd03a --- /dev/null +++ b/.github/workflows/push-master.yml @@ -0,0 +1,95 @@ +name: Master +on: + push: + branches: + - master + +jobs: + # publish to gh-pages (& IPFS when a release is detected) + www: + if: "! startsWith(github.event.head_commit.message, '[CI Skip]')" + strategy: + matrix: + step: ['build:release:www'] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + token: ${{ secrets.GH_PAT_BOT }} + - uses: actions/setup-node@v3 + with: + node-version: 'lts/*' + - name: ${{ matrix.step }} + env: + CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} + CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }} + CRUST_SEEDS: ${{ secrets.CRUST_SEEDS }} + GH_PAGES_SRC: packages/apps/build + GH_PAT: ${{ secrets.GH_PAT_BOT }} + GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT_BOT }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + PINATA_API_KEY: ${{ secrets.PINATA_API_KEY }} + PINATA_SECRET_KEY: ${{ secrets.PINATA_SECRET_KEY }} + run: | + yarn install --immutable + yarn ${{ matrix.step }} + + # only run on "CI skip", i.e. when the actual version has been bumped to release/stable + docker: + if: "startsWith(github.event.head_commit.message, '[CI Skip] release/stable')" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 'lts/*' + - name: docker + env: + DOCKER_PASS: ${{ secrets.DOCKER_PASS }} + run: | + ./docker/build.sh + + # only run on "CI skip", i.e. when the actual version has been bumped to release/stable + electron: + if: "startsWith(github.event.head_commit.message, '[CI Skip] release/stable')" + strategy: + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + with: + token: ${{ secrets.GH_PAT_BOT }} + - uses: actions/setup-node@v3 + with: + node-version: 'lts/*' + - name: Prepare for app notarization (macOS) + if: startsWith(matrix.os, 'macos') + # Import Apple API key for app notarization on macOS + run: | + mkdir -p ~/private_keys/ + echo '${{ secrets.API_KEY }}' > ~/private_keys/AuthKey_${{ secrets.API_KEY_ID }}.p8 + - name: Build/release Electron app + uses: samuelmeuli/action-electron-builder@v1 + with: + # Base64-encoded code signing certificate for macOS + mac_certs: ${{ secrets.MAC_CERTS }} + # Password for decrypting `mac_certs` + mac_certs_password: ${{ secrets.MAC_CERTS_PASSWORD }} + # Base64-encoded code signing certificate for Windows + windows_certs: ${{ secrets.WINDOWS_CERTS }} + # Password for decrypting `windows_certs` + windows_certs_password: ${{ secrets.WINDOWS_CERTS_PASSWORD }} + # GitHub token, automatically provided to the action + # (No need to define this secret in the repo settings) + github_token: ${{ secrets.GITHUB_TOKEN }} + args: '--project packages/apps-electron' + build_script_name: build:release:electron + # If the commit is tagged with a version (e.g. "v1.0.0"), + # release the app after building + release: ${{ startsWith(github.ref, 'refs/tags/v') }} + env: + # macOS notarization API key + API_KEY_ID: ${{ secrets.API_KEY_ID }} + API_KEY_ISSUER_ID: ${{ secrets.API_KEY_ISSUER_ID }} diff --git a/.github/workflows/sync-upstream.yml b/.github/workflows/sync-upstream.yml new file mode 100644 index 000000000000..ef239677b797 --- /dev/null +++ b/.github/workflows/sync-upstream.yml @@ -0,0 +1,53 @@ +name: 'Upstream Sync' + +on: + pull_request: + + schedule: + - cron: '0 7 * * 1' + # scheduled at 07:00 every Monday + + workflow_dispatch: # click the button on Github repo! + inputs: + sync_test_mode: # Adds a boolean option that appears during manual workflow run for easy test mode config + description: 'Fork Sync Test Mode' + type: boolean + default: false + +jobs: + sync_latest_from_upstream: + runs-on: ubuntu-latest + name: Sync latest commits from upstream repo + + steps: + - name: Checkout target repo + uses: actions/checkout@v3 + with: + # optional: set the branch to checkout, + ref: upstream + token: ${{ secrets.GITHUB_TOKEN }} + # persist-credentials: false + + - name: Sync upstream changes + id: sync + uses: aormsby/Fork-Sync-With-Upstream-action@v3.4.1 + with: + target_sync_branch: upstream + # target_repo_token: ${{ secrets.GITHUB_TOKEN }} + upstream_sync_branch: master + upstream_sync_repo: polkadot-js/apps + + # Set test_mode true during manual dispatch to run tests instead of the true action!! + test_mode: ${{ inputs.sync_test_mode }} + + # Display a sample message based on the sync output var 'has_new_commits' + - name: New commits found + if: steps.sync.outputs.has_new_commits == 'true' + run: echo "New commits were found to sync." + + - name: No new commits + if: steps.sync.outputs.has_new_commits == 'false' + run: echo "There were no new commits." + + - name: Show value of 'has_new_commits' + run: echo ${{ steps.sync.outputs.has_new_commits }}