Imagem de capa do projeto: Nexus GitHub Integration EM ANDAMENTO

Resumo técnico

Plugin de integração que conecta o NEXUS ao GitHub por OAuth, com proteção de state e tratamento seguro do segredo do cliente. O setup de repositório grava secrets do NEXUS com libsodium, publica o workflow de segurança, configura Dependabot e o perfil de scan e registra o projeto para uso pelo Security Scanner.

Escopo executado

  • 8 actions de API via PluginManager::registerApiAction — github_get_config (client_secret mascarado), github_save_config (não sobrescreve secret com a máscara), github_auth (state CSRF + scope repo,workflow), github_callback (troca code→token + perfil, bypass de auth no api.php), github_disconnect, github_list_repos, github_setup_repo, github_get_connection_status (validação de token com flag token_invalid).
  • github_api_request() — wrapper cURL com HTTPS forçado, headers por endpoint (api.github.com → Accept: application/vnd.github+json + X-GitHub-Api-Version: 2022-11-28, User-Agent: NEXUS-Task-Dashboard), timeout 15s e suporte a GET/POST/PUT/PATCH/DELETE.
  • Secrets de CI/CD: github_encrypt_secret() com sodium_crypto_box_seal (chave pública do repo + key_id) gravando NEXUS_TOKEN e NEXUS_API_URL via github_put_repo_secret (PUT em /actions/secrets/{name}); github_nexus_public_url() resolve a URL pública (SITE_URL resolvida no bootstrap ou env NEXUS_PUBLIC_URL).
  • Workflow de segurança: github_push_security_workflow() envia .github/workflows/nexus-security.yml com base64 + sha (create/update) e commit ci: sync NEXUS security scanner workflow; github_generate_workflow_yaml() lê o template do host em .github/workflows/nexus-security.yml (source of truth) com fallback inline.
  • Dependabot: github_detect_dependabot_ecosystems() mapeia 23 marcadores de lockfiles/manifests (composer, npm, pip, gomod, bundler, cargo, mix, pub, maven, gradle), ignora vendor|node_modules|dist|build e sempre monitora github-actions; github_build_dependabot_yaml() gera o .github/dependabot.yml (weekly, segunda, limite 5 PRs, labels dependencies).
  • Perfil de scan remoto: github_set_scan_profile_remote() prefere Actions variable (NEXUS_SCAN_PROFILE) e cai para secret quando o token/app não pode escrever variáveis ("Resource not accessible by integration"); integra com security_resolve_repo_scan_profile() do nexus-security-scanner.
  • Registro de repositório: github_setup_repo() faz upsert em plugin.security.repos (URL + projeto NEXUS, resolvido via project_find_by_name() em projects.php) — cross-link direto com o plugin nexus-security-scanner.
  • Proteção: github_delete_workflow() recusa remover o workflow do repo-fonte do NEXUS (detectado pelo probe plugins/nexus-security-scanner/plugin.php), preservando o template.
  • UI Alpine.js: modals.php (289 linhas — status de conexão com avatar, aviso de token inválido com botão Reconectar, callback URL copiável, guia inline de 7 passos) + docs.php (245 linhas — carrossel de 10 passos com screenshots e zoom) + doc.md (guia de 14 etapas do GitHub App).
  • cors.php: origens https://github.com e https://api.github.com, métodos GET/POST/PUT e header X-Hub-Signature-256 (webhooks do GitHub chamam a API do NEXUS).

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (config persistida via DB::getConfig/setConfig em plugin.github.config e plugin.security.repos)
  • cURL (REST API do GitHub, OAuth endpoints)
  • libsodium (sodium_crypto_box_seal para secrets)
  • GitHub REST API (v2022-11-28) + GitHub OAuth App
  • GitHub Actions (workflow de segurança) + Dependabot
  • Alpine.js + Tailwind CSS

Tags operacionais

  • Integrações
  • GitHub
  • OAuth
  • CI/CD
  • GitHub Actions
  • Secrets
  • Dependabot
  • Plugin NEXUS

Resultado operacional

  • Conexão OAuth com escopos mínimos (repo, workflow) e tokens permanentes (expiração desmarcada no GitHub App), com detecção de token inválido/expirado e reconexão guiada pelo painel.
  • Setup de repositório em um clique: secrets de CI/CD criptografadas com libsodium, workflow de segurança versionado no repo, registro no nexus-security-scanner e Dependabot instalado sem intervenção manual.
  • Vínculo com o nexus-security-scanner (plugin.security.repos + NEXUS_SCAN_PROFILE) — os repositórios passam a reportar scans para a API do NEXUS via NEXUS_TOKEN/NEXUS_API_URL.
  • Segurança em profundidade: state anti-CSRF no OAuth, HTTPS forçado em todas as chamadas, secret mascarado no front, chave pública por repositório e proteção do repositório-fonte do template.
  • Dependabot com detecção automática de ecossistemas (incluindo pins do github-actions) mantém as dependências monitoradas sem configuração YAML manual.

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

Plugin do NEXUS (categoria Integrações) que conecta o painel ao GitHub via OAuth App: vincula repositórios, criptografa secrets de CI/CD com libsodium e automatiza o workflow de segurança do GitHub Actions com Dependabot em um clique.

Arquitetura e organização

Execução e operação

O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.

Screenshots

Falar sobre este projeto

Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.