Compare commits

...

5 Commits

Author SHA1 Message Date
Fred Tingaud
6c26d30bed Add a trigger for coverage runs 2024-07-16 11:10:57 +02:00
Fred Tingaud
9fef286c33 Revert git clone 2024-07-16 11:10:14 +02:00
Fred Tingaud
66dfb14591 Revert "BUILD-4733: Use COVERAGE_GITHUB_TOKEN from the vault instead of the default GITHUB_TOKEN"
This reverts commit 9a14e956754adfffdfb53bd22d4a230cb97acaae.
2024-07-16 10:21:35 +02:00
Fred Tingaud
3e7a5a4108 Revert "BUILD-5580: Add missing id-token: write permissions for the Vault action and update the action to v3"
This reverts commit 1c285ade7a6638afc8d00893d9756b567fd9c60c.
2024-07-16 10:20:53 +02:00
Fred Tingaud
e2375b3b06 Revert Coverage script to functional state 2024-07-16 10:18:15 +02:00
11 changed files with 27 additions and 74 deletions

View File

@ -1,5 +1,5 @@
env: env:
COVERAGE_GITHUB_TOKEN: VAULT[development/github/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-ro token] GITHUB_TOKEN: VAULT[development/github/token/${CIRRUS_REPO_OWNER}-${CIRRUS_REPO_NAME}-ro token]
SONAR_HOST_URL: VAULT[development/kv/data/next data.url] SONAR_HOST_URL: VAULT[development/kv/data/next data.url]
SONAR_TOKEN: VAULT[development/kv/data/next data.token] SONAR_TOKEN: VAULT[development/kv/data/next data.token]
SONAR_SCANNER_VERSION: 5.0.1.3006 SONAR_SCANNER_VERSION: 5.0.1.3006

View File

@ -15,18 +15,10 @@ on:
jobs: jobs:
add_language_to_rule: add_language_to_rule:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: env:
id-token: write # OIDC auth for Vault GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
contents: read # checkout
steps: steps:
- name: 'get secrets'
id: secrets
uses: SonarSource/vault-action-wrapper@v3
with:
secrets: |
development/github/token/SonarSource-rspec-coverage token | COVERAGE_GITHUB_TOKEN;
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: true persist-credentials: true
@ -46,7 +38,5 @@ jobs:
run: pipenv install run: pipenv install
- name: 'Add Language' - name: 'Add Language'
env:
COVERAGE_GITHUB_TOKEN: ${{ fromJSON(steps.secrets.outputs.vault).COVERAGE_GITHUB_TOKEN }}
working-directory: 'rspec/rspec-tools' working-directory: 'rspec/rspec-tools'
run: pipenv run rspec-tools add-lang-to-rule --user ${{ github.actor }} --language "${{ github.event.inputs.language }}" --rule "${{ github.event.inputs.rule }}" run: pipenv run rspec-tools add-lang-to-rule --user ${{ github.actor }} --language "${{ github.event.inputs.language }}" --rule "${{ github.event.inputs.rule }}"

View File

@ -12,18 +12,10 @@ on:
jobs: jobs:
create_new_rule: create_new_rule:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: env:
id-token: write # OIDC auth for Vault GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
contents: read # checkout
steps: steps:
- name: 'get secrets'
id: secrets
uses: SonarSource/vault-action-wrapper@v3
with:
secrets: |
development/github/token/SonarSource-rspec-coverage token | COVERAGE_GITHUB_TOKEN;
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: true persist-credentials: true
@ -43,7 +35,5 @@ jobs:
run: pipenv install run: pipenv install
- name: 'Create Rule' - name: 'Create Rule'
env:
COVERAGE_GITHUB_TOKEN: ${{ fromJSON(steps.secrets.outputs.vault).COVERAGE_GITHUB_TOKEN }}
working-directory: 'rspec/rspec-tools' working-directory: 'rspec/rspec-tools'
run: pipenv run rspec-tools create-rule --user ${{ github.actor }} --languages "${{ github.event.inputs.languages }}" run: pipenv run rspec-tools create-rule --user ${{ github.actor }} --languages "${{ github.event.inputs.languages }}"

View File

@ -9,18 +9,10 @@ jobs:
build-and-deploy: build-and-deploy:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
permissions: permissions:
id-token: write # OIDC auth for Vault
pull-requests: read # Get the list and metadata of open new-rule PRs pull-requests: read # Get the list and metadata of open new-rule PRs
contents: write # Get the contents of open new-rule PRs, the 'master'; write to 'gh-pages' branch contents: write # Get the contents of open new-rule PRs, the 'master'; write to 'gh-pages' branch
pages: write # for github-pages-deploy-action pages: write # for github-pages-deploy-action
steps: steps:
- name: 'get secrets'
id: secrets
uses: SonarSource/vault-action-wrapper@v3
with:
secrets: |
development/github/token/SonarSource-rspec-coverage token | COVERAGE_GITHUB_TOKEN;
- name: Checkout 🛎️ - name: Checkout 🛎️
uses: actions/checkout@v4 # If you're using actions/checkout you must set persist-credentials to false in most cases for the deployment to work correctly. uses: actions/checkout@v4 # If you're using actions/checkout you must set persist-credentials to false in most cases for the deployment to work correctly.
with: with:
@ -36,7 +28,7 @@ jobs:
npm run predeploy npm run predeploy
env: env:
NODE_OPTIONS: "--max-old-space-size=3048" NODE_OPTIONS: "--max-old-space-size=3048"
COVERAGE_GITHUB_TOKEN: ${{ fromJSON(steps.secrets.outputs.vault).COVERAGE_GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Deploy 🚀 - name: Deploy 🚀
uses: JamesIves/github-pages-deploy-action@releases/v3 uses: JamesIves/github-pages-deploy-action@releases/v3
with: with:

View File

@ -2,31 +2,21 @@ name: Update rule coverage
on: on:
schedule: schedule:
- cron: '17 2 * * *' - cron: '17 2 * * *'
workflow_dispatch
jobs: jobs:
update_coverage: update_coverage:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
id-token: write # OIDC auth for Vault
contents: read # checkout
env: env:
TMP_BRANCH: temporary/coverage_update TMP_BRANCH: temporary/coverage_update
steps: steps:
- name: 'get secrets'
id: secrets
uses: SonarSource/vault-action-wrapper@v3
with:
secrets: |
development/github/token/SonarSource-rspec-coverage token | COVERAGE_GITHUB_TOKEN;
development/kv/data/slack token | slack_token;
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: true persist-credentials: true
ref: master ref: master
path: 'rspec' path: 'rspec'
token: ${{ fromJSON(steps.secrets.outputs.vault).COVERAGE_GITHUB_TOKEN }} token: ${{ secrets.COVERAGE_GITHUB_TOKEN }}
- uses: actions/setup-python@v4 - uses: actions/setup-python@v4
with: with:
python-version: '3.9' python-version: '3.9'
@ -41,7 +31,7 @@ jobs:
- name: 'Regenerate coverage information' - name: 'Regenerate coverage information'
env: env:
COVERAGE_GITHUB_TOKEN: ${{ fromJSON(steps.secrets.outputs.vault).COVERAGE_GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.COVERAGE_GITHUB_TOKEN }}
id: gen-coverage id: gen-coverage
working-directory: 'rspec/rspec-tools' working-directory: 'rspec/rspec-tools'
run: | run: |
@ -74,7 +64,7 @@ jobs:
uses: fountainhead/action-wait-for-check@v1.0.0 uses: fountainhead/action-wait-for-check@v1.0.0
id: wait-for-build id: wait-for-build
with: with:
token: ${{ secrets.COVERAGE_GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
checkName: all_required_checks checkName: all_required_checks
ref: ${{ env.TMP_BRANCH }} ref: ${{ env.TMP_BRANCH }}
timeoutSeconds: 2400 timeoutSeconds: 2400
@ -94,7 +84,7 @@ jobs:
if: always() && steps.create-temp-branch.conclusion == 'success' if: always() && steps.create-temp-branch.conclusion == 'success'
uses: dawidd6/action-delete-branch@v3 uses: dawidd6/action-delete-branch@v3
with: with:
COVERAGE_GITHUB_TOKEN: ${{ secrets.COVERAGE_GITHUB_TOKEN}} github_token: ${{ secrets.GITHUB_TOKEN}}
branches: ${{ env.TMP_BRANCH}} branches: ${{ env.TMP_BRANCH}}
- name: 'Fail if the change breaks CI' - name: 'Fail if the change breaks CI'
@ -106,7 +96,7 @@ jobs:
- name: 'Notify on slack about the failure' - name: 'Notify on slack about the failure'
if: ${{ failure() }} if: ${{ failure() }}
env: env:
SLACK_API_TOKEN: ${{ fromJSON(steps.secrets.outputs.vault).slack_token }} SLACK_API_TOKEN: ${{ secrets.SLACK_API_TOKEN }}
working-directory: 'rspec/rspec-tools' working-directory: 'rspec/rspec-tools'
run: | run: |
pipenv run rspec-tools notify-failure-on-slack \ pipenv run rspec-tools notify-failure-on-slack \

View File

@ -1,6 +1,6 @@
name: Update quick fix status name: Update quick fix status
on: on:
workflow_dispatch: workflow_dispatch:
inputs: inputs:
rule: rule:
@ -26,16 +26,9 @@ jobs:
update_quickfix_status: update_quickfix_status:
name: Update quick fix status name: Update quick fix status
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
permissions: env:
id-token: write # OIDC auth for Vault GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
contents: read # checkout
steps: steps:
- name: 'get secrets'
id: secrets
uses: SonarSource/vault-action-wrapper@v3
with:
secrets: |
development/github/token/SonarSource-rspec-coverage token | COVERAGE_GITHUB_TOKEN;
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:
persist-credentials: true persist-credentials: true
@ -56,6 +49,4 @@ jobs:
- name: 'Update quickfix status' - name: 'Update quickfix status'
working-directory: 'rspec/rspec-tools' working-directory: 'rspec/rspec-tools'
env:
COVERAGE_GITHUB_TOKEN: ${{ fromJSON(steps.secrets.outputs.vault).COVERAGE_GITHUB_TOKEN }}
run: pipenv run rspec-tools update-quickfix-status --user ${{ github.actor }} --rule "${{ github.event.inputs.rule }}" --language "${{ github.event.inputs.language }}" --status "${{ github.event.inputs.status }}" run: pipenv run rspec-tools update-quickfix-status --user ${{ github.actor }} --rule "${{ github.event.inputs.rule }}" --language "${{ github.event.inputs.language }}" --status "${{ github.event.inputs.status }}"

View File

@ -36,7 +36,7 @@ NOTE: If the script fails to clone or fetch due to an SSL certificate failure
As a workaround you can https://github.com/nodegit/nodegit/issues/1742[disable the certificate check]. As a workaround you can https://github.com/nodegit/nodegit/issues/1742[disable the certificate check].
NOTE: In the predeploy step (specifically the `prepare-rules` part of it) the script fetches all the open PRs locally. NOTE: In the predeploy step (specifically the `prepare-rules` part of it) the script fetches all the open PRs locally.
You might want to set `COVERAGE_GITHUB_TOKEN` to your personal GitHub token You might want to set `GITHUB_TOKEN` to your personal GitHub token
to avoid GitHub throttling your requests during the predeploy stage. to avoid GitHub throttling your requests during the predeploy stage.

View File

@ -24,14 +24,14 @@ export interface PullRequest {
*/ */
export async function process_incomplete_rspecs(tmpRepoDir: string, export async function process_incomplete_rspecs(tmpRepoDir: string,
callback: (srcDir: string, pr: PullRequest)=>void) { callback: (srcDir: string, pr: PullRequest)=>void) {
const octokit = process.env.COVERAGE_GITHUB_TOKEN ? const octokit = process.env.GITHUB_TOKEN ?
new Octokit({userAgent: 'rspec-tools', auth: process.env.COVERAGE_GITHUB_TOKEN}): new Octokit({userAgent: 'rspec-tools', auth: process.env.GITHUB_TOKEN}):
new Octokit({userAgent: 'rspec-tools'}); new Octokit({userAgent: 'rspec-tools'});
const repo = await (() => { const repo = await (() => {
if (!fs.existsSync(path.join(tmpRepoDir, '.git'))) { if (!fs.existsSync(path.join(tmpRepoDir, '.git'))) {
if (process.env.COVERAGE_GITHUB_TOKEN) { if (process.env.GITHUB_TOKEN) {
return Git.Clone.clone(`https://${process.env.COVERAGE_GITHUB_TOKEN}@github.com/SonarSource/rspec/`, tmpRepoDir); return Git.Clone.clone('https://' + process.env.GITHUB_TOKEN + '@github.com/SonarSource/rspec/', tmpRepoDir);
} else { } else {
return Git.Clone.clone('https://github.com/SonarSource/rspec/', tmpRepoDir); return Git.Clone.clone('https://github.com/SonarSource/rspec/', tmpRepoDir);
} }

View File

@ -45,7 +45,7 @@ def check_links(d):
@click.option('--user', required=False) @click.option('--user', required=False)
def create_rule(languages: str, user: Optional[str]): def create_rule(languages: str, user: Optional[str]):
'''Create a new rule.''' '''Create a new rule.'''
token = os.environ.get('COVERAGE_GITHUB_TOKEN') token = os.environ.get('GITHUB_TOKEN')
rspec_tools.create_rule.create_new_rule(languages, token, user) rspec_tools.create_rule.create_new_rule(languages, token, user)
@ -55,7 +55,7 @@ def create_rule(languages: str, user: Optional[str]):
@click.option('--user', required=False) @click.option('--user', required=False)
def add_lang_to_rule(language: str, rule: str, user: Optional[str]): def add_lang_to_rule(language: str, rule: str, user: Optional[str]):
'''Add a new language to rule.''' '''Add a new language to rule.'''
token = os.environ.get('COVERAGE_GITHUB_TOKEN') token = os.environ.get('GITHUB_TOKEN')
rspec_tools.create_rule.add_language_to_rule(language, rule, token, user) rspec_tools.create_rule.add_language_to_rule(language, rule, token, user)
@ -66,7 +66,7 @@ def add_lang_to_rule(language: str, rule: str, user: Optional[str]):
@click.option('--user', required=False) @click.option('--user', required=False)
def update_quickfix_status(language: str, rule: str, status: str, user: Optional[str]): def update_quickfix_status(language: str, rule: str, status: str, user: Optional[str]):
'''Update the status of quick fix for the given rule/language''' '''Update the status of quick fix for the given rule/language'''
token = os.environ.get('COVERAGE_GITHUB_TOKEN') token = os.environ.get('GITHUB_TOKEN')
rspec_tools.modify_rule.update_rule_quickfix_status(language, rule, status, token, user) rspec_tools.modify_rule.update_rule_quickfix_status(language, rule, status, token, user)

View File

@ -153,9 +153,9 @@ def all_implemented_rules():
def checkout_repo(repo): def checkout_repo(repo):
git_url=f"https://github.com/SonarSource/{repo}" git_url=f"https://github.com/SonarSource/{repo}"
token=os.getenv('COVERAGE_GITHUB_TOKEN') token=os.getenv('GITHUB_TOKEN')
if token: if token:
git_url=f"https://${token}@github.com/SonarSource/{repo}" git_url=f"https://{token}@github.com/SonarSource/{repo}"
if not os.path.exists(repo): if not os.path.exists(repo):
return Repo.clone_from(git_url, repo) return Repo.clone_from(git_url, repo)
else: else:

View File

@ -12,7 +12,7 @@ from rspec_tools.rules import RulesRepository
class TestCLIUpdateQuickfixStatus: class TestCLIUpdateQuickfixStatus:
'''Unit test for quickfix status update through Command Line Interface.''' '''Unit test for quickfix status update through Command Line Interface.'''
@patch.dict(os.environ, {'COVERAGE_GITHUB_TOKEN': 'TOKEN'}) @patch.dict(os.environ, {'GITHUB_TOKEN': 'TOKEN'})
@patch('rspec_tools.modify_rule.update_rule_quickfix_status') @patch('rspec_tools.modify_rule.update_rule_quickfix_status')
def test_basic_cli_usage(self, mock): def test_basic_cli_usage(self, mock):
arguments = [ arguments = [