Github: Github 운영 개요 및 Argo CD 배포 예
21431 단어 devopstodayilearnedgithubtutorial
Github Actions은 실제로 TravisCI과 매우 비슷하지만 Github와 더욱 밀접하게 통합되어 있으며 인터페이스도 Github WebUI에 포함되어 있습니다.
따라서 이 능력을 더욱 자세히 살펴보고 어떻게 사용하는지 다음 게시물에서 이 자체 트랜잭션 프로그램을 Kubernetes 그룹에 배치하고 CI/CD 파이프라인을 구축하며 Github 작업과 ArgoCD 배치 프로그램을 사용할 것입니다.
Github Playbook 가격
파일 번호는 here>>>입니다.
GitHub 작업은 모든 계정 유형에 대해 무료이지만 몇 가지 제한 사항이 있습니다.
예를 들어 GitHub팀을 사용하기 때문에 우리는 매달 2G바이트와 3000분의 시간을 가질 수 있다.
따라서 Linux, macOS 및 Windows의 분 수는 달라집니다.
즉, 만약에 우리가 맥OS 에이전트를 사용한다면 우리의 3000분 총수에서 우리는 300분만 사용할 수 있고 1분을 늘릴 때마다 추가 자금이 필요하다.
또한 Github 작업은 Github 클라우드에서 실행할 수 있고 as self-hosted runners은 보안 자원에 접근하는 문제를 해결할 수 있습니다. Github는 정적 IP 범위가 없기 때문에 Security Group/방화벽을 설정할 수 없습니다.
Github suggests 업데이트 네트워크가 있는 json 파일을 정기적으로 다운로드합니다. (참고로 Github Actions는 Microsoft Azure을 처리하고 있습니다.) 하지만 너무 게으르기 때문에 보안 설정을 업데이트하기 위한 추가 자동화를 만들 수 없습니다.
Github 작업: 개요
이러한 작업에서 구축 프로세스는 다음과 같습니다(Introduction to GitHub Actions 참조).
작업 흐름의 여러 작업이 동시에
주요 구성 요소는 다음과 같습니다.
runner: Github 클라우드 또는 호스팅된 서버에서
워크플로우: 이벤트
숙제: 같은 주자에서 운행하는 절차.워크플로에 여러 작업이 있는 경우 기본적으로 워크플로는 병렬로 시작되지만
단계: 일반적인 명령이나 동작을 수행하는 작업.같은 작업의 절차가 같은 실행 프로그램에서 실행되기 때문에 그들은 서로 데이터를 공유할 수 있다.
작업: 주요 블록 실행 — 준비된 작업 세트일 수도 있고 간단한 명령
워크플로우 파일 구조
간단히 말해서 워크플로우 파일을 구축하는 방법을 살펴보겠습니다.
name
: 워크플로우 이름 on
: 이 워크플로우를 트리거할 이벤트 jobs
: 이 워크플로의 작업 목록 <JOB_NAME>
runs-on
: 작업 steps
: 이 작업에서uses로 실행할 작업이나 uses
: run
: 시작: 워크플로우 파일 만들기
간단한 서류부터 시작해서 어떻게 작동하는지 봅시다.
저장소 루트 디렉토리에
.github/workflows/
이라는 디렉토리를 만듭니다. 여기서는 다양한 이벤트로 트리거할 수 있는 모든 워크플로우를 저장합니다.$ mkdir -p .github/workflows
이 디렉토리에서는 스트림에 대해 .github/workflows/actions-test.yaml
이라는 파일을 생성합니다.name: actions-test
on: [push]
jobs:
print-hello:
runs-on: ubuntu-latest
steps:
- run: echo "Hello, world"
Github에 저장 및 푸시:$ git add .github/workflows/actions-test.yaml && git commit -m “Test flow” && git push
Github WebUI로 이동하여 작업 탭으로 전환하면 다음 워크플로가 수행됩니다.이벤트
이벤트에서 이 흐름을 실행하는 조건을 설명할 수 있습니다.
이러한 조건은 요청을 끌어오거나 저장소, 시간표, Github 이외의 이벤트에 제출할 수 있으며, 이 이벤트들은 저장소의 웹훅에 실행될 것이다.
또한 저장소의 여러 분기에 대해 이러한 조건을 구성할 수도 있습니다.
name: actions-test
on:
push:
branches:
- master
pull_request:
branches:
- test-branch
...
또는 cronjob을 사용하려면 Scheduled events을 참조하십시오.name: actions-test
on:
schedule:
- cron: '* * * *'
수동 트리거 — 작업 흐름과 스케줄링
또한
workflow_dispatch
의 on
을 사용하여 워크플로우를 수동으로 실행하도록 구성할 수도 있습니다.name: actions-test
on:
workflow_dispatch
jobs:
print-hello:
runs-on: ubuntu-latest
steps:
- run: echo "Hello, world"
그런 다음 작업 중에 이 흐름을 실행하는 버튼이 나타납니다.워크플로우 입력
워크플로우에 다음과 같은
inputs
을 추가할 수도 있습니다.name: actions-test
on:
workflow_dispatch:
inputs:
userName:
description: "Username"
required: true
default: "Diablo"
jobs:
print-hello:
runs-on: ubuntu-latest
steps:
- run: echo "Username: ${{ github.event.inputs.username }}"
- run: echo "Actor's username: ${{ github.actor }}"
여기서 github.event
에서는 ${{ github.event.inputs.username }}
의 값을 받았고 workflow_dispatch.inputs.userName
에서는 Github 운영 메타데이터를 받았습니다.github.actor
예를 들어 Argo CD와 함께 배치할 수 있도록 Docker 이미지 라벨을 전달할 수 있습니다.
Webhooks: 만들기
위에서 사용한 푸시 외에도 저장소의 다른 이벤트에 대한 워크플로우를 구성할 수 있습니다.
전체 목록은 을 참조하십시오.
또 다른 예제에서는 Webhook events을 사용하여 새 분기 또는 태그를 작성할 때 실행할 스트림을 구성합니다.
name: actions-test
on:
create
jobs:
print-hello:
runs-on: ubuntu-latest
steps:
- run: |
echo "Event name: ${{ github.event_name }}"
echo "Actor's username: ${{ github.actor }}"
여기 create
은 트리거의 이름을 표시하는 데 사용됩니다.새 브랜치를 생성하고 밀어넣기:
$ git checkout -b a-new-branch
Switched to a new branch ‘a-new-branch’
$ git push -u origin a-new-branch
체크:${{ github.event_name }}
환경 변수
또한 Github 작업은 워크플로우의 환경 변수를 지원합니다.
기본 변수 목록은 워크플로우 수준, 작업 수준, 각 작업 또는 각 단계에서 고유한 변수를 만들 수 있는 을 참조하십시오.
이 절차에서는 변수에 대한 액세스가 다르므로 Default environment variables을 참조하십시오.
컨텍스트 변수 —
${{ env.VARNAME }}
: 작업 흐름 파일을 실행 프로그램에 보내기 전에 작업 흐름 파일을 미리 처리하는 동안 값을 설정하여 실행 이외의 어느 곳에서든지 사용합니다. 예를 들어if조건(아래에서 논의할 것) 환경 변수 —
$VARNAME
: 실행 프로그램 $GITHUB_ENV
변수 변수 예:
name: vars-test
on:
push
env:
VAR_NAME: "Global value"
jobs:
print-vars:
runs-on: ubuntu-latest
steps:
# using own varibales
- name: "Test global var as $VAR_NAME"
run: echo "Test value $VAR_NAME"
- name: "Test global var as ${{ env.VAR_NAME }}"
run: echo "Test value ${{ env.VAR_NAME }}"
# using default variables
- name: "Test job var as $GITHUB_REPOSITORY"
run: echo "Test value $GITHUB_REPOSITORY"
# this will be empty, as default variables are not in the context
- name: "Test job var as ${{ env.GITHUB_REPOSITORY }}"
run: echo "Test value ${{ env.GITHUB_REPOSITORY }}"
# using 'dynamic' variables
- name: "Set local var"
run: echo "local_var=local value" >> $GITHUB_ENV
- name: "Print local var as $local_var"
run: echo "$local_var"
- name: "Print local var as ${{ env.local_var }}"
run: echo "${{ env.local_var }}"
결과:About environment variables
비밀.
파일 번호는 입니다.
저장소 설정 > Confidential 에 Confidential 을 추가할 수 있습니다.
here>>>
이제 워크플로에 추가합니다.비밀은
${{ secret.SECRETNAME }}
에서 직접 입력하거나 변수로 설정할 수 있습니다.name: actions-test
on:
push
env:
TEST_ENV: ${{ secrets.TEST_SECRET }}
jobs:
print-hello:
runs-on: ubuntu-latest
steps:
- run: |
echo "Test secret: ${{ secrets.TEST_SECRET }}"
echo "Test secret: ${{ env.TEST_ENV }}"
프로세스를 실행하려면 다음과 같이 하십시오.하면, 만약, 만약...
Github Actions는
if
연산자와 표현식을 사용하여 작업에 대한 조건 검사를 지원합니다.
을 참조하십시오.예를 들면 다음과 같습니다.
name: actions-test
on:
push
jobs:
print-hello:
runs-on: ubuntu-latest
steps:
- id: 'zero'
run: echo "${{ github.actor }}"
- id: 'one'
run: echo "Running because of 'github.actor' contains a 'setevoy' string"
if: "contains(github.actor, 'setevoy')"
# this will not run
- id: 'two'
run: echo "Skipping because of 'github.actor' contains a 'setevoy' string"
if: "!contains(github.actor, 'setevoy')"
- id: 'three'
run: echo "Running because of Step Two was skipped"
if: steps.two.conclusion == 'skipped'
- id: 'four'
run: echo "Running because of commit message was '${{ github.event.commits[0].message }}'"
if: contains(github.event.commits[0].message, 'if set')
- id: 'five'
run: echo "Running because of previous Step was successful and the trigger event was 'push'"
if: success() && github.event_name == 'push'
여기서 우리는 About contexts and expressions, github context
함수, contains()
과 !=
, &&
과 operators을 사용하여 조건을 검사한다.결과는 다음과 같습니다.
steps
context요구 사항-업무 의존성
단계의
if: success()
외에도
을 사용하여 작업 간의 의존 관계를 추가할 수 있습니다.name: actions-test
on:
push
jobs:
init:
runs-on: ubuntu-latest
steps:
- run: echo "An init job"
build:
runs-on: ubuntu-latest
steps:
- run: echo "A build job" && exit 1
needs: 'init'
deploy:
runs-on: ubuntu-latest
steps:
- run: echo "A deploy job"
if: always()
needs: ['init', 'build']
여기서 우리는 구축 작업에서 init 작업이 완성되기를 기다리고 배치 작업에서 init와build을 기다린다. needs
을 사용하여 우리는 실행 배치 작업을 설정하고 의존항 작업의 실행 결과가 어떻든 상관없다.if: always()
행동
마지막으로 Github 작업의 주요 구성 요소를 살펴보겠습니다. — 움직여.
Actions에서는 에 있는 기존 스크립트와 유틸리티 또는 Docker Hub에 있는 Docker 이미지를 사용할 수 있습니다.
Github Actions Marketplace 참조.
다음 예에서 우리는 Finding and customizing actions을 사용하여 메모리 라이브러리 루트와 runner 에이전트를 복제하고 actions/checkout@v2을 사용하여 Argo CD 프로그램을 동기화할 것이다(자세한 정보는 omegion/argocd-app-actions 글 참조).
Argo CD: 개요, SSL 구성 및 어플리케이션 배포 Argo CD 애플리케이션
테스트 애플리케이션을 만듭니다.
기본적으로 관리자 사용자는 ArgoCD 토큰을 사용할 수 있는 권한이 없기 때문에
argocd-cm
구성 매핑을 업데이트합니다....
data:
accounts.admin: apiKey,login
...
로그인:$ argocd login dev-1–18.argocd.example.com
Username: admin
Password:
‘admin’ logged in successfully
Context ‘dev-1–18.argocd.example.com’ updated
생성 토큰:$ argocd account generate-token
eyJ***3Pc
ArgoCD용 Github 운영 워크플로우
이 토큰을 사용하여 비밀 추가:
새 워크플로우를 만들려면 다음과 같이 하십시오.
name: "ArgoCD sync"
on: "push"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: "Clone reposiory"
uses: actions/checkout@v2
with:
repository: "argoproj/argocd-example-apps.git"
ref: "master"
- name: "Sync ArgoCD Application"
uses: omegion/argocd-app-actions@master
with:
address: "dev-1-18.argocd.example.com"
token: ${{ secrets.ARGOCD_TOKEN }}
appName: "guestbook"
저장소로 밀어넣고 수행 여부를 확인합니다.Argo CD의 애플리케이션이 동기화되었습니다.
완성
최초로 에 발표되었다.
Reference
이 문제에 관하여(Github: Github 운영 개요 및 Argo CD 배포 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/setevoy/github-github-actions-overview-and-argocd-deployment-example-27p7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)