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 + scoperepo,workflow),github_callback(troca code→token + perfil, bypass de auth noapi.php),github_disconnect,github_list_repos,github_setup_repo,github_get_connection_status(validação de token com flagtoken_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()comsodium_crypto_box_seal(chave pública do repo +key_id) gravandoNEXUS_TOKENeNEXUS_API_URLviagithub_put_repo_secret(PUT em/actions/secrets/{name});github_nexus_public_url()resolve a URL pública (SITE_URLresolvida no bootstrap ou envNEXUS_PUBLIC_URL). - Workflow de segurança:
github_push_security_workflow()envia.github/workflows/nexus-security.ymlcombase64+sha(create/update) e commitci: 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), ignoravendor|node_modules|dist|builde sempre monitoragithub-actions;github_build_dependabot_yaml()gera o.github/dependabot.yml(weekly, segunda, limite 5 PRs, labelsdependencies). - 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 comsecurity_resolve_repo_scan_profile()do nexus-security-scanner. - Registro de repositório:
github_setup_repo()faz upsert emplugin.security.repos(URL + projeto NEXUS, resolvido viaproject_find_by_name()emprojects.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 probeplugins/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: origenshttps://github.comehttps://api.github.com, métodos GET/POST/PUT e headerX-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/setConfigemplugin.github.configeplugin.security.repos) - cURL (REST API do GitHub, OAuth endpoints)
- libsodium (
sodium_crypto_box_sealpara 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:
stateanti-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.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
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
- PHP 8
- MySQL 8
- cURL
- libsodium
- Alpine.js
- Tailwind CSS
- GitHub REST API
- Plugin NEXUS
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.