Closed gabrielbdornas closed 1 year ago
Esta resposta stackoverflow me ajudou a entender como utiliar jq
para acessar valores de um dicionário utilizando shell[^1].
venv) ➜ new-dataset-template git:(main) ✗ echo '{"foo": 1, "foo2": 2}' | jq .
{
"foo": 1,
"foo2": 2
}
[^1]: Utlizei `jq --help para visualizar as opções disponíveis.
O endpoint https://api.github.com/repos/OWNER/REPO
dá acesso a informações de um repo como:
// 20230828140257
// https://api.github.com/repos/transparencia-mg/bens-tombados
{
"id": 666504118,
"node_id": "R_kgDOJ7oLtg",
"name": "bens-tombados",
"full_name": "transparencia-mg/bens-tombados",
"private": false,
"owner": {
"login": "transparencia-mg",
"id": 52837282,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjUyODM3Mjgy",
"avatar_url": "https://avatars.githubusercontent.com/u/52837282?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/transparencia-mg",
"html_url": "https://github.com/transparencia-mg",
"followers_url": "https://api.github.com/users/transparencia-mg/followers",
"following_url": "https://api.github.com/users/transparencia-mg/following{/other_user}",
"gists_url": "https://api.github.com/users/transparencia-mg/gists{/gist_id}",
"starred_url": "https://api.github.com/users/transparencia-mg/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/transparencia-mg/subscriptions",
"organizations_url": "https://api.github.com/users/transparencia-mg/orgs",
"repos_url": "https://api.github.com/users/transparencia-mg/repos",
"events_url": "https://api.github.com/users/transparencia-mg/events{/privacy}",
"received_events_url": "https://api.github.com/users/transparencia-mg/received_events",
"type": "Organization",
"site_admin": false
},
,
"html_url": "https://github.com/transparencia-mg/bens-tombados",
"description": "conjunto em homologação",
"fork": true,
...
}
Poderia utilizá-lo para buscara informação fork
do repositório responsável pela abertura do PR, seguindo a idéia utilizada neste actions reutilizável:
jobs:
reusable_job:
name: Add project to issue
runs-on: ubuntu-latest
steps:
- name: See repo owner/name
id: split
env:
OWNER_NAME: ${{ github.repository }}
run: echo "::set-output name=owner::${OWNER_NAME%/*}"
- name: Call github api
uses: octokit/request-action@v2.x
id: get_account_info
with:
route: GET /users/{owner}
owner: ${{ steps.split.outputs.owner }}
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
- name: Get repo type
id: get_repo_type
run: |
if [ ${{ fromJson(steps.get_account_info.outputs.data).type }} == 'Organization' ]
then
echo "::set-output name=type::orgs"
else
echo "::set-output name=type::users"
fi
Mas como dito no início do issue demos primeiro que avaliar se esta ação é realmente o melhor caminho.
Independente da pergunta feita na abertura do issue sobre ser esta uma boa ideia, alguns testes foram feitos deste commit até este commit, mas nenhum funcionou,
@gabrielbdornas para efeito de segurança, como conversamos, pensar em incluir uma trava para o merge na main ser dependente da aprovação de um PR de uma única pessoa
@Andrelamor me relatou o seguinte problema:
Criou uma branch em um repositório fork deste
new-dataset_template
. Abriu um PR que deveria ter sido feito no repositório fork, mas por engano o PR foi aberto para este reponew-dataset_template
. Aprovou o PR e, portanto, incluiu códigos neste repositório por engano.Esta situação pode acontecer com muita facilidade, já que durante o processo de criação de PR não é muito intuitivo ver se o PR está sendo aberto para o repositório forkado (orginal) e não para o fork.
Esta sugestão stackoverflow poderia ser a base para a solução do problema. Criaríamos um actions para verificar se o PR está vindo de um repositório fork ou do original[^1]:
Pergunto:
wontfix
e fechá-lo?[^1]: No exemplo dado seria necessário modificar o
if [ ${{ github.head_ref }} != "dev" ] && [ ${{ github.base_ref }} == "main" ]; then
para verificar se o PR foi aberto de um fork ao invés de comparar o nome das branchs.