From 572ed21854f2d5a1a6ecd5a8644c7ed5dacdff9e Mon Sep 17 00:00:00 2001 From: Valdis Rigdon Date: Thu, 14 Dec 2023 14:27:25 -0500 Subject: [PATCH] feat(gitlab): use forked_from_project for Merge Requests target project Appian specific patch to always use the upstream (forked_from_project) when dealing with Merge Requests or Issues. This ensures that Renovate follows the standard development workflow where branches are created against the "dev" fork and then Merge Requests are opened against the forked (or "prod") fork. In addition, we want the Dependency Dashboard created against the "prod" fork, so any calls to the Issues API goes to the "prod" fork. --- .github/workflows/build.yml | 1217 +++++++++-------- .releaserc.json | 7 +- .../gitlab/__snapshots__/index.spec.ts.snap | 2 + lib/modules/platform/gitlab/index.ts | 66 +- lib/modules/platform/gitlab/types.ts | 4 +- package.json | 2 +- tools/docker/bake.hcl | 2 +- tools/publish-release.ts | 8 +- 8 files changed, 660 insertions(+), 648 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a6bd0340172e6d..3497a05a8eeeb7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,614 +4,615 @@ on: push: branches: - main - - pull_request: - types: - - opened - - synchronize - - reopened - - ready_for_review - - merge_group: - - workflow_dispatch: - inputs: - dryRun: - description: 'Dry-Run' - default: 'true' - required: false - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.event.number || github.ref }} - cancel-in-progress: ${{ github.ref_name != 'main' }} - -env: - DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} - NODE_VERSION: 18 - DRY_RUN: true - TEST_LEGACY_DECRYPTION: true - SPARSE_CHECKOUT: |- - .github/actions/ - data/ - tools/ - package.json - pnpm-lock.yaml + - gitlab-forked-from-project + + # pull_request: + # types: + # - opened + # - synchronize + # - reopened + # - ready_for_review + + # merge_group: + + # workflow_dispatch: + # inputs: + # dryRun: + # description: 'Dry-Run' + # default: 'true' + # required: false + + # permissions: + # contents: read + + # concurrency: + # group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + # cancel-in-progress: ${{ github.ref_name != 'main' }} + + # env: + # DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} + # NODE_VERSION: 18 + # DRY_RUN: true + # TEST_LEGACY_DECRYPTION: true + # SPARSE_CHECKOUT: |- + # .github/actions/ + # data/ + # tools/ + # package.json + # pnpm-lock.yaml jobs: - setup: - runs-on: ubuntu-latest - - outputs: - os-matrix: ${{ steps.os-matrix.outputs.os-matrix }} - os-matrix-is-full: ${{ steps.os-matrix-is-full.outputs.os-matrix-is-full }} - os-matrix-prefetch: ${{ steps.os-matrix-prefetch.outputs.matrix }} - test-shard-matrix: ${{ steps.schedule-test-shards.outputs.test-shard-matrix }} - test-matrix-empty: ${{ steps.schedule-test-shards.outputs.test-matrix-empty }} - - steps: - - name: Calculate `os-matrix-is-full` output - id: os-matrix-is-full - env: - IS_FULL: >- - ${{ - ( - github.event_name != 'pull_request' || - contains(github.event.pull_request.labels.*.name, 'ci:fulltest') - ) && 'true' || '' - }} - run: | - echo 'OS_MATRIX_IS_FULL=${{ env.IS_FULL }}' >> "$GITHUB_ENV" - echo 'os-matrix-is-full=${{ env.IS_FULL }}' >> "$GITHUB_OUTPUT" - - - name: Calculate `os-matrix` output - id: os-matrix - env: - OS_ALL: '["ubuntu-latest", "macos-latest", "windows-latest"]' - OS_LINUX_ONLY: '["ubuntu-latest"]' - run: | - echo 'os-matrix=${{ - env.OS_MATRIX_IS_FULL && env.OS_ALL || env.OS_LINUX_ONLY - }}' >> "$GITHUB_OUTPUT" - - - name: Detect changed files - if: ${{ github.event_name == 'pull_request' }} - id: changed-files - env: - GH_TOKEN: ${{ github.token }} - GH_REPO: ${{ github.event.repository.full_name }} - PR_URL: >- - https://api.github.com/repos/{owner}/{repo}/compare/${{ - github.event.pull_request.base.sha - }}...${{ - github.event.pull_request.head.sha - }} - JQ_FILTER: >- - "changed-files=" + ([.files[].filename] | tostring) - run: gh api ${{ env.PR_URL }} | jq -rc '${{ env.JQ_FILTER }}' >> "$GITHUB_OUTPUT" - - - name: Checkout code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - filter: blob:none # we don't need all blobs - sparse-checkout: ${{ env.SPARSE_CHECKOUT }} - show-progress: false - - - name: Calculate matrix for `node_modules` prefetch - uses: ./.github/actions/calculate-prefetch-matrix - id: os-matrix-prefetch - with: - repo: ${{ github.event.repository.full_name }} - token: ${{ github.token }} - node-version: ${{ env.NODE_VERSION }} - - - name: Prefetch modules for `ubuntu-latest` - id: setup-node - uses: ./.github/actions/setup-node - with: - node-version: ${{ env.NODE_VERSION }} - os: ${{ runner.os }} - save-cache: true - - - name: Schedule test shards - id: schedule-test-shards - env: - ALL_PLATFORMS: ${{ env.OS_MATRIX_IS_FULL }} - FILTER_SHARDS: ${{ github.event.pull_request.draft && 'true' || '' }} - CHANGED_FILES: ${{ steps.changed-files.outputs.changed-files }} - run: | - echo "$(pnpm -s schedule-test-shards)" >> "$GITHUB_OUTPUT" - - prefetch: - needs: [setup] - - # We can't check `needs.setup.outputs.os-matrix-is-full` here, - # as it will lead to further complications that aren't solvable - # with current GitHub Actions feature set. - # - # Although this job sometimes may act as short-lived `no-op`, - # it's actually the best option available. - # - # However, in draft mode we can skip this step. - if: | - !(github.event.pull_request.draft == true && - needs.setup.outputs.test-matrix-empty == 'true') - - strategy: - matrix: - os: ${{ fromJSON(needs.setup.outputs.os-matrix-prefetch) }} - node-version: [18] - - runs-on: ${{ matrix.os }} - - timeout-minutes: 10 - - steps: - - name: Checkout code - if: needs.setup.outputs.os-matrix-is-full && runner.os != 'Linux' - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - filter: blob:none # we don't need all blobs - sparse-checkout: ${{ env.SPARSE_CHECKOUT }} - show-progress: false - - - name: Setup Node.js - if: needs.setup.outputs.os-matrix-is-full && runner.os != 'Linux' - uses: ./.github/actions/setup-node - with: - node-version: ${{ env.NODE_VERSION }} - os: ${{ runner.os }} - save-cache: true - - lint-eslint: - needs: [setup] - runs-on: ubuntu-latest - timeout-minutes: 15 - - permissions: - actions: write - - steps: - - name: Checkout code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - show-progress: false - - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - node-version: ${{ env.NODE_VERSION }} - os: ${{ runner.os }} - - - name: Restore eslint cache - uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: .cache/eslint - key: eslint-main-cache - - - name: Lint - run: pnpm eslint-ci - - - name: Remove cache - if: github.event_name == 'push' - env: - GH_TOKEN: ${{ github.token }} - GH_REPO: ${{ github.event.repository.full_name }} - run: | - gh api --method DELETE /repos/{owner}/{repo}/actions/caches?key=eslint-main-cache || - echo "Cache not found" - - - name: Save eslint cache - if: github.event_name == 'push' - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: .cache/eslint - key: eslint-main-cache - - lint-prettier: - needs: [setup] - runs-on: ubuntu-latest - timeout-minutes: 7 - - permissions: - actions: write - - steps: - - name: Checkout code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - show-progress: false - - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - node-version: ${{ env.NODE_VERSION }} - os: ${{ runner.os }} - - - name: Restore prettier cache - uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: .cache/prettier - key: prettier-main-cache - - - name: Lint - run: pnpm prettier --cache-location .cache/prettier - - - name: Remove cache - if: github.event_name == 'push' - env: - GH_TOKEN: ${{ github.token }} - GH_REPO: ${{ github.event.repository.full_name }} - run: | - gh api --method DELETE /repos/{owner}/{repo}/actions/caches?key=prettier-main-cache || - echo "Cache not found" - - - name: Save prettier cache - if: github.event_name == 'push' - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: .cache/prettier - key: prettier-main-cache - - lint-docs: - needs: [setup] - runs-on: ubuntu-latest - timeout-minutes: 7 - - steps: - - name: Checkout code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - show-progress: false - - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - node-version: ${{ env.NODE_VERSION }} - os: ${{ runner.os }} - - - name: Lint markdown - uses: DavidAnson/markdownlint-cli2-action@b4c9feab76d8025d1e83c653fa3990936df0e6c8 # v16.0.0 - - - name: Lint fenced code blocks - run: pnpm doc-fence-check - - - name: Lint documentation - run: pnpm lint-documentation - - - name: Markdown lint - run: pnpm markdown-lint - - lint-other: - needs: [setup] - runs-on: ubuntu-latest - timeout-minutes: 7 - - steps: - - name: Checkout code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - show-progress: false - - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - node-version: ${{ env.NODE_VERSION }} - os: ${{ runner.os }} - - - name: Type check - run: pnpm type-check - - - name: Lint project file structure - run: pnpm ls-lint - - - name: Check git version - run: pnpm git-check - - - name: Test schema - run: pnpm test-schema - - test: - needs: [setup, prefetch] - - if: | - !(github.event.pull_request.draft == true && - needs.setup.outputs.test-matrix-empty == 'true') - - name: ${{ matrix.name }} - - runs-on: ${{ matrix.os }} - timeout-minutes: ${{ matrix.runner-timeout-minutes }} - - strategy: - matrix: - include: ${{ fromJSON(needs.setup.outputs.test-shard-matrix) }} - - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - show-progress: false - - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - node-version: ${{ env.NODE_VERSION }} - os: ${{ runner.os }} - - - name: Cache jest - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: .cache/jest - key: | - jest-cache-${{ - runner.os - }}-${{ - env.NODE_VERSION - }}-${{ - hashFiles('pnpm-lock.yaml') - }}-${{ - matrix.cache-key - }} - - - name: Unit tests - shell: bash - run: | - for shard in ${{ matrix.shards }}; - do - TEST_SHARD="$shard" pnpm jest \ - --ci \ - --test-timeout ${{ matrix.test-timeout-milliseconds }} \ - --coverage ${{ matrix.coverage }} - done - - - name: Move coverage files - if: (success() || failure()) && github.event.pull_request.draft != true && matrix.coverage - run: | - mkdir -p ./coverage/lcov - mkdir -p ./coverage/json - for shard in ${{ matrix.shards }}; - do - mv ./coverage/shard/$shard/lcov.info ./coverage/lcov/$shard.lcov - mv ./coverage/shard/$shard/coverage-final.json ./coverage/json/$shard.json - done - - - name: Save coverage artifacts - if: (success() || failure()) && github.event.pull_request.draft != true && matrix.coverage - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: ${{ matrix.upload-artifact-name }} - path: | - ./coverage/lcov - ./coverage/json - - codecov: - needs: [test] - runs-on: ubuntu-latest - timeout-minutes: 3 - if: (success() || failure()) && github.event_name != 'merge_group' && github.event.pull_request.draft != true - steps: - - name: Checkout code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - filter: blob:none # we don't need all blobs - show-progress: false - - - name: Download coverage reports - uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 - with: - pattern: coverage-* - path: coverage - merge-multiple: true - - - name: Codecov - uses: codecov/codecov-action@84508663e988701840491b86de86b666e8a86bed # v4.3.0 - with: - token: ${{ secrets.CODECOV_TOKEN }} - directory: coverage/lcov - fail_ci_if_error: github.event_name != 'pull_request' - verbose: true - - coverage-threshold: - needs: - - test - runs-on: ubuntu-latest - timeout-minutes: 3 - if: (success() || failure()) && github.event.pull_request.draft != true - steps: - - name: Checkout code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - filter: blob:none # we don't need all blobs - sparse-checkout: ${{ env.SPARSE_CHECKOUT }} - show-progress: false - - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - node-version: ${{ env.NODE_VERSION }} - os: ${{ runner.os }} - - - name: Download coverage reports - uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 - with: - pattern: coverage-* - path: coverage - merge-multiple: true - - - name: Merge coverage reports - run: pnpm nyc merge ./coverage/json ./coverage/nyc/coverage.json - - - name: Report coverage - run: pnpm nyc report -t ./coverage/nyc --skip-full -r text -r text-summary - - - name: Check coverage threshold - run: | - pnpm nyc check-coverage -t ./coverage/nyc \ - --branches 100 \ - --functions 100 \ - --lines 100 \ - --statements 100 - - # Catch-all required check for test matrix and coverage - test-success: - needs: - - setup - - test - - codecov - - coverage-threshold - runs-on: ubuntu-latest - timeout-minutes: 1 - if: always() - steps: - - name: Fail for failed or cancelled tests - if: | - needs.test.result == 'failure' || - needs.test.result == 'cancelled' - run: exit 1 - - - name: Fail for skipped tests when PR is ready for review - if: | - github.event_name == 'pull_request' && - github.event.pull_request.draft != true && - needs.test.result == 'skipped' - run: exit 1 - - - name: Fail for failed or cancelled codecov - if: | - needs.codecov.result == 'failure' || - needs.codecov.result == 'cancelled' - run: exit 1 - - - name: Fail for skipped codecov when PR is ready for review - if: | - github.event_name == 'pull_request' && - github.event.pull_request.draft != true && - needs.codecov.result == 'skipped' - run: exit 1 - - - name: Fail for failed or cancelled coverage-threshold - if: | - needs.coverage-threshold.result == 'failure' || - needs.coverage-threshold.result == 'cancelled' - run: exit 1 - - - name: Fail for skipped coverage-threshold when PR is ready for review - if: | - github.event_name == 'pull_request' && - github.event.pull_request.draft != true && - needs.coverage-threshold.result == 'skipped' - run: exit 1 - - build: - needs: setup - runs-on: ubuntu-latest - timeout-minutes: 5 - if: github.event.pull_request.draft != true - steps: - - name: Checkout code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - show-progress: false - - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - node-version: ${{ env.NODE_VERSION }} - os: ${{ runner.os }} - - - name: Build - run: pnpm build - - - name: Build docker - run: pnpm build:docker build --tries=3 - env: - LOG_LEVEL: debug - - - name: Pack - run: pnpm test-e2e:pack - - - name: Upload - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: renovate-package - path: renovate-0.0.0-semantic-release.tgz - - build-docs: - needs: [lint-docs] - runs-on: ubuntu-latest - timeout-minutes: 5 - if: github.event.pull_request.draft != true - steps: - - name: Checkout code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - show-progress: false - - - name: Setup Node.js - uses: ./.github/actions/setup-node - with: - node-version: ${{ env.NODE_VERSION }} - os: ${{ runner.os }} - - - name: Build - run: pnpm build:docs - - - name: Upload - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: docs - path: tmp/docs/ - - test-e2e: - needs: [build] - runs-on: 'ubuntu-latest' - timeout-minutes: 7 - - if: github.event.pull_request.draft != true - - steps: - - name: Checkout code - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - show-progress: false - - - name: Setup pnpm - uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3.0.0 - with: - standalone: true - - - name: Setup Node.js - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 - with: - node-version: ${{ env.NODE_VERSION }} - - - name: Download package - uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 - with: - name: renovate-package - - - name: Install dependencies - run: pnpm test-e2e:install - - - name: E2E Test - run: pnpm test-e2e:run + # setup: + # runs-on: ubuntu-latest + + # outputs: + # os-matrix: ${{ steps.os-matrix.outputs.os-matrix }} + # os-matrix-is-full: ${{ steps.os-matrix-is-full.outputs.os-matrix-is-full }} + # os-matrix-prefetch: ${{ steps.os-matrix-prefetch.outputs.matrix }} + # test-shard-matrix: ${{ steps.schedule-test-shards.outputs.test-shard-matrix }} + # test-matrix-empty: ${{ steps.schedule-test-shards.outputs.test-matrix-empty }} + + # steps: + # - name: Calculate `os-matrix-is-full` output + # id: os-matrix-is-full + # env: + # IS_FULL: >- + # ${{ + # ( + # github.event_name != 'pull_request' || + # contains(github.event.pull_request.labels.*.name, 'ci:fulltest') + # ) && 'true' || '' + # }} + # run: | + # echo 'OS_MATRIX_IS_FULL=${{ env.IS_FULL }}' >> "$GITHUB_ENV" + # echo 'os-matrix-is-full=${{ env.IS_FULL }}' >> "$GITHUB_OUTPUT" + + # - name: Calculate `os-matrix` output + # id: os-matrix + # env: + # OS_ALL: '["ubuntu-latest", "macos-latest", "windows-latest"]' + # OS_LINUX_ONLY: '["ubuntu-latest"]' + # run: | + # echo 'os-matrix=${{ + # env.OS_MATRIX_IS_FULL && env.OS_ALL || env.OS_LINUX_ONLY + # }}' >> "$GITHUB_OUTPUT" + + # - name: Detect changed files + # if: ${{ github.event_name == 'pull_request' }} + # id: changed-files + # env: + # GH_TOKEN: ${{ github.token }} + # GH_REPO: ${{ github.event.repository.full_name }} + # PR_URL: >- + # https://api.github.com/repos/{owner}/{repo}/compare/${{ + # github.event.pull_request.base.sha + # }}...${{ + # github.event.pull_request.head.sha + # }} + # JQ_FILTER: >- + # "changed-files=" + ([.files[].filename] | tostring) + # run: gh api ${{ env.PR_URL }} | jq -rc '${{ env.JQ_FILTER }}' >> "$GITHUB_OUTPUT" + + # - name: Checkout code + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # filter: blob:none # we don't need all blobs + # sparse-checkout: ${{ env.SPARSE_CHECKOUT }} + # show-progress: false + + # - name: Calculate matrix for `node_modules` prefetch + # uses: ./.github/actions/calculate-prefetch-matrix + # id: os-matrix-prefetch + # with: + # repo: ${{ github.event.repository.full_name }} + # token: ${{ github.token }} + # node-version: ${{ env.NODE_VERSION }} + + # - name: Prefetch modules for `ubuntu-latest` + # id: setup-node + # uses: ./.github/actions/setup-node + # with: + # node-version: ${{ env.NODE_VERSION }} + # os: ${{ runner.os }} + # save-cache: true + + # - name: Schedule test shards + # id: schedule-test-shards + # env: + # ALL_PLATFORMS: ${{ env.OS_MATRIX_IS_FULL }} + # FILTER_SHARDS: ${{ github.event.pull_request.draft && 'true' || '' }} + # CHANGED_FILES: ${{ steps.changed-files.outputs.changed-files }} + # run: | + # echo "$(pnpm -s schedule-test-shards)" >> "$GITHUB_OUTPUT" + + # prefetch: + # needs: [setup] + + # # We can't check `needs.setup.outputs.os-matrix-is-full` here, + # # as it will lead to further complications that aren't solvable + # # with current GitHub Actions feature set. + # # + # # Although this job sometimes may act as short-lived `no-op`, + # # it's actually the best option available. + # # + # # However, in draft mode we can skip this step. + # if: | + # !(github.event.pull_request.draft == true && + # needs.setup.outputs.test-matrix-empty == 'true') + + # strategy: + # matrix: + # os: ${{ fromJSON(needs.setup.outputs.os-matrix-prefetch) }} + # node-version: [18] + + # runs-on: ${{ matrix.os }} + + # timeout-minutes: 10 + + # steps: + # - name: Checkout code + # if: needs.setup.outputs.os-matrix-is-full && runner.os != 'Linux' + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # filter: blob:none # we don't need all blobs + # sparse-checkout: ${{ env.SPARSE_CHECKOUT }} + # show-progress: false + + # - name: Setup Node.js + # if: needs.setup.outputs.os-matrix-is-full && runner.os != 'Linux' + # uses: ./.github/actions/setup-node + # with: + # node-version: ${{ env.NODE_VERSION }} + # os: ${{ runner.os }} + # save-cache: true + + # lint-eslint: + # needs: [setup] + # runs-on: ubuntu-latest + # timeout-minutes: 15 + + # permissions: + # actions: write + + # steps: + # - name: Checkout code + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # show-progress: false + + # - name: Setup Node.js + # uses: ./.github/actions/setup-node + # with: + # node-version: ${{ env.NODE_VERSION }} + # os: ${{ runner.os }} + + # - name: Restore eslint cache + # uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + # with: + # path: .cache/eslint + # key: eslint-main-cache + + # - name: Lint + # run: pnpm eslint-ci + + # - name: Remove cache + # if: github.event_name == 'push' + # env: + # GH_TOKEN: ${{ github.token }} + # GH_REPO: ${{ github.event.repository.full_name }} + # run: | + # gh api --method DELETE /repos/{owner}/{repo}/actions/caches?key=eslint-main-cache || + # echo "Cache not found" + + # - name: Save eslint cache + # if: github.event_name == 'push' + # uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + # with: + # path: .cache/eslint + # key: eslint-main-cache + + # lint-prettier: + # needs: [setup] + # runs-on: ubuntu-latest + # timeout-minutes: 7 + + # permissions: + # actions: write + + # steps: + # - name: Checkout code + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # show-progress: false + + # - name: Setup Node.js + # uses: ./.github/actions/setup-node + # with: + # node-version: ${{ env.NODE_VERSION }} + # os: ${{ runner.os }} + + # - name: Restore prettier cache + # uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + # with: + # path: .cache/prettier + # key: prettier-main-cache + + # - name: Lint + # run: pnpm prettier --cache-location .cache/prettier + + # - name: Remove cache + # if: github.event_name == 'push' + # env: + # GH_TOKEN: ${{ github.token }} + # GH_REPO: ${{ github.event.repository.full_name }} + # run: | + # gh api --method DELETE /repos/{owner}/{repo}/actions/caches?key=prettier-main-cache || + # echo "Cache not found" + + # - name: Save prettier cache + # if: github.event_name == 'push' + # uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + # with: + # path: .cache/prettier + # key: prettier-main-cache + + # lint-docs: + # needs: [setup] + # runs-on: ubuntu-latest + # timeout-minutes: 7 + + # steps: + # - name: Checkout code + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # show-progress: false + + # - name: Setup Node.js + # uses: ./.github/actions/setup-node + # with: + # node-version: ${{ env.NODE_VERSION }} + # os: ${{ runner.os }} + + # - name: Lint markdown + # uses: DavidAnson/markdownlint-cli2-action@b4c9feab76d8025d1e83c653fa3990936df0e6c8 # v16.0.0 + + # - name: Lint fenced code blocks + # run: pnpm doc-fence-check + + # - name: Lint documentation + # run: pnpm lint-documentation + + # - name: Markdown lint + # run: pnpm markdown-lint + + # lint-other: + # needs: [setup] + # runs-on: ubuntu-latest + # timeout-minutes: 7 + + # steps: + # - name: Checkout code + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # show-progress: false + + # - name: Setup Node.js + # uses: ./.github/actions/setup-node + # with: + # node-version: ${{ env.NODE_VERSION }} + # os: ${{ runner.os }} + + # - name: Type check + # run: pnpm type-check + + # - name: Lint project file structure + # run: pnpm ls-lint + + # - name: Check git version + # run: pnpm git-check + + # - name: Test schema + # run: pnpm test-schema + + # test: + # needs: [setup, prefetch] + + # if: | + # !(github.event.pull_request.draft == true && + # needs.setup.outputs.test-matrix-empty == 'true') + + # name: ${{ matrix.name }} + + # runs-on: ${{ matrix.os }} + # timeout-minutes: ${{ matrix.runner-timeout-minutes }} + + # strategy: + # matrix: + # include: ${{ fromJSON(needs.setup.outputs.test-shard-matrix) }} + + # steps: + # - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # show-progress: false + + # - name: Setup Node.js + # uses: ./.github/actions/setup-node + # with: + # node-version: ${{ env.NODE_VERSION }} + # os: ${{ runner.os }} + + # - name: Cache jest + # uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + # with: + # path: .cache/jest + # key: | + # jest-cache-${{ + # runner.os + # }}-${{ + # env.NODE_VERSION + # }}-${{ + # hashFiles('pnpm-lock.yaml') + # }}-${{ + # matrix.cache-key + # }} + + # - name: Unit tests + # shell: bash + # run: | + # for shard in ${{ matrix.shards }}; + # do + # TEST_SHARD="$shard" pnpm jest \ + # --ci \ + # --test-timeout ${{ matrix.test-timeout-milliseconds }} \ + # --coverage ${{ matrix.coverage }} + # done + + # - name: Move coverage files + # if: (success() || failure()) && github.event.pull_request.draft != true && matrix.coverage + # run: | + # mkdir -p ./coverage/lcov + # mkdir -p ./coverage/json + # for shard in ${{ matrix.shards }}; + # do + # mv ./coverage/shard/$shard/lcov.info ./coverage/lcov/$shard.lcov + # mv ./coverage/shard/$shard/coverage-final.json ./coverage/json/$shard.json + # done + + # - name: Save coverage artifacts + # if: (success() || failure()) && github.event.pull_request.draft != true && matrix.coverage + # uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + # with: + # name: ${{ matrix.upload-artifact-name }} + # path: | + # ./coverage/lcov + # ./coverage/json + + # codecov: + # needs: [test] + # runs-on: ubuntu-latest + # timeout-minutes: 3 + # if: (success() || failure()) && github.event_name != 'merge_group' && github.event.pull_request.draft != true + # steps: + # - name: Checkout code + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # filter: blob:none # we don't need all blobs + # show-progress: false + + # - name: Download coverage reports + # uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 + # with: + # pattern: coverage-* + # path: coverage + # merge-multiple: true + + # - name: Codecov + # uses: codecov/codecov-action@84508663e988701840491b86de86b666e8a86bed # v4.3.0 + # with: + # token: ${{ secrets.CODECOV_TOKEN }} + # directory: coverage/lcov + # fail_ci_if_error: github.event_name != 'pull_request' + # verbose: true + + # coverage-threshold: + # needs: + # - test + # runs-on: ubuntu-latest + # timeout-minutes: 3 + # if: (success() || failure()) && github.event.pull_request.draft != true + # steps: + # - name: Checkout code + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # filter: blob:none # we don't need all blobs + # sparse-checkout: ${{ env.SPARSE_CHECKOUT }} + # show-progress: false + + # - name: Setup Node.js + # uses: ./.github/actions/setup-node + # with: + # node-version: ${{ env.NODE_VERSION }} + # os: ${{ runner.os }} + + # - name: Download coverage reports + # uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 + # with: + # pattern: coverage-* + # path: coverage + # merge-multiple: true + + # - name: Merge coverage reports + # run: pnpm nyc merge ./coverage/json ./coverage/nyc/coverage.json + + # - name: Report coverage + # run: pnpm nyc report -t ./coverage/nyc --skip-full -r text -r text-summary + + # - name: Check coverage threshold + # run: | + # pnpm nyc check-coverage -t ./coverage/nyc \ + # --branches 100 \ + # --functions 100 \ + # --lines 100 \ + # --statements 100 + + # # Catch-all required check for test matrix and coverage + # test-success: + # needs: + # - setup + # - test + # - codecov + # - coverage-threshold + # runs-on: ubuntu-latest + # timeout-minutes: 1 + # if: always() + # steps: + # - name: Fail for failed or cancelled tests + # if: | + # needs.test.result == 'failure' || + # needs.test.result == 'cancelled' + # run: exit 1 + + # - name: Fail for skipped tests when PR is ready for review + # if: | + # github.event_name == 'pull_request' && + # github.event.pull_request.draft != true && + # needs.test.result == 'skipped' + # run: exit 1 + + # - name: Fail for failed or cancelled codecov + # if: | + # needs.codecov.result == 'failure' || + # needs.codecov.result == 'cancelled' + # run: exit 1 + + # - name: Fail for skipped codecov when PR is ready for review + # if: | + # github.event_name == 'pull_request' && + # github.event.pull_request.draft != true && + # needs.codecov.result == 'skipped' + # run: exit 1 + + # - name: Fail for failed or cancelled coverage-threshold + # if: | + # needs.coverage-threshold.result == 'failure' || + # needs.coverage-threshold.result == 'cancelled' + # run: exit 1 + + # - name: Fail for skipped coverage-threshold when PR is ready for review + # if: | + # github.event_name == 'pull_request' && + # github.event.pull_request.draft != true && + # needs.coverage-threshold.result == 'skipped' + # run: exit 1 + + # build: + # needs: setup + # runs-on: ubuntu-latest + # timeout-minutes: 5 + # if: github.event.pull_request.draft != true + # steps: + # - name: Checkout code + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # show-progress: false + + # - name: Setup Node.js + # uses: ./.github/actions/setup-node + # with: + # node-version: ${{ env.NODE_VERSION }} + # os: ${{ runner.os }} + + # - name: Build + # run: pnpm build + + # - name: Build docker + # run: pnpm build:docker build --tries=3 + # env: + # LOG_LEVEL: debug + + # - name: Pack + # run: pnpm test-e2e:pack + + # - name: Upload + # uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + # with: + # name: renovate-package + # path: renovate-0.0.0-semantic-release.tgz + + # build-docs: + # needs: [lint-docs] + # runs-on: ubuntu-latest + # timeout-minutes: 5 + # if: github.event.pull_request.draft != true + # steps: + # - name: Checkout code + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # show-progress: false + + # - name: Setup Node.js + # uses: ./.github/actions/setup-node + # with: + # node-version: ${{ env.NODE_VERSION }} + # os: ${{ runner.os }} + + # - name: Build + # run: pnpm build:docs + + # - name: Upload + # uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + # with: + # name: docs + # path: tmp/docs/ + + # test-e2e: + # needs: [build] + # runs-on: 'ubuntu-latest' + # timeout-minutes: 7 + + # if: github.event.pull_request.draft != true + + # steps: + # - name: Checkout code + # uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # with: + # show-progress: false + + # - name: Setup pnpm + # uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3.0.0 + # with: + # standalone: true + + # - name: Setup Node.js + # uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + # with: + # node-version: ${{ env.NODE_VERSION }} + + # - name: Download package + # uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 + # with: + # name: renovate-package + + # - name: Install dependencies + # run: pnpm test-e2e:install + + # - name: E2E Test + # run: pnpm test-e2e:run release: - needs: - - setup - - lint-eslint - - lint-prettier - - lint-docs - - lint-other - - test-e2e - - test-success - - build-docs - - codecov - - coverage-threshold - - if: github.repository == 'renovatebot/renovate' && github.event_name != 'pull_request' + # needs: + # - setup + # - lint-eslint + # - lint-prettier + # - lint-docs + # - lint-other + # - test-e2e + # - test-success + # - build-docs + # - codecov + # - coverage-threshold + + # if: github.repository == 'renovatebot/renovate' && github.event_name != 'pull_request' runs-on: ubuntu-latest timeout-minutes: 60 permissions: @@ -643,7 +644,7 @@ jobs: - name: Docker registry login run: | - echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin + # echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin - name: Check dry run @@ -658,8 +659,8 @@ jobs: - name: semantic-release run: | - pnpm semantic-release --dry-run ${{env.DRY_RUN}} + pnpm semantic-release --dry-run true env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} # TODO: use action token? - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # TODO: use action token? + # NPM_TOKEN: ${{ secrets.NPM_TOKEN }} LOG_LEVEL: debug diff --git a/.releaserc.json b/.releaserc.json index a9dcb3f1bbf251..728fd816bab9d4 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -1,7 +1,6 @@ { "plugins": [ "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", [ "@semantic-release/github", { @@ -14,7 +13,6 @@ ] } ], - "@semantic-release/npm", [ "@semantic-release/exec", { @@ -91,8 +89,7 @@ }, "tagFormat": "${version}", "branches": [ - { - "name": "main" - } + { "name": "main" }, + { "name": "gitlab-forked-from-project" } ] } diff --git a/lib/modules/platform/gitlab/__snapshots__/index.spec.ts.snap b/lib/modules/platform/gitlab/__snapshots__/index.spec.ts.snap index a0082574098a51..1606ceab4e474e 100644 --- a/lib/modules/platform/gitlab/__snapshots__/index.spec.ts.snap +++ b/lib/modules/platform/gitlab/__snapshots__/index.spec.ts.snap @@ -232,6 +232,7 @@ exports[`modules/platform/gitlab/index initRepo should fall back respecting when "defaultBranch": "master", "ignorePrAuthor": undefined, "mergeMethod": "merge", + "mergeRequestRepository": "some%2Frepo%2Fproject", "repository": "some%2Frepo%2Fproject", "url": "http://oauth2:123test@mycompany.com/gitlab/some/repo/project.git", }, @@ -247,6 +248,7 @@ exports[`modules/platform/gitlab/index initRepo should use ssh_url_to_repo if gi "defaultBranch": "master", "ignorePrAuthor": undefined, "mergeMethod": "merge", + "mergeRequestRepository": "some%2Frepo%2Fproject", "repository": "some%2Frepo%2Fproject", "url": "ssh://git@gitlab.com/some%2Frepo%2Fproject.git", }, diff --git a/lib/modules/platform/gitlab/index.ts b/lib/modules/platform/gitlab/index.ts index e5b1e89368c945..c350402bfbfa61 100644 --- a/lib/modules/platform/gitlab/index.ts +++ b/lib/modules/platform/gitlab/index.ts @@ -83,6 +83,7 @@ let config: { cloneSubmodules: boolean | undefined; ignorePrAuthor: boolean | undefined; squash: boolean; + mergeRequestRepository: string; } = {} as any; const defaults = { @@ -323,7 +324,6 @@ export async function initRepo({ ); throw new Error(REPOSITORY_ARCHIVED); } - if (res.body.mirror && includeMirrors !== true) { logger.debug( 'Repository is a mirror - throwing error to abort renovation', @@ -359,6 +359,8 @@ export async function initRepo({ } logger.debug(`${repository} default branch = ${config.defaultBranch}`); delete config.prList; + config.mergeRequestRepository = + res.body.forked_from_project?.id ?? config.repository; logger.debug('Enabling Git FS'); const url = getRepoUrl(repository, gitUrl, res); await git.initRepo({ @@ -555,7 +557,7 @@ async function fetchPrList(): Promise { searchParams.scope = 'created_by_me'; } const query = getQueryString(searchParams); - const urlString = `projects/${config.repository}/merge_requests?${query}`; + const urlString = `projects/${config.mergeRequestRepository}/merge_requests?${query}`; try { const res = await gitlabApi.getJson< { @@ -593,7 +595,7 @@ export async function getPrList(): Promise { async function ignoreApprovals(pr: number): Promise { try { - const url = `projects/${config.repository}/merge_requests/${pr}/approval_rules`; + const url = `projects/${config.mergeRequestRepository}/merge_requests/${pr}/approval_rules`; const { body: rules } = await gitlabApi.getJson< { name: string; @@ -684,7 +686,7 @@ async function tryPrAutomerge( pipeline: { status: string; }; - }>(`projects/${config.repository}/merge_requests/${pr}`, { + }>(`projects/${config.mergeRequestRepository}/merge_requests/${pr}`, { memCache: false, }); // detailed_merge_status is available with Gitlab >=15.6.0 @@ -713,7 +715,7 @@ async function tryPrAutomerge( for (let attempt = 1; attempt <= retryTimes; attempt += 1) { try { await gitlabApi.putJson( - `projects/${config.repository}/merge_requests/${pr}/merge`, + `projects/${config.mergeRequestRepository}/merge_requests/${pr}/merge`, { body: { should_remove_source_branch: true, @@ -739,7 +741,7 @@ async function tryPrAutomerge( async function approvePr(pr: number): Promise { try { await gitlabApi.postJson( - `projects/${config.repository}/merge_requests/${pr}/approve`, + `projects/${config.mergeRequestRepository}/merge_requests/${pr}/approve`, ); } catch (err) { logger.warn({ err }, 'GitLab: Error approving merge request'); @@ -761,6 +763,9 @@ export async function createPr({ } const description = sanitize(rawDescription); logger.debug(`Creating Merge Request: ${title}`); + // the creation is always against the repository with the branch + // but if the target_project_id is forked_from_project, then the Merge + // Request will end up in that repository const res = await gitlabApi.postJson( `projects/${config.repository}/merge_requests`, { @@ -772,6 +777,7 @@ export async function createPr({ description, labels: (labels ?? []).join(','), squash: config.squash, + target_project_id: config.mergeRequestRepository, }, }, ); @@ -794,7 +800,7 @@ export async function createPr({ export async function getPr(iid: number): Promise { logger.debug(`getPr(${iid})`); - const mr = await getMR(config.repository, iid); + const mr = await getMR(config.mergeRequestRepository, iid); // Harmonize fields with GitHub const pr: GitlabPr = { @@ -852,7 +858,7 @@ export async function updatePr({ } await gitlabApi.putJson( - `projects/${config.repository}/merge_requests/${iid}`, + `projects/${config.mergeRequestRepository}/merge_requests/${iid}`, { body }, ); @@ -873,7 +879,7 @@ export async function reattemptPlatformAutomerge({ export async function mergePr({ id }: MergePRConfig): Promise { try { await gitlabApi.putJson( - `projects/${config.repository}/merge_requests/${id}/merge`, + `projects/${config.mergeRequestRepository}/merge_requests/${id}/merge`, { body: { should_remove_source_branch: true, @@ -1010,11 +1016,12 @@ export async function setBranchStatus({ state: renovateState, url: targetUrl, }: BranchStatusConfig): Promise { + const branchSourceProject = config.repository; // First, get the branch commit SHA const branchSha = git.getBranchCommit(branchName); // Now, check the statuses for that commit // TODO: types (#22198) - const url = `projects/${config.repository}/statuses/${branchSha!}`; + const url = `projects/${branchSourceProject}/statuses/${branchSha!}`; let state = 'success'; if (renovateState === 'yellow') { state = 'pending'; @@ -1076,7 +1083,7 @@ export async function getIssueList(): Promise { }); const res = await gitlabApi.getJson< { iid: number; title: string; labels: string[] }[] - >(`projects/${config.repository}/issues?${query}`, { + >(`projects/${config.mergeRequestRepository}/issues?${query}`, { memCache: false, paginate: true, }); @@ -1101,7 +1108,7 @@ export async function getIssue( try { const issueBody = ( await gitlabApi.getJson<{ description: string }>( - `projects/${config.repository}/issues/${number}`, + `projects/${config.mergeRequestRepository}/issues/${number}`, { memCache: useCache }, ) ).body.description; @@ -1148,13 +1155,13 @@ export async function ensureIssue({ if (issue) { const existingDescription = ( await gitlabApi.getJson<{ description: string }>( - `projects/${config.repository}/issues/${issue.iid}`, + `projects/${config.mergeRequestRepository}/issues/${issue.iid}`, ) ).body.description; if (issue.title !== title || existingDescription !== description) { logger.debug('Updating issue'); await gitlabApi.putJson( - `projects/${config.repository}/issues/${issue.iid}`, + `projects/${config.mergeRequestRepository}/issues/${issue.iid}`, { body: { title, @@ -1167,14 +1174,17 @@ export async function ensureIssue({ return 'updated'; } } else { - await gitlabApi.postJson(`projects/${config.repository}/issues`, { - body: { - title, - description, - labels: (labels ?? []).join(','), - confidential: confidential ?? false, + await gitlabApi.postJson( + `projects/${config.mergeRequestRepository}/issues`, + { + body: { + title, + description, + labels: (labels ?? []).join(','), + confidential: confidential ?? false, + }, }, - }); + ); logger.info('Issue created'); // delete issueList so that it will be refetched as necessary delete config.issueList; @@ -1197,7 +1207,7 @@ export async function ensureIssueClosing(title: string): Promise { if (issue.title === title) { logger.debug({ issue }, 'Closing issue'); await gitlabApi.putJson( - `projects/${config.repository}/issues/${issue.iid}`, + `projects/${config.mergeRequestRepository}/issues/${issue.iid}`, { body: { state_event: 'close' }, }, @@ -1282,7 +1292,7 @@ export async function addReviewers( newReviewerIDs = [...new Set(newReviewerIDs)]; try { - await updateMR(config.repository, iid, { + await updateMR(config.mergeRequestRepository, iid, { reviewer_ids: [...existingReviewerIDs, ...newReviewerIDs], }); } catch (err) { @@ -1301,7 +1311,7 @@ export async function deleteLabel( .filter((l: string) => l !== label) .join(','); await gitlabApi.putJson( - `projects/${config.repository}/merge_requests/${issueNo}`, + `projects/${config.mergeRequestRepository}/merge_requests/${issueNo}`, { body: { labels }, }, @@ -1314,7 +1324,7 @@ export async function deleteLabel( async function getComments(issueNo: number): Promise { // GET projects/:owner/:repo/merge_requests/:number/notes logger.debug(`Getting comments for #${issueNo}`); - const url = `projects/${config.repository}/merge_requests/${issueNo}/notes`; + const url = `projects/${config.mergeRequestRepository}/merge_requests/${issueNo}/notes`; const comments = ( await gitlabApi.getJson(url, { paginate: true }) ).body; @@ -1325,7 +1335,7 @@ async function getComments(issueNo: number): Promise { async function addComment(issueNo: number, body: string): Promise { // POST projects/:owner/:repo/merge_requests/:number/notes await gitlabApi.postJson( - `projects/${config.repository}/merge_requests/${issueNo}/notes`, + `projects/${config.mergeRequestRepository}/merge_requests/${issueNo}/notes`, { body: { body }, }, @@ -1339,7 +1349,7 @@ async function editComment( ): Promise { // PUT projects/:owner/:repo/merge_requests/:number/notes/:id await gitlabApi.putJson( - `projects/${config.repository}/merge_requests/${issueNo}/notes/${commentId}`, + `projects/${config.mergeRequestRepository}/merge_requests/${issueNo}/notes/${commentId}`, { body: { body }, }, @@ -1352,7 +1362,7 @@ async function deleteComment( ): Promise { // DELETE projects/:owner/:repo/merge_requests/:number/notes/:id await gitlabApi.deleteJson( - `projects/${config.repository}/merge_requests/${issueNo}/notes/${commentId}`, + `projects/${config.mergeRequestRepository}/merge_requests/${issueNo}/notes/${commentId}`, ); } diff --git a/lib/modules/platform/gitlab/types.ts b/lib/modules/platform/gitlab/types.ts index 897d25175783b4..d33db1956b0bc0 100644 --- a/lib/modules/platform/gitlab/types.ts +++ b/lib/modules/platform/gitlab/types.ts @@ -60,12 +60,14 @@ export interface RepoResponse { empty_repo: boolean; ssh_url_to_repo: string; http_url_to_repo: string; - forked_from_project: boolean; repository_access_level: 'disabled' | 'private' | 'enabled'; merge_requests_access_level: 'disabled' | 'private' | 'enabled'; merge_method: MergeMethod; path_with_namespace: string; squash_option?: 'never' | 'always' | 'default_on' | 'default_off'; + forked_from_project?: { + id: string; + }; } // See https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/graphql/types/user_status_type.rb diff --git a/package.json b/package.json index abdea127ec831d..9d90bfeca55fae 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/renovatebot/renovate.git" + "url": "https://github.com/appian/renovate.git" }, "keywords": [ "automated", diff --git a/tools/docker/bake.hcl b/tools/docker/bake.hcl index 8a93f1924e94a4..46e507f0f2f99a 100644 --- a/tools/docker/bake.hcl +++ b/tools/docker/bake.hcl @@ -1,5 +1,5 @@ variable "OWNER" { - default = "renovatebot" + default = "appian" } variable "FILE" { default = "renovate" diff --git a/tools/publish-release.ts b/tools/publish-release.ts index 590ef44aab1625..50b700a20a6be0 100644 --- a/tools/publish-release.ts +++ b/tools/publish-release.ts @@ -26,11 +26,11 @@ void (async () => { if (meta?.['push-slim']?.['containerimage.digest']) { sign( - `ghcr.io/renovatebot/renovate@${meta['push-slim']['containerimage.digest']}`, + `ghcr.io/appian/renovate@${meta['push-slim']['containerimage.digest']}`, opts, ); sign( - `renovate/renovate@${meta['push-slim']['containerimage.digest']}`, + `appian/renovate@${meta['push-slim']['containerimage.digest']}`, opts, ); } else { @@ -39,11 +39,11 @@ void (async () => { if (meta?.['push-full']?.['containerimage.digest']) { sign( - `ghcr.io/renovatebot/renovate@${meta['push-full']['containerimage.digest']}`, + `ghcr.io/appian/renovate@${meta['push-full']['containerimage.digest']}`, opts, ); sign( - `renovate/renovate@${meta['push-full']['containerimage.digest']}`, + `appian/renovate@${meta['push-full']['containerimage.digest']}`, opts, ); } else {