GThub Actions 태그

6385 단어 GitHub Actionstech

개요


여러 번 조사하고 또 여러 번 테스트했기 때문에 자주 쓰는 것을 정리하고 싶습니다.

항목


push 시 실행


// feature/aaaで動く。 feature/aaa/bbbでは動かない
on:
  push:
    branch:
      - feature/*

// feature/aaa, feature/aaa/bbbで動く
on:
  push:
    branch:
      - feature/**

// なにかしらのtagがpushされたときに実行、branchのpushは無視
on:
  push:
    tags: [ '**' ]
    branches-ignore: [ '**' ]
    
// 指定したpathの変更だけでは実行しない
on:
  push:
    branches:
      - main
    paths-ignore:
      - '*.md'
      - 'docs/**'
필터 패턴의 블러셔

수동 실행


on:
  workflow_dispatch:
    inputs:
      env:
        description: "実行環境"
        required: true
        default: "dev"
      year:
        description: "対象年 (ex. 2021)"
        required: true
      month:
        description: "対象月 (ex. 1~12)"
        required: true
      day:
        description: "対象日 (ex. 1~31)"
        required: true
      hour:
        description: "対象時間 (ex. 0~23)"
        required: true
	
jobs:
  my-job:
    runs-on: ubuntu-latest
    steps:
      - name: Use the inputs
        run: |
	  echo ${{ github.event.inputs.env }}
	  echo ${{ github.event.inputs.year }}
	  echo ${{ github.event.inputs.month }}
	  echo ${{ github.event.inputs.day }}
	  echo ${{ github.event.inputs.hour }}

workflow_api 디스패치 실행


↑ 지정된 워크플로우curl로 디스패치를 실행합니다.
curl -X POST \
    -H "Accespt: application/vnd.github.v3+json" \
    -H "Authorization: token ${TOKEN}" \
    https://api.github.com/repos/{$YOUR_ORG}/${YOUR_REPO}/actions/workflows/${YOUR_WORKFLOW_FILENAME}/dispatches \
    -d '{"ref":"master", "inputs":{"env":"'${env}'","year":"'${year}'", "month":"'${month}'", "day":"'${day}'", "hour":"'${hour}'"}}'
${TOKYEN} 이 작업 모드를 실행할 수 있는 사용자의 Personal Access Token 등

집행


시간별 일요일
timezone은 UTC입니다.
┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * *

on:
  schedule:
    - cron: "0,30 1-3 * * *"

환경 변수 추가


steps:
  - name: Set the value
    id: step_one
    run: echo "user_name=xxx" >> $GITHUB_ENV
  - name: Use the value
    id: step_two
    run: echo "${{ env.user_name }}"

output 매개 변수 추가


steps:
  - name: Set the value
    id: step_one
    run: echo "::set-output name=user_name::xxx"
  - name: Use the value
    id: step_two
    run: echo "${{ steps.step_one.outputs.user_name }}"

로그의 특정 문자열 숨기기


'***'마스크를 쓰세요.
steps:
  - name: Set mask
    run: echo "::add-mask::$MY_PASSWORD"

아카이브 파일



- name: Archive test result
      uses: actions/upload-artifact@v1
      with:
        name: test-result
        path: $GITHUB_WORKSPACE/target/surefire-reports
$GITHUB_WORKSPACE는 기본 환경 변수입니다.
actions/checkkout에서git 창고 내용을 체크아웃하는 디렉터리 경로입니다.

탭 분기 이름 가져오기


- name: tag
  run: echo ${GITHUB_REF##*/}
$GITHUB_REF는 워크플로우를 트리거하는 분기 또는 레이블 ref입니다.
예: refs/heads/feature-branch-1 또는 refs/tags/v1.0.0.##*/ 삭제refs/heads/ 또는 refs/tags/ 부분 때문에 feature-branch-1, v1.0.0를 받을 수 있습니다.

slack 채널에 알림 보내기



- name: Send to slack channel
  run: |
    curl -X POST \
    -d "payload={\"channel\": \"#YOUR_CHANNEL\", \"username\": \"YOUR_USER_NAME\", \"text\": \"YOUR_MESSAGE\", \"icon_emoji\": \":smile:\"}" \
    ${{ secrets.SLACK_NOTIFICATION_URL }}
SLACK_NOTIFICATION_URL은 Incoming Webhook의 URL입니다.

슬랙 채널에 파일 올리기


- name: Upload file to slack channel
  run: |
    curl -F file=@$GITHUB_WORKSPACE/YOUR_FILE_NAME.csv \
    -F channels=#YOUR_CHANNEL \
    -H "Authorization: Bearer $SLACK_APP_OAUTH_TOKEN" \
    https://slack.com/api/files.upload
파일의 업로드는 Incoming Webhook에서 할 수 없기 때문에 슬랙 애플리케이션을 만들어 지정된 채널에 설치해야 한다.
SLACK_APP_OAUTH_TOKIO는 슬랙 애플리케이션의 OAUTH 토큰이다.

자주 확인되는 링크


기본 환경 변수 목록


https://docs.github.com/ja/actions/learn-github-actions/environment-variables#default-environment-variables

워크플로우 명령


https://docs.github.com/ja/actions/learn-github-actions/workflow-commands-for-github-actions#setting-an-output-parameter

문맥


https://docs.github.com/ja/actions/learn-github-actions/contexts

워크플로우 구문


https://docs.github.com/ja/actions/learn-github-actions/workflow-syntax-for-github-actions

좋은 웹페이지 즐겨찾기