5가지 자동 개발 도구
23831 단어 devopsgithubproductivity
이 글의 생각은 몇 가지 도구와 집적을 소개하는 것이다. 이런 도구와 집적은 우리의 개발 생활을 더욱 쉽게 한다.
그 중 대부분은 당신의 업무 프로세스에 쉽게 실현될 수 있지만, 문제가 있는 업무 프로세스에 대해서는 이 도구를 위한 확장된 소개 버전만 작성할 수 있습니다.
1. 믿을 만하다
자동 종속성 업데이트
Releadot 는 종속 관계가 안전하고 최신형인지 확인하기 위해 끌어오기 요청을 만듭니다.
Dependabot은 매우 간단하다. 그들의 묘어는 그것의 기능을 명확하게 설명했다.우리는 Github acquired it보다 조금 일찍 그것을 사용하기 시작했다.
주요 원인은 현재 우리 팀이 전단 부서를 인수할 때 유행이 지난 의존항이 많기 때문이다. 우리는 이러한 의존항을 갱신하고 최신을 유지하기를 희망한다.우리는 믿음직한 약속을 찾아 우리 프로젝트에 추가하고 마력을 발휘하도록 했다.
지금은 원래 Github의 일부이기 때문에 이전보다 추가하기가 더 쉽다.check outRelianTot를 어떻게 설정하는지 선택할 수 있지만, 최종적으로
dependabot.yml
폴더에서 .github
을 찾을 수 있습니다.우리의 것은 이렇다.
version: 2
updates:
- package-ecosystem: "npm" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "daily"
open-pull-requests-limit: 2
commit-message:
prefix: "BleedingEdge"
기본 설정과 유일하게 다른 것은 다음과 같습니다.이 글을 써서 저는 로봇을 주요 버전, 부차적인 버전 또는 패치 버전, 기능 was requested in 2018에서만 PR을 열고 몇 달 전에 발표할 수 있는지 알고 싶습니다. 현재 선택한 SemVer 업데이트를 무시할 수 있습니다.자세한 내용은 GitHub's blog post을 참조하십시오.
2. 자동 할당
끌어오기 요청을 열 때 검토자/할당자를 추가하여 요청을 끌어옵니다.
따라서 요청을 열었습니다. 최소 두 개의 승인이 필요하고 요청에 검토자를 추가해야 합니다.매번
일은 명백하니 로봇이 하도록 하자.
설정은 간단합니다. probot.github.io/apps/auto-assign으로 돌아가서 Github에 추가 버튼을 누르면 수동으로 심사자를 추가할 염려가 없습니다!
Relateot과 마찬가지로
auto_assing.yml
파일이 제공됩니다.# Set to true to add reviewers to pull requests
addReviewers: true
# Set to true to add assignees to pull requests
addAssignees: false
# A list of reviewers to be added to pull requests (GitHub user name)
reviewers:
- teammember1
- teammember2
- teammember3
- ...
# A number of reviewers added to the pull request
# Set 0 to add all the reviewers (default: 0)
numberOfReviewers: 0
# A list of keywords to be skipped the process that add reviewers if pull requests include it
skipKeywords:
- BleedingEdge
우리가 있는 이곳에는 심상치 않은 것이 없다.skipKeywords 옵션과 BleedingEdge 키워드를 사용하고 있습니다. 요청한 모든 접두사를 기억하고 있다면 바로 이것입니다.우리는 인출 요청을 처리하는 방식이 좀 다르기 때문에 모든 심사자들이 이 요청을 부담하게 하고 싶지 않다.드래그 요청이 열리면 로봇이 시작되고 심사 요청 타임라인에서 로봇을 볼 수 있습니다.
Github를 사용하여 코드 검토 할당에 대한 기본 설정을 시도할 수도 있습니다.팀 페이지에 들어가서 오른쪽 상단의 클릭 설정에서 코드 심사 임무 옵션 카드를 찾을 수 있습니다.우리는 해 보았지만 성공하지 못했다.
3. 합병 동결
합병과 배치를 막는 코드 동결 도구
병합 동결을 추가하는 이유는 다음과 같은 간단한 문제에서 비롯됩니다.
Can you tell all the developers to stop merging since we are starting regression?
우리는 우리 팀의 채널에서 모든 사람들이 제때에 정보를 읽을 수 있기를 바란다고 발표할 수 있다.또는 QA팀이 슬랙에 명령을 내리고 저장소에 통합된 데이터를 동결/동결해제할 수 있는 도구를 통합할 수 있습니다.Merge Freeze 구조하러 가세요.
마찬가지로 설치는 그리 복잡하지 않다.우리는 합병 동결이 부족한 것이 대량 동결 능력이라는 것을 발견했다.우리가 몇 건의 환매 협의를 동결해야 할 때, 그것은 잘 작동한다.그러나 저장소 수가 10개 이상으로 늘어나면 수동으로 명령을 10번 이상 입력합니다..알았어.
이를 위해 Slack Apps과 AWS Lambda을 사용했습니다.
작업 영역에 두 개의 슬래시 명령이 있는 Deployment라는 맞춤형 슬랙 프로그램을 만들었습니다:
/freeze_all
과 /unfreeze_all
.두 명령 모두 요청 URL을 Lambda URL로 설정하고 동결 값을 쿼리 매개 변수로 전달합니다. ?freeze=true | false
.Slack에서 다음과 같이 사용합니다.
병합 동결 도구는 추가된 각 저장소에 대해 저장소를 동결하거나 동결해제할 수 있는 API 끝점을 공개합니다.따라서 Lambda는 MergeFreeze가 제공하는 모든 단점에 POST 요청을 보내는 것이 매우 간단합니다.
const https = require('https');
exports.handler = async (event) => {
const freezeValue = getFreezeValue(event);
if (!freezeValue) {
return {
statusCode: 400,
body: JSON.stringify('BOOM! You need to provide a freeze value as a query param, either true or false'),
};
}
const userName = getUserName(event)
const baseOptions = {
hostname: 'mergefreeze.com',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': 0,
},
};
const appOneOptions = {
path: `/api/branches/your-organization/your-repo/main/?access_token=${process.env.ACCESS_TOKEN}&frozen=${freezeValue}&user_name=${userName}`,
...baseOptions,
};
...
/** Removed the rest of declaration to keep the preview short */
await Promise.all([
doRequest(appOneOptions),
...
doRequest(appElevenOptions),
]);
console.log("I'm done with all your promises!");
// Text that gets return to Slack that is only visible to the person entering the command
return {
statusCode: 200,
body: JSON.stringify('You have such power!!!'),
};
function doRequest(options) {
return new Promise((resolve, reject) => {
const req = https.request(options, (res) => {
res.setEncoding('utf8');
let responseBody = '';
res.on('data', (chunk) => responseBody += chunk);
res.on('end', () => resolve(responseBody));
});
req.on('error', (err) => reject(err));
req.end();
});
}
function getFreezeValue(event) {
let freezeQueryString;
let freeze;
if (event && event.queryStringParameters && event.queryStringParameters.freeze) {
freezeQueryString = event.queryStringParameters.freeze;
}
if (freezeQueryString === 'true' || freezeQueryString === 'false') {
freeze = freezeQueryString;
}
return freeze;
}
function getUserName(event) {
const bodyQueryParams = new URLSearchParams(event.body);
return bodyQueryParams.get('user_name') || 'Web API';
}
};
명령을 입력하면 MergeFreeze에 동결 또는 동결된 모든 재구매가 나열됩니다. Slack의 확인 메시지가 표시되어 근무일이 더욱 좋아집니다!복귀가 완료된 후 모든 것이 생산 환경으로 미뤄지고 스모그 테스트를 진행하자 수석 QA는
unfreeze_all
명령을 내리고 생명은 계속된다.4. 하스키
현대 로컬 Git 갈고리는 그것을 간단하게 한다
Google은 Jira를 Google의 업무 관리 도구로 사용하기 때문에, 질문을 볼 때 개발 패널과 VScodes를 이용하여 확장할 수 있도록 티켓 ID를 Google 지점 이름과 제출 메시지에 미리 추가해야 합니다.
Jira 티켓 개발 팀:
이것은 분기를 만들 때마다 Jira 문제 ID를 포함해야 한다는 것을 의미합니다. 예를 들어task-ND-123-add-authentication입니다.그 자체가 큰 문제는 아니었다. 왜냐하면 그것은 곧 습관이 되었기 때문이다.그러나 PIA는 모든 메시지를 제출하기 전에 추가된 것이다.1차 자동화는git
prepare-commit-message
갈고리를 로컬 기계에 설치할 뿐이지만 팀 규모가 커지면서 우리는Husky가 제공하는 더 좋은 해결 방안이 필요합니다!Husky과 jira-prepare-commit-msg의 결합은 다음과 같은 이점을 제공합니다.
...
"private": true,
"husky": {
"hooks": {
"prepare-commit-msg": "jira-prepare-commit-msg"
}
},
"jira-prepare-commit-msg": {
"messagePattern": "$J $M",
"jiraTicketPattern": "(\\w+-\\w+-\\d+)"
},
"dependencies": {
...
"devDependencies": {
"husky": "^4.3.8",
"jira-prepare-commit-msg": "^1.5.2",
...
JIRA 티켓 ID는git 분기 이름에서 가져옵니다.현재, commit -m "Fixing a typo"
을 작성하기만 하면,task-ND-123 - 타자 오류를 복구하는 것처럼 보이는 메시지가 전송됩니다.지사의 이름이 올바르게 지정되지 않은 경우 예를 들어 Jira 티켓 ID가 누락되면 오류가 발생합니다.
my-application git:(main) ✗ git commit -m "Add authentication methods"
husky > prepare-commit-msg (node v14.15.0)
JIRA prepare commit msg > start
JIRA prepare commit msg > Error: The JIRA ticket ID not found
JIRA prepare commit msg > done
이것은 매우 좋다. 모든 것이 package.json
에 설치되어 있기 때문에 새로운 개발자가 npm i
을 실행할 것이다. 그녀/그는 거의 준비가 되어 있어 수동으로 갈고리를 설정할 필요가 없다.하지만 메시지를 제출하는 Jira Ticket ID와 GitLens의 결합이야말로 정말 유용한 부분이다.
GitLens 주석:
여러 가지 이유로 코드 변경과 관련된 Jira 문제를 열고 읽어야 하는 경우가 많습니다.전체 코드 라이브러리에서 마우스를 클릭할 때마다 티켓 ID가 있기 때문에 우리는 많은 시간을 절약할 수 있다.(브라우저에서 열기도 쉽다. Jira ID를.../browse/+ND-123에 추가하면 https://your-organization.atlassian.net/browse/ND-123)
GitLens는 매우 멋진 도구입니다. 저는 개인적으로 매일 그것을 사용합니다.Git 주석과 코드 렌즈를 통해 코드 작성자의 신분을 한눈에 볼 수 있습니다.또한 과거 제출을 보기 쉽게 과거로 돌아갈 수 있습니다. 이것도 유용합니다.
5. 요청한 계획 알림 끌어오기
정기적인 알림은 팀이 가장 중요한 심사 요청에 관심을 가지는 데 도움이 된다
이것은 우리가 얼마 전에 첨가한 것이다. 바로 우리가 마이크로 전단 구조로 전환한 후이다.이를 추가한 이유 중 하나는 저장소 수가 4개에서 14개로 늘었기 때문에 오픈 인덱스 요청을 위한 전용 채널을 제공하는 것이 의미가 있다.그 전에, 우리는 우리 팀의 메인 채널에 홍보 링크를 발표하거나, 사람들이 전자메일에서 볼 수 있기를 희망할 것이다.이런 방식을 통해 우리는 소음을 전용 통로로 옮기고 개발자는 팀이 자동으로 통지를 받을 것을 안다.
8시부터 16시까지 우리는 근무일마다 한 시간마다 통지를 받는다.이것은 승인된 인출 요청을 무시합니다. (예를 들어 2+ppl에서 인출할 때) BleedingEdge라는 용어도 무시하기 때문에 RelateTot에서 열린 인출 요청을 무시합니다.
scheduled reminders을 설정하면 간단합니다.github 문서 here을 찾을 수 있습니다.이것은 부팅된 모습입니다. 예를 들어, 이것은 전용 프런트엔드 요청 채널에서 메시지를 발표합니다.
...
기존의 토대 위에서, 우리는 많은 개선을 포함할 수 있다. 예를 들어 Jira에서 직접 지점을 만들면, 이렇게 하면 명명된 약속의 기억을 간소화할 수 있다.또는 대량 동결 기능이 내장된 통합 동결 도구를 선택할 수 있습니다.그러나 통상적으로 우리가 조사한 시간이 제한되어 있거나, 그때는 이미 충분했다. 나중에 우리는 도구를 바꾸는 것이 아니라 개선 과정을 시도했을 뿐이다.
만약 당신에게 어떤 건의가 있다면, 아래의 토론에서 발표하세요.
편하게 연락 주세요.👋
| |
Reference
이 문제에 관하여(5가지 자동 개발 도구), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pgarzina/5-tools-to-automate-your-development-3m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)