GitHub Actions의 자체 제작 Actions 배포 자동화를 간소화해봤습니다.
14851 단어 GitHubTypeScript
그래서 기념으로 기사를 쓰고 싶습니다.
전에 [GitHub Actions] 자체 제작 Actions 자동 게시 썼는데 그 이후로 더욱 완결적으로 자동화 발행할 수 있게 되었습니다. 제가 소개해 드릴게요.
이전 기사에서 매우 번거로운 일을 했기 때문에 앞으로 자동화를 발행하고 싶은 사람은 본 보도를 참고하십시오.
사용 작업
버전 자동화를 위한 작업은 actions/create-release 입니다.
사용 방법
README.md에 사용례가 쓰여 있습니다.jobs:
build:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@master
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
with 아래 파라미터의 이름으로 추측할 수 있을 것 같아서 특별히 설명하지는 않겠지만 action.yml 사용할 수 있는 파라미터와 설명이 적혀 있기 때문에 읽어보시기 바랍니다.
만약 정상적으로 발표할 수 있다면 html_URL을 출력할 수 있기 때문에 트위터 API 등을 통해 SNS에 자동으로 게시할 수 있다.html_url의 획득 방법은 상기 예에서 steps.create_release.outputs.html_url
.
소스 코드 소개
액션/create-release를 깊이 파보세요.
이 작업은 내부에서 사용됩니다@actions/github.이 밖에 @actions/github 사용@octokit/rest과 @octokit/graphql.create-release는 GraphQL 클라이언트를 사용하지 않고 @octokit/rest octokit.repos.createRelease 에서 발표합니다.
actions/create-relase에서 실제 발표된 핵심 코드는 여기.먼저 ↓에 쓰세요. const github = new GitHub(process.env.GITHUB_TOKEN);
// Get owner and repo from context of payload that triggered the action
const { owner, repo } = context.repo;
// Get the inputs from the workflow file: https://github.com/actions/toolkit/tree/master/packages/core#inputsoutputs
const tagName = core.getInput('tag_name', { required: true });
// This removes the 'refs/tags' portion of the string, i.e. from 'refs/tags/v1.10.15' to 'v1.10.15'
const tag = tagName.replace('refs/tags/', '');
const releaseName = core.getInput('release_name', { required: true }).replace('refs/tags/', '');
const draft = core.getInput('draft', { required: false }) === 'true';
const prerelease = core.getInput('prerelease', { required: false }) === 'true';
// Create a release
// API Documentation: https://developer.github.com/v3/repos/releases/#create-a-release
// Octokit Documentation: https://octokit.github.io/rest.js/#octokit-routes-repos-create-release
const createReleaseResponse = await github.repos.createRelease({
owner,
repo,
tag_name: tag,
name: releaseName,
draft,
prerelease
});
@octokit/rest는 @actions/github로 포장된 github.repos.createRelease
이지만 octokit.repos.createRelease
과는 차이가 많지 않기 때문이다.참고로 octokit.repos.createRelease
중 body
의 매개 변수는 발행 설명을 기술할 수 있지만 github.repos.createRelease
에서 이 매개 변수를 실현하지 못했다.2019/11/14 때 견인력 상승했어요. 머지않아 합병될 것 같아요.빨리 됐으면 좋겠어요.
replace는 레이블과 발행 이름을 같게 하기 때문에release_${{ github.ref }}
name에게 건네주면 됩니다.
게시 자동화
그럼 본론의 자동 발표의 단순화입니다.우선 워크플로우의 YAML을 게재합니다.name: Prepare for release
on:
push:
tags:
- 'v*'
jobs:
release:
name: Build production
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: '10.x'
- name: Create Release
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: 'false'
prerelease: 'false'
- name: Slack Notification
uses: homoluctus/slatify@master
if: always()
with:
type: ${{ job.status }}
job_name: ':rocket: *Publish new release ${{ github.ref }}*'
channel: '#develop'
url: ${{ secrets.SLACK_WEBHOOK }}
블록별 설명
촉발
on:
push:
tags:
- 'v*'
접두사 v
의 태그를 밀어넣으면 워크플로가 시작됩니다.*
는 일반 정규 표현식에서 사용하는 의미와 같다.그래서 발표하고 싶을 때 v1.0
이런 느낌으로 라벨을 붙여서 밀면 돼요.
발표하다
- name: Create Release
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: 'false'
prerelease: 'false'
tag_name
및 release_name
지정${{ github.ref }}
.${{ github.ref }}
의 실체는 ref/tags/v1.0
와 같다.actions/create-release의 원본 코드에 대한 설명에서 말한 Replace의 것ref/tags
이 제거되었기 때문에tag_name 및 release_name 은 v1.0 입니다.다른 문장으로도 쓸 수 있다.그곳은 자유롭다.
끝내다
처음에도 말했듯이 GitHub Actions도 드디어 정식으로 출시되었다
다른 CI/CD 못지않게 GitHub Actions가 우수합니다.
나는 앞으로 지역사회가 발전하면 개발자와 운용자들이 더욱 수월해졌으면 좋겠다고 생각한다.
Reference
이 문제에 관하여(GitHub Actions의 자체 제작 Actions 배포 자동화를 간소화해봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/homines22/items/e723afebec65a39d35b3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
jobs:
build:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@master
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
const github = new GitHub(process.env.GITHUB_TOKEN);
// Get owner and repo from context of payload that triggered the action
const { owner, repo } = context.repo;
// Get the inputs from the workflow file: https://github.com/actions/toolkit/tree/master/packages/core#inputsoutputs
const tagName = core.getInput('tag_name', { required: true });
// This removes the 'refs/tags' portion of the string, i.e. from 'refs/tags/v1.10.15' to 'v1.10.15'
const tag = tagName.replace('refs/tags/', '');
const releaseName = core.getInput('release_name', { required: true }).replace('refs/tags/', '');
const draft = core.getInput('draft', { required: false }) === 'true';
const prerelease = core.getInput('prerelease', { required: false }) === 'true';
// Create a release
// API Documentation: https://developer.github.com/v3/repos/releases/#create-a-release
// Octokit Documentation: https://octokit.github.io/rest.js/#octokit-routes-repos-create-release
const createReleaseResponse = await github.repos.createRelease({
owner,
repo,
tag_name: tag,
name: releaseName,
draft,
prerelease
});
그럼 본론의 자동 발표의 단순화입니다.우선 워크플로우의 YAML을 게재합니다.
name: Prepare for release
on:
push:
tags:
- 'v*'
jobs:
release:
name: Build production
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: '10.x'
- name: Create Release
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: 'false'
prerelease: 'false'
- name: Slack Notification
uses: homoluctus/slatify@master
if: always()
with:
type: ${{ job.status }}
job_name: ':rocket: *Publish new release ${{ github.ref }}*'
channel: '#develop'
url: ${{ secrets.SLACK_WEBHOOK }}
블록별 설명
촉발
on:
push:
tags:
- 'v*'
접두사 v
의 태그를 밀어넣으면 워크플로가 시작됩니다.*
는 일반 정규 표현식에서 사용하는 의미와 같다.그래서 발표하고 싶을 때 v1.0
이런 느낌으로 라벨을 붙여서 밀면 돼요.발표하다
- name: Create Release
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: 'false'
prerelease: 'false'
tag_name
및 release_name
지정${{ github.ref }}
.${{ github.ref }}
의 실체는 ref/tags/v1.0
와 같다.actions/create-release의 원본 코드에 대한 설명에서 말한 Replace의 것ref/tags
이 제거되었기 때문에tag_name 및 release_name 은 v1.0 입니다.다른 문장으로도 쓸 수 있다.그곳은 자유롭다.끝내다
처음에도 말했듯이 GitHub Actions도 드디어 정식으로 출시되었다
다른 CI/CD 못지않게 GitHub Actions가 우수합니다.
나는 앞으로 지역사회가 발전하면 개발자와 운용자들이 더욱 수월해졌으면 좋겠다고 생각한다.
Reference
이 문제에 관하여(GitHub Actions의 자체 제작 Actions 배포 자동화를 간소화해봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/homines22/items/e723afebec65a39d35b3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(GitHub Actions의 자체 제작 Actions 배포 자동화를 간소화해봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/homines22/items/e723afebec65a39d35b3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)