1. 릴리즈 노트 자동 생성
actions/create-release 라는 오픈소스를 사용해서 릴리스를 생성하는 github action 스크립트를 쉽게 구성할 수 있다.
리포지토리에 새로운 태그가 푸시될 때 자동으로 릴리스 노트를 생성하는 워크플로우를 구성해보겠다.
참고로, 태그 푸시를 자동으로 하는 것부터 해야 한다면 아래 글을 읽어보길 바란다.
릴리즈 노트를 자동생성하기 위한 코드부터 먼저 보여주자면, 아래와 같다. 나는 아래와 같이 구성했는데, 사실 오픈소스에서 제공하는 예시에서 크게 고칠 게 없었다.
•
.github/workflows/create-release-notes.yml
name: Create release notes
on:
push:
tags:
- 'v*'
jobs:
release-notes:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-dev-') # 개발용 태그는 제외
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Extract tag name
id: tag_name
run: echo "::set-output name=tag::${GITHUB_REF#refs/tags/}"
shell: bash
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.PRIVATE_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ steps.tag_name.outputs.tag }}
body: ${{ steps.generate_release_notes.outputs.notes }}
draft: false
prerelease: false
Java
복사
v로 시작하는 버전용 태그가 푸시되면,
(단, v1,1,1-dev-23423424234-1.0 과 같은 꼴의 dev 버전용 태그는 제외하고 v1.1.1 과 같은 꼴의 prod 버전용 태그만 적용)
refs/tags에 들어있는 태그 이름을 릴리즈 이름으로 삼아
릴리즈 노트를 생성한다.
굉장히 간단하지 않은가.
draft는 초안을 만드는 게 아니라서 꺼줬다. 켜주면 초안을 만들고, 꺼주면 게시된 릴리즈 노트를 생성한다.
prelease도 정식 릴리즈라 꺼줬다. 켜주면 릴리즈 노트를 시험판으로 식별하고, 켜주면 정식 릴리즈로 식별한다.
2. mac에서 docker로 build한 이미지 x86 ec2에서 사용하기
핵심은 linux/amd64 로 build하는 건데, 그렇게 하는 이유는 aws ec2 서버를 사람들이 보통 arm이 아닌 x86으로 만들기 때문이다.
•
로컬에서
◦
brew install --cask docker → 도커 데스크탑까지 설치
◦
docker build --platform linux/amd64 -t beachcombing . → 빌드
◦
docker tag beachcombing choo000407/beachcombing
◦
docker push choo000407/beachcombing
•
서버에서
◦
sudo docker login 아이디 비번
◦
sudo docker pull choo000407/beachcombing
◦
sudo docker tag choo000407/beachcombing beachcombing
◦
sudo docker-compose -p beachcombing up -d
◦
로그 확인 → sudo docker-compose logs --tail 0 -f
참고