feat: docker hub login #32
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- main # 메인 브렌치에 브랜치 머지 시 자동으로 실행 | |
pull_request: | |
branches: | |
- '**' # 모든 브랜치에 PR 올릴 때 실행 | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go 1.23 | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
- run: go version | |
- name: Show build number | |
run: | | |
echo "Build Number: ${{ github.run_number }}" | |
- name: Show pull request number | |
if: ${{ github.event_name == 'pull_request' }} | |
run: | | |
echo "PR Number: ${{ github.event.pull_request.number }}" | |
- name: Get PR Number for Main Branch Merge | |
id: get_pr_number | |
if: github.ref == 'refs/heads/main' | |
run: | | |
PR_NUMBER=$(gh pr list --repo ${{ github.repository }} --state closed --json number,mergeCommit --jq ".[] | select(.mergeCommit.oid == \"${{ github.sha }}\") | .number") | |
echo "PR_NUMBER=${PR_NUMBER}" | |
echo "PR_NUMBER"="${PR_NUMBER}" >> $GITHUB_OUTPUT | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set Docker Image Tag | |
id: set_docker_image_tag | |
env: | |
PR_NUMBER: ${{ steps.get_pr_number.outputs.PR_NUMBER }} | |
run: | | |
if [ "${{ github.ref_name }}" == "main" ]; then | |
DOCKER_IMAGE_TAG="1.1.$PR_NUMBER" | |
else | |
DOCKER_IMAGE_TAG="0.${{ github.event.pull_request.number }}.${{ github.run_number }}" | |
fi | |
echo "Docker Image Tag: $DOCKER_IMAGE_TAG" | |
echo "DOCKER_IMAGE_TAG"="${DOCKER_IMAGE_TAG}" >> $GITHUB_OUTPUT | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_PASSWORD }} | |
- name: Build and push Docker image | |
env: | |
DOCKER_IMAGE_TAG: ${{ steps.set_docker_image_tag.outputs.DOCKER_IMAGE_TAG }} | |
run: | | |
docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/techeerism-parser:$DOCKER_IMAGE_TAG . | |
docker push ${{ secrets.DOCKER_HUB_USERNAME }}/techeerism-parser:$DOCKER_IMAGE_TAG | |
- name: Send Image and Version to Slack | |
if: github.ref == 'refs/heads/main' # main 브랜치에 머지 시에만 실행 | |
env: | |
IMAGE_NAME: ${{ secrets.DOCKER_HUB_USERNAME }}/techeerism-parser | |
DOCKER_IMAGE_TAG: ${{ steps.set_docker_image_tag.outputs.DOCKER_IMAGE_TAG }} | |
SLACK_SECRET: ${{ secrets.SLACK_DEPLOY_SECRET }} | |
run: | | |
commit_message="${{ github.event.head_commit.message }}" | |
commit_link="https://github.com/${{ github.repository_owner }}/${{ github.event.repository.name }}/commit/${{ github.sha }}" | |
curl -X POST https://techeer-029051b54345.herokuapp.com/api/v1/deploy/image \ | |
-H "Content-Type: application/json" \ | |
-d '{ | |
"imageName": "'"$IMAGE_NAME"'", | |
"imageTag": "'"$DOCKER_IMAGE_TAG"'", | |
"message": "'"$commit_message"'", | |
"commitLink": "'"$commit_link"'", | |
"secret": "'"$SLACK_SECRET"'" | |
}' |