├── CODEOWNERS
├── assets
└── br.png
├── website
├── README.md
└── data
│ └── open-source
│ ├── maintainers.yml
│ └── projects.yml
├── .gitignore
├── SUPPORT.md
├── LICENSE
├── .github
├── workflows
│ ├── trigger-deploy-on-comment.yml
│ └── website-pr-validation.yml
└── PULL_REQUEST_TEMPLATE.md
├── SECURITY.md
├── script
└── website-pr-validation.rb
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
└── README.md
/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @github/brazil-community-reviewers
2 |
--------------------------------------------------------------------------------
/assets/br.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/github/brasil/main/assets/br.png
--------------------------------------------------------------------------------
/website/README.md:
--------------------------------------------------------------------------------
1 | # GitHubBrasil.com
2 |
3 | This directory hosts content that is served on [githubbrasil.com](https://githubbrasil.com).
4 |
5 | For contributing to the content, check out [CONTRIBUTING.md](https://github.com/github/brasil/blob/main/CONTRIBUTING.MD)
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Build and Release Folders
2 | bin-debug/
3 | bin-release/
4 | [Oo]bj/
5 | [Bb]in/
6 |
7 | # Other files and folders
8 | .settings/
9 |
10 | # Executables
11 | *.swf
12 | *.air
13 | *.ipa
14 | *.apk
15 |
16 | # IDEAs
17 | .idea
18 |
19 | # Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
20 | # should NOT be excluded as they contain compiler settings and other important
21 | # information for Eclipse / Flash Builder.
22 |
--------------------------------------------------------------------------------
/SUPPORT.md:
--------------------------------------------------------------------------------
1 | # Suporte
2 |
3 | ## Como relatar problemas e obter ajuda
4 |
5 | Este projeto utiliza as issues do GitHub para rastrear bugs e solicitações de recursos. Por favor, faça uma busca nas issues existentes antes de relatar novos problemas para evitar duplicatas. Para novos problemas, registre seu bug ou solicitação de recurso como uma nova issue.
6 |
7 | - O GitHubBrasil.com está em desenvolvimento ativo e é mantido pela equipe do GitHub. Faremos o possível para responder a solicitações de suporte, solicitações de recursos e perguntas da comunidade de maneira oportuna.
8 |
9 | ## Política de suporte do GitHub
10 |
11 | O suporte para este projeto é limitado aos recursos listados acima.
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 GitHub
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/.github/workflows/trigger-deploy-on-comment.yml:
--------------------------------------------------------------------------------
1 | name: Trigger deploy on comment
2 | on:
3 | issue_comment:
4 | types: [created]
5 | permissions: read-all
6 | jobs:
7 | if_merged:
8 | if: github.event.issue.pull_request && contains(github.event.comment.body, '/deploy')
9 | runs-on: ubuntu-latest
10 | steps:
11 | - name: User has permission to deploy
12 | uses: actions/github-script@v6
13 | with:
14 | script: |
15 | // Check if the user trying to deploy is an authorized user
16 | const creator = context.payload.sender.login
17 | const authorizedHandles = ["mvkaran", "andreagriffiths11", "pachicodes", "abhinavrajesh"]
18 | if(!authorizedHandles.includes(creator.toLowerCase())) {
19 | core.setFailed("User not authorized to deploy")
20 | }
21 | - name: Trigger build
22 | uses: benc-uk/workflow-dispatch@e2e5e9a103e331dad343f381a29e654aea3cf8fc #v1.2.4
23 | with:
24 | repo: ${{ secrets.GITHUBBRASIL_REPO_NWO }}
25 | workflow: Trigger build when public PR is merged
26 | token: ${{ secrets.PAT }}
27 | inputs: '{"pr_number": "${{ github.event.issue.number }}", "creator_username": "${{ github.event.issue.user.login }}" }'
28 |
--------------------------------------------------------------------------------
/website/data/open-source/maintainers.yml:
--------------------------------------------------------------------------------
1 | ---
2 | Bahia:
3 | - daltonmenezes
4 | Distrito Federal:
5 | - cezarsa
6 | Espírito Santo:
7 | - fazedordecodigo
8 | Mato Grosso:
9 | - leogregianin
10 | Minas Gerais:
11 | - zecruel
12 | Paraíba:
13 | - OtacilioN
14 | Paraná:
15 | - ellisonleao
16 | - RenanTashiro
17 | - guiseek
18 | - MauricioFauth
19 | Pernambuco:
20 | - ErickSimoes
21 | Rio de Janeiro:
22 | - roberto-ieru
23 | - raphamorim
24 | - heynemann
25 | - diegolmello
26 | Rio Grande do Sul:
27 | - fabriziomello
28 | - rodrigok
29 | - hishamhm
30 | - cpanato
31 | - Camilotk
32 | - mateusrovedaa
33 | - igorvinoski
34 | # Rondônia:
35 | # Roraima:
36 | Santa Catarina:
37 | - andreynering
38 | - eminetto
39 | - knabben
40 | São Paulo:
41 | - avelino
42 | - felipefialho
43 | - iuricode
44 | - yagasaki7k
45 | - RafaelGSS
46 | - htrgouvea
47 | - giggio
48 | - rsaz
49 | - vinijmoura
50 | - rikatz
51 | - ericdallo
52 | - andrebaltieri
53 | - IvanildoBarauna
54 | - abehidek
55 | - viniciusventura29
56 | - italojs
57 | - wellwelwel
58 | Joinville:
59 | - andreynering
60 | Porto Alegre:
61 | - hishamhm
62 | - cpanato
63 | Três Coroas - RS:
64 | - rodrigok
65 | Igrejinha - RS:
66 | - diegolmello
67 | Florianópolis - SC:
68 | - eminetto
69 | - knabben
70 | Tocantins:
71 | - luzfcb
72 | Morando fora do Brasil:
73 | - josevalim
74 | - zenorocha
75 | - camilamaia
76 | - erikaheidi
77 | - badtuxx
78 | - caarlos0
79 | - gustavohenke
80 | - cjpatoilo
81 | - rochacbruno
82 | - jonatas
83 | - filipedeschamps
84 | - gustavofreze
85 | - stormqueen1990
86 | - juliano
87 | - arthurfiorette
88 | - vsouza
89 | - lpereira
90 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
2 | ### Por favor, confirme se este pull request atende aos seguintes requisitos:
3 |
4 | - [ ] Segui as diretrizes de contribuição: https://github.com/github/brasil/blob/main/CONTRIBUTING.md.
5 |
6 | ### Qual alteração você está propondo?
7 |
8 | - [ ] Adicionar/atualizar projeto(s) de código aberto
9 | - [ ] Adicionar/atualizar mantenedor(es)
10 |
11 | ---
12 |
13 |
14 | ### Adicionar/atualizar projeto(s) de código aberto
15 |
16 | - [ ] O projeto foi construído no Brasil ou recebe contribuições significativas do Brasil
17 | - [ ] O projeto possui pelo menos 100 pessoas marcando como favorito (stargazers)
18 |
19 | **Por que este projeto de código aberto deveria ser apresentado?**
20 |
21 | > Por favor, substitua esta linha por uma explicação do motivo pelo qual você acredita que essas alterações devem ser feitas.
22 |
23 |
24 | ### Adicionar/atualizar mantenedor(es)
25 |
26 | - [ ] A localização do mantenedor em seu perfil do GitHub indica que é no Brasil
27 | - [ ] O mantenedor aprovou que este PR seja incluído no site
28 |
29 | **Quais projeto(s) de código aberto o indivíduo mantém?**
30 |
31 | > Por favor, substitua esta linha por URLs do GitHub para os projetos que o(s) indivíduo(s) mantém.
32 |
33 |
34 | ### Algo que não se encaixa perfeitamente nas opções acima
35 |
36 | - [ ] Minhas edições sugeridas não se referem a uma página existente, ou pelo menos não a uma única página
37 |
38 | > Por favor, substitua esta linha por uma explicação das alterações propostas.
39 |
40 | ---
41 |
42 | **Obs: fecharemos o seu PR sem comentários se você não marcar as caixas acima e fornecer TODAS as informações solicitadas.**
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | Obrigado por ajudar a tornar o GitHub seguro para todos.
2 |
3 | # Segurança
4 |
5 | O GitHub leva a segurança de nossos produtos e serviços de software a sério, incluindo todos os repositórios de código aberto gerenciados por meio de nossas organizações do GitHub, como [GitHub](https://github.com/GitHub).
6 |
7 | Embora os repositórios de código aberto estejam fora do escopo de nosso programa de recompensa por bugs e, portanto, não sejam elegíveis para recompensas, garantiremos que sua descoberta seja encaminhada aos mantenedores apropriados para solução.
8 |
9 | ## Relatando Problemas de Segurança
10 |
11 | Se você acredita ter encontrado uma vulnerabilidade de segurança em qualquer repositório de propriedade do GitHub, por favor, nos informe através de uma divulgação coordenada.
12 |
13 | **Por favor, não relate vulnerabilidades de segurança por meio de issues públicas, discussões ou pull requests no GitHub.**
14 |
15 | Em vez disso, envie um e-mail para opensource-security[@]github.com.
16 |
17 | Por favor, inclua o máximo de informações listadas abaixo para nos ajudar a entender e resolver melhor o problema:
18 |
19 | * O tipo de problema (por exemplo, estouro de buffer, injeção de SQL ou script entre sites)
20 | * Caminhos completos dos arquivos de origem relacionados à manifestação do problema
21 | * A localização do código fonte afetado (tag/branch/commit ou URL direto)
22 | * Qualquer configuração especial necessária para reproduzir o problema
23 | * Instruções passo a passo para reproduzir o problema
24 | * Código de prova de conceito ou de exploração (se possível)
25 | * Impacto do problema, incluindo como um atacante poderia explorá-lo
26 |
27 | Essas informações nos ajudarão a analisar seu relatório com mais rapidez.
28 |
29 | ## Política
30 |
31 | Consulte a [Política de Safe Harbor do GitHub](https://docs.github.com/en/github/site-policy/github-bug-bounty-program-legal-safe-harbor#1-safe-harbor-terms)
--------------------------------------------------------------------------------
/.github/workflows/website-pr-validation.yml:
--------------------------------------------------------------------------------
1 | name: Validate PR for githubbrasil.com website
2 | on:
3 | pull_request:
4 | branches:
5 | - main
6 | paths:
7 | - "website/**"
8 |
9 | jobs:
10 | lint:
11 | runs-on: ubuntu-latest
12 | permissions: read-all
13 | steps:
14 | - name: Checkout repo
15 | uses: actions/checkout@v3
16 | - name: Check format of yaml file
17 | id: yaml-lint
18 | uses: ibiqlik/action-yamllint@2576378a8e339169678f9939646ee3ee325e845c #v3.1.1
19 | with:
20 | strict: true
21 | file_or_dir: website/**/*.yml
22 | config_data: |
23 | rules:
24 | empty-lines:
25 | max: 1
26 | hyphens:
27 | max-spaces-after: 1
28 | indentation:
29 | spaces: consistent
30 | indent-sequences: true
31 | check-multi-line-strings: false
32 | new-lines:
33 | type: unix
34 | colons:
35 | max-spaces-before: 0
36 | max-spaces-after: 1
37 | empty-values:
38 | forbid-in-block-mappings: true
39 | key-duplicates: false
40 | format: github
41 | validate:
42 | runs-on: ubuntu-latest
43 | needs: lint
44 | permissions:
45 | contents: read
46 | pull-requests: write
47 | actions: write
48 | steps:
49 | - name: Checkout fork
50 | uses: actions/checkout@v3
51 | - name: Checkout main
52 | uses: actions/checkout@v3
53 | with:
54 | ref: main
55 | repository: ${{ secrets.BRAZIL_REPO_NWO }}
56 | path: ./brazil-main
57 | - uses: ruby/setup-ruby@4a9ddd6f338a97768b8006bf671dfbad383215f4 #v1.207.0
58 | with:
59 | ruby-version: 3.0.0
60 | - name: Validate PR
61 | run: |
62 | gem install octokit safe_yaml
63 | ruby brazil-main/script/website-pr-validation.rb
64 | env:
65 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
66 | BRAZIL_REPO_NWO: ${{ secrets.BRAZIL_REPO_NWO }}
67 |
--------------------------------------------------------------------------------
/website/data/open-source/projects.yml:
--------------------------------------------------------------------------------
1 | ---
2 | Business Software:
3 | - tsuru/tsuru
4 | - RocketChat/Rocket.Chat
5 | - RocketChat/Rocket.Chat.ReactNative
6 |
7 | Consumer Software:
8 | - maykbrito/mini-video-me
9 | - clappr/clappr
10 | - devhubapp/devhub
11 | - raphamorim/rio
12 |
13 | Data Science & Engineering:
14 | - BrasilAPI/BrasilAPI
15 | - zecruel/CadZinho
16 |
17 | Developer Productivity & Tools:
18 | - editor-bootstrap/vim-bootstrap
19 | - glorious-codes/glorious-demo
20 | - fsouza/go-dockerclient
21 | - kazzkiq/balloon.css
22 | - lpereira/lwan
23 | - dynaconf/dynaconf
24 | - open-cli-tools/concurrently
25 | - goreleaser/goreleaser
26 | - htop-dev/htop
27 | - heartcombo/devise
28 | - ellisonleao/magictools
29 | - go-task/task
30 | - dracula/dracula-theme
31 | - OtacilioN/Brasilino
32 | - brazilian-utils/brazilian-utils
33 | - shellhub-io/shellhub
34 | - raphamorim/react-ape
35 | - avelino/awesome-go
36 | - ujizin/camposer
37 | - backend-br/vagas
38 | - backend-br/desafios
39 | - daltonmenezes/aura-theme
40 | - daltonmenezes/electron-app
41 | - kubepug/kubepug
42 | - TadaSoftware/PyNFe
43 | - clojure-lsp/clojure-lsp
44 | - vsouza/docker-SQS-local
45 |
46 | DevOps:
47 | - rapha-borges/oke-free
48 |
49 | Observability:
50 | - badtuxx/giropops-monitoring
51 |
52 | Machine Learning:
53 | - nubank/fklearn
54 |
55 | Observability:
56 | - badtuxx/giropops-monitoring
57 |
58 | Frameworks:
59 | - expressots/expressots
60 | - botcity-dev/botcity-framework-core-python
61 |
62 | Libraries:
63 | - giggio/node-chromedriver
64 | - ErickSimoes/Ultrasonic
65 | - leandromoreira/redlock-rb
66 | - globocom/m3u8
67 | - zio/zio-quill
68 | - brazilian-utils/brutils-python
69 | - andrebaltieri/Flunt
70 | - arthurfiorette/axios-cache-interceptor
71 | - kitajs/html
72 |
73 | GitHub Power-Ups:
74 | - iuricode/readme-template
75 | - george-gca/multi-language-al-folio
76 |
77 | Learning & Education:
78 | - leandromoreira/ffmpeg-libav-tutorial
79 | - CollabCodeTech/backend-challenges
80 | - badtuxx/DescomplicandoKubernetes
81 | - badtuxx/DescomplicandoDocker
82 | - Universidade-Livre/ciencia-da-computacao
83 | - felipefialho/frontend-challenges
84 | - flaviojmendes/trilhainfo
85 | - gustavofreze/kotlin4noobs
86 | - OtacilioN/awesome-hacktoberfest
87 | - ReciHub/FunnyAlgorithms
88 | - leandromoreira/digital_video_introduction
89 | - leandromoreira/cdn-up-and-running
90 | - leandromoreira/linux-network-performance-parameters
91 | - levxyca/diciotech
92 |
93 | Machine Learning:
94 | - nubank/fklearn
95 |
96 | Observability:
97 | - badtuxx/giropops-monitoring
98 |
99 | Software Testing:
100 | - scanapi/scanapi
101 | - wellwelwel/poku
102 |
103 | UI/UX:
104 | - milligram/milligram
105 |
106 | Security & Privacy:
107 | - htrgouvea/nipe
108 | - undistro/zora
109 | - halencarjunior/BugBuntu
110 |
111 | Azure DevOps Tools:
112 | - vinijmoura/Azure-DevOps
113 |
114 | Awesome Lists:
115 | - vsouza/awesome-ios
116 |
--------------------------------------------------------------------------------
/script/website-pr-validation.rb:
--------------------------------------------------------------------------------
1 | require "rubygems"
2 | require "octokit"
3 | require "json"
4 | require "logger"
5 | require "safe_yaml"
6 |
7 | CLIENT = Octokit::Client.new(:access_token => ENV["GITHUB_TOKEN"])
8 | REPOSITORY= ENV["BRAZIL_REPO_NWO"]
9 | BASE_PATH = "website/data/open-source"
10 | @logger = Logger.new(STDOUT)
11 |
12 | # Flag for checking if the issues are present
13 | $ISSUES_PRESENT = false
14 | # Array to store maintainers with failed validations in {BASE_PATH}/maintainers.yml file
15 | MAINTAINERS_FAILED_VALIDATION = []
16 | # Array to store projects with failed validation in {BASE_PATH}/projects.yml file
17 | OSSPROJECTS_FAILED_VALIDATION = []
18 |
19 | # Function to sleep the script for sometime when the API limit is hit
20 | def waitTillLimitReset
21 | timeTillReset = CLIENT.rate_limit.resets_in + 5
22 | @logger.info("API limit reached while fetching... Sleeping for #{timeTillReset} seconds 😴 brb")
23 | sleep(timeTillReset)
24 | end
25 |
26 | # Function to prepare the job summary to be added to the PR if it has any issues
27 | # Params:
28 | # category: Category of the issue (maintainers/ossProjects/socialGoodProjects)
29 | # issues: Array of issues present for the PR
30 | # title: Name of the project/maintainer
31 | def prepareJobSummary(category, issues, title)
32 | $ISSUES_PRESENT = true
33 | body = {
34 | :title => title,
35 | :issues => issues
36 | }
37 | if category == "maintainers"
38 | MAINTAINERS_FAILED_VALIDATION.push(body)
39 | elsif category == "ossProjects"
40 | OSSPROJECTS_FAILED_VALIDATION.push(body)
41 | end
42 | end
43 |
44 | # Function to create job summary
45 | def createJobSummary
46 | comment = "PR cannot be merged due to following issues:\n"
47 | if MAINTAINERS_FAILED_VALIDATION.length() != 0
48 | comment += "- Maintainers\n"
49 | for issueObject in MAINTAINERS_FAILED_VALIDATION do
50 | comment += "\t- `#{issueObject[:title]}`\n"
51 | for issue in issueObject[:issues] do
52 | comment += "\t\t- #{issue}\n"
53 | end
54 | end
55 | end
56 | if OSSPROJECTS_FAILED_VALIDATION.length() != 0
57 | comment += "- OSS Projects\n"
58 | for issueObject in OSSPROJECTS_FAILED_VALIDATION do
59 | comment += "\t- `#{issueObject[:title]}`\n"
60 | for issue in issueObject[:issues] do
61 | comment += "\t\t- #{issue}\n"
62 | end
63 | end
64 | end
65 | @logger.info("Summary: #{comment}")
66 | File.write(ENV["GITHUB_STEP_SUMMARY"], comment)
67 | end
68 |
69 | # Function for fetching the details of a maintainer
70 | # Params:
71 | # maintainer: Name of the maintainer whos details need be fetched
72 | # Returns:
73 | # maintainer object
74 | def getMaintainer(maintainer)
75 | data = CLIENT.user(maintainer)
76 | return data
77 | end
78 |
79 | # Function for validating if the maintainer is valid
80 | # Returns: Array of failed checks
81 | def validateMaintainer(data)
82 | fails = []
83 | # Check if the user has atleast 1 follower
84 | if data.followers < 1
85 | fails.push("Maintainer has less than 1 follower")
86 | end
87 | return fails
88 | end
89 |
90 | # Function for fetching the details of a project
91 | # Params:
92 | # projectName: Name of the project whos details need be fetched
93 | # Returns:
94 | # project object
95 | def getProject(projectName)
96 | data = CLIENT.repository(projectName)
97 | return data
98 | end
99 |
100 | # Function for validating if the project is valid
101 | # Returns: Array of failed checks
102 | def validateProject(data, isSocialGood = false)
103 | fails = []
104 | # Check if project is private
105 | if data.private
106 | fails.push("Project is either private or doesn't exist!")
107 | end
108 | # Check if project has license
109 | if data.license == nil
110 | fails.push("Project doesn't have a license")
111 | end
112 | # Check if project has atleast 100 stars
113 | if data.stargazers_count < 100 && !isSocialGood
114 | fails.push("Project has less than 100 stars")
115 | end
116 | return fails
117 | end
118 |
119 | # Function for fetching all the details of the maintainers
120 | # from the maintainers list at {BASE_PATH}/maintainers.yml
121 | # and check if the maintainers are valid or not
122 | def checkMaintainersData()
123 | maintainersList = JSON.parse(YAML.load(File.open("#{BASE_PATH}/maintainers.yml"), :safe => true).to_json)
124 | for city in maintainersList.keys do
125 | for maintainerName in maintainersList[city] do
126 | begin
127 | maintainer = getMaintainer(maintainerName)
128 | issues = validateMaintainer(maintainer)
129 | if issues.length() != 0
130 | prepareJobSummary("maintainers", issues, maintainerName)
131 | end
132 | rescue => e
133 | @logger.info("Error #{e.response_status}")
134 | if e.response_status == 403
135 | waitTillLimitReset()
136 | maintainer = getMaintainer(maintainerName)
137 | issues = validateMaintainer(maintainer)
138 | if issues.length() != 0
139 | prepareJobSummary("maintainers", issues, maintainerName)
140 | end
141 | else
142 | @logger.info("Error on maintainer: #{maintainerName}")
143 | prepareJobSummary("maintainers", ["User with username #{maintainerName} doesn't exist!"], maintainerName)
144 | end
145 | end
146 | end
147 | end
148 | end
149 |
150 | # Function for fetching all the details of the oss projects and social good projects
151 | # from the projects list at {BASE_PATH}/{fileName}
152 | # and check if the projects are valid or not
153 | # Params:
154 | # fileName:
155 | # - Indicates the file location of the list of projects present
156 | # - Values can be either "projects.yml" or "social-good-projects.yml"
157 | def checkProjectsData(fileName)
158 | projectsList = JSON.parse(YAML.load(File.open("#{BASE_PATH}/#{fileName}"), :safe => true).to_json)
159 | if fileName == "projects.yml"
160 | issueCategory = "ossProjects"
161 | end
162 | for category in projectsList.keys do
163 | if projectsList[category] == nil then
164 | prepareJobSummary(issueCategory, ["Each category should contain atleast 1 project."], "#{category} in #{fileName}")
165 | next
166 | end
167 | for projectName in projectsList[category] do
168 | begin
169 | project = getProject(projectName)
170 | issues = validateProject(project, false)
171 | if issues.length() != 0
172 | prepareJobSummary(issueCategory, issues, projectName)
173 | end
174 | rescue => e
175 | @logger.info("Error: #{e.response_status}")
176 | if e.response_status == 403
177 | waitTillLimitReset()
178 | project = getProject(projectName)
179 | issues = validateProject(project, false)
180 | if issues.length() != 0
181 | prepareJobSummary(issueCategory, issues, projectName)
182 | end
183 | else
184 | @logger.info("Error on project: #{projectName}")
185 | prepareJobSummary(issueCategory, ["Project #{projectName} is either private or doesn't exist!"], projectName)
186 | end
187 | end
188 | end
189 | end
190 | end
191 |
192 | @logger.info("-------------------------------")
193 | @logger.info("Checking Maintainers...")
194 | checkMaintainersData()
195 | @logger.info("Maintainers data checked")
196 | @logger.info("-------------------------------")
197 | @logger.info("Checking OSS Projects...")
198 | checkProjectsData("projects.yml")
199 | @logger.info("OSS Projects data checked")
200 | @logger.info("-------------------------------")
201 |
202 | if MAINTAINERS_FAILED_VALIDATION.length() != 0 || OSSPROJECTS_FAILED_VALIDATION.length() != 0
203 | @logger.info("Creating Comment")
204 | createJobSummary()
205 | exit(1)
206 | end
207 | @logger.info("-------------------------------")
208 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Welcome to GitHub Brasil contributing guide
2 |
3 | Read in Portuguese
5 |
6 | # Boas vindas ao guia de contribuição do GitHub Brasil
7 |
8 | Agradecemos por investir seu tempo em contribuir! As contribuições que você fizer no diretório `website` serão refletidas em [githubbrasil.com](https://githubbrasil.com) :sparkles:.
9 |
10 | Suas contribuições ajudarão a comunidade a descobrir informações valiosas.
11 |
12 | Leia nosso [Código de Conduta](./CODE_OF_CONDUCT.md) para manter nossa comunidade acessível e respeitável.
13 |
14 | ## Tipos de contribuição
15 |
16 | No momento, aceitamos contribuições apenas para conteúdos selecionados no [githubbrasil.com](https://githubbrasil.com).
17 | O conteúdo para isso está localizado na seção `website` desse repositório.
18 |
19 | ## Diretrizes
20 |
21 | O site githubbrasil.com destina-se a mostrar o ecossistema de código aberto no Brasil e ajudar a descobrir projetos e pessoas mantenedoras de código aberto.
22 |
23 | - Somente nomes de repositórios, categorias de projetos, usernames do GitHub de pessoas mantenedoras e a localização dessas pessoas podem ser editados. Outras informações, como stargazes, descrições, seguidores etc., são atualizadas periodicamente na API pública do GitHub.
24 | - Para novas pessoas mantenedoras adicionadas, revisões de RP são solicitadas dessas pessoas para aprovação a serem adicionadas ao site.
25 | - O local da pessoa mantenedor precisa corresponder ao local em seu perfil público do GitHub.
26 | - Por favor, preencha o modelo de pull request completamente. Se você não preencher o modelo, seu PR vai ser fechado.
27 | - Limite seu PR a atualizar uma página por vez. Para atualizações de pessoas mantenedoras, limite a 5 em um PR.
28 | - Embora adoraríamos mostrar o maior número possível de projetos e pessoas mantenedoras, também queremos manter o site valioso para todas as pessoas desenvolvedoras. A equipe do GitHub usará seu julgamento e discrição nas aprovações de PRs.
29 |
30 | ## Fazendo mudanças
31 |
32 | ### Fazer mudanças de UI
33 |
34 | Clique em **Edit this page** no topo de qualquer página que aceita contribuições.
35 | Isso vai te levar para um arquivo `.yml` onde você pode fazer suas mudanças e [criar um Pull Request](#pull-request) para review.
36 |
37 | ### Fazer mudanças no Codespace
38 |
39 | Você também pode faer mudanças usando o GitHub Codespaces.
40 | Para começar a usa-lo, veja "[Guia de início rápido do GitHub Codespaces](https://docs.github.com/pt/codespaces/getting-started/quickstart)".
41 |
42 | ### Fazer mudanças localmente
43 |
44 | 1. Faça o fork (bifurque) este repositório.
45 | - Usando GitHub Desktop:
46 | - [Introdução ao GitHub Desktop](https://docs.github.com/pt/desktop/installing-and-configuring-github-desktop/overview/getting-started-with-github-desktop) irá te ajudar a configurar o GitHub Desktop.
47 | - Quando a configuração estiver completa, você pode [criar um fork deste repo](https://docs.github.com/pt/desktop/contributing-and-collaborating-using-github-desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop)!
48 |
49 | - Usando a linha de comando:
50 | - [Crie um fork deste repo](https://docs.github.com/pt/get-started/quickstart/fork-a-repo) para que você possa fazer suas alterações sem afetar o projeto original até que estejam prontas para dar merge.
51 |
52 | 2. Crie uma branch de trabalho e comece suas mudanças!
53 |
54 | 3. Commite as alterações quando estiver contente com elas.
55 |
56 |
57 | ### Pull Request
58 |
59 | Quando você terminar suas modificações, crie um Pull Request, também conhecido como PR.
60 | - Preencha o modelo para que possamos revisar seu PR (não esqueça de preencher todos os campos).
61 | - Habilite a caixa "[Permitir edições de mantenedores](https://docs.github.com/pt/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork)" para que a branch possa ser atualizada para merge.
62 | Quando você submeter PR, alguém do time do GitHub vai avaliar sua proposta. Podemos fazer perguntas ou solicitar informações adicionais.
63 | - Nós podemos pedir para que mudanças sejam feitas antes de aceitar seu PR, usando [alterações sugeridas](https://docs.github.com/pt/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request) ou comentários na Pull Request. Você pode aplicar as alterações sugeridas diretamente por meio da UI. Você também pode fazer outras mudanças no seu fork e commitá-las na branch.
64 | - Conforme você atualiza seu PR e aplica as alterações, marque cada conversa como [resolvida](https://docs.github.com/pt/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request#resolver-conversas).
65 | - Se você tiver qualquer problema, de uma olhada nesse [git tutorial](https://github.com/skills/resolve-merge-conflicts) para te ajudar a resolver conflitos de merge e outros problemas.
66 |
67 | ### Seu PR foi aceito!
68 |
69 | Parabéns :tada::tada:! O time GitHub te agradece :sparkles:.
70 |
71 | As atualizações não aparecerão imediatamente depois do merge de seu PR. Colocamos essas alterações regularmente em githubbrasil.com.
72 |
73 | Read in portuguese: Código de Conduta de Colaboração
5 |
6 | # Código de Conduta de Colaboração
7 |
8 | ## Nossa promessa
9 |
10 | Como pessoas participantes, colaboradoras e líderes, nós nos comprometemos a fazer com que a participação em nossa comunidade seja uma experiência livre de assédio para todas as pessoas, independentemente de idade, tamanho do corpo, deficiência aparente ou não aparente, etnia, características sexuais, identidade ou expressão de gênero, nível de experiência, educação, situação sócio-econômica, nacionalidade, aparência pessoal, raça, religião ou identidade e orientação sexuais.
11 |
12 | Comprometemo-nos a agir e interagir de maneiras que contribuam para uma comunidade aberta, acolhedora, diversificada, inclusiva e saudável.
13 |
14 | ## Nossos padrões
15 |
16 | Exemplos de comportamentos que contribuem para criar um ambiente positivo para a nossa comunidade incluem:
17 |
18 | * Demonstrar empatia e bondade com as outras pessoas
19 | * Respeitar opiniões, pontos de vista e experiências contrárias
20 | * Dar e receber feedbacks construtivos de maneira respeitosa
21 | * Assumir responsabilidade, pedir desculpas às pessoas afetadas por nossos erros e aprender com a experiência
22 | * Focar no que é melhor não só para nós individualmente, mas para a comunidade em geral
23 |
24 | Exemplos de comportamentos inaceitáveis incluem:
25 |
26 | * Uso de linguagem ou imagens sexualizadas, bem como o assédio sexual ou de qualquer natureza
27 | * Comentários insultuosos/depreciativos e ataques pessoais ou políticos (*Trolling*)
28 | * Assédio público ou privado
29 | * Publicar informações particulares de outras pessoas, como um endereço de e-mail ou endereço físico, sem a permissão explícita delas
30 | * Outras condutas que são normalmente consideradas inapropriadas em um ambiente profissional
31 |
32 | ## Aplicação das nossas responsabilidades
33 |
34 | A liderança da comunidade é responsável por esclarecer e aplicar nossos padrões de comportamento aceitáveis e tomará ações corretivas apropriadas e justas em resposta a qualquer comportamento que considerar impróprio, ameaçador, ofensivo ou problemático.
35 |
36 | A liderança da comunidade tem o direito e a responsabilidade de remover, editar ou rejeitar comentários, commits, códigos, edições na wiki, erros e outras contribuições que não estão alinhadas com este Código de Conduta e irá comunicar as razões por trás das decisões da moderação quando for apropriado.
37 |
38 | ## Escopo
39 |
40 | Este Código de Conduta se aplica dentro de todos os espaços da comunidade e também se aplica quando uma pessoa estiver representando oficialmente a comunidade em espaços públicos.
41 | Exemplos de representação da nossa comunidade incluem usar um endereço de e-mail oficial, postar em contas oficiais de mídias sociais ou atuar como uma pessoa indicada como representante em um evento online ou offline.
42 |
43 | ## Aplicação
44 |
45 | Ocorrências de comportamentos abusivos, de assédio ou que sejam inaceitáveis por qualquer outro motivo poderão ser reportadas para a liderança da comunidade, responsável pela aplicação, via contato [INSERIR MÉTODO DE CONTATO].
46 |
47 | Todas as reclamações serão revisadas e investigadas imediatamente e de maneira justa.
48 |
49 | A liderança da comunidade tem a obrigação de respeitar a privacidade e a segurança de quem reportar qualquer incidente.
50 |
51 | ## Diretrizes de aplicação
52 |
53 | A liderança da comunidade seguirá estas Diretrizes de Impacto na Comunidade para determinar as consequências de qualquer ação que considerar violadora deste Código de Conduta:
54 |
55 | ### 1. Ação Corretiva
56 |
57 | **Impacto na comunidade**: Uso de linguagem imprópria ou outro comportamento considerado anti-profissional ou repudiado pela comunidade.
58 |
59 | **Consequência**: Aviso escrito e privado da liderança da comunidade, esclarecendo a natureza da violação e com a explicação do motivo pelo qual o comportamento era impróprio. Um pedido de desculpas público poderá ser solicitado.
60 |
61 | ### 2. Advertência
62 |
63 | **Impacto na comunidade**: Violação por meio de um incidente único ou atitudes repetidas.
64 |
65 | **Consequência**: Advertência com consequências para comportamento repetido. Não poderá haver interações com as pessoas envolvidas, incluindo interações não solicitadas com as pessoas que estiverem aplicando o Código de Conduta, por um período determinado. Isto inclui evitar interações em espaços da comunidade, bem como canais externos como as mídias sociais. A violação destes termos pode levar a um banimento temporário ou permanente.
66 |
67 | ### 3. Banimento Temporário
68 |
69 | **Impacto na comunidade**: Violação grave dos padrões da comunidade, incluindo a persistência do comportamento impróprio.
70 |
71 | **Consequência**: Banimento temporário de qualquer tipo de interação ou comunicação pública com a comunidade por um determinado período. Estarão proibidas as interações públicas ou privadas com as pessoas envolvidas, incluindo interações não solicitadas com as pessoas que estiverem aplicando o Código de Conduta. A violação destes termos pode resultar em um banimento permanente.
72 |
73 | ### 4. Banimento Permanente
74 |
75 | **Impacto na comunidade**: Demonstrar um padrão na violação das normas da comunidade, incluindo a persistência do comportamento impróprio, assédio a uma pessoa ou agressão ou depreciação a classes de pessoas.
76 |
77 | **Consequência**: Banimento permanente de qualquer tipo de interação pública dentro da comunidade.
78 |
79 | ## Atribuição
80 |
81 | Este Código de Conduta é adaptado do [Contributor Covenant][homepage],
82 | versão 2.0, disponível em
83 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
84 |
85 | As Diretrizes de Impacto na Comunidade foram inspiradas pela [Aplicação do código de conduta Mozilla](https://github.com/mozilla/diversity).
86 |
87 | [homepage]: https://www.contributor-covenant.org
88 |
89 | Para obter respostas a perguntas comuns sobre este código de conduta, veja a página de Perguntas Frequentes (*FAQ*) em
90 | https://www.contributor-covenant.org/faq. Traduções estão disponíveis em
91 | https://www.contributor-covenant.org/translations.
92 |
93 |
2 |
3 |