박종훈 기술블로그

Github Action - create-release, upload-release-asset warning 제거하기

어제 workflow를 구축하고 잘 릴리즈가 되고 있었다. (관련글 : 안드로이드 - Github Action을 이용하여 Signed APK 빌드하기)

그런데 아쉬운 것이 빌드 과정중에 warning이 나오고 있었다. deprecated 관련 warning이였는데 평소에 deprecated 된 걸 최대한 안쓰려 하는 편이라 저걸 제거해 봐야 겠다는 생각이 들었다.

warning은 아래와 같이 나오고 있었다.

Node.js 12 actions are deprecated. Please update the following actions to use Node.js 16: actions/create-release@v1, actions/upload-release-asset@v1.0.1.

warnings in github action build

우선 actions/create-release@v1, actions/upload-release-asset@v1.0.1 는 현재 repository가 readonly 상태이다.

그러면 어떻게 대체할 수 있을까를 확인해봐야 하는데 repository의 readme를 보면 대체 할 수 있는 레포지토리들을 소개해 주고 있다는 것을 확인할 수 있다.

readme of release api

이 중 softprops/action-gh-release 를 선택하였는데 그 이유는 create-release의 기능과 upload-release-asset의 기능 두 가지를 모두 대체 가능하며 가장 많은 사람들이 사용하고 있었기 때문이다.

이에 따라 바뀐 release-apk.yml 은 다음과 같다.

name: release apk

on:
  push:
    branches:
      - main

jobs:
  apk:
    name: Generate and Release APK
    runs-on: ubuntu-latest
    permissions: write-all
    steps:
      - name: Checkout
        uses: actions/checkout@v1
      - name: Setup JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: "17"
          distribution: "temurin"
      - name: Generate Keystore file from Github Secrets
        run: |
          echo "$" > ./keystore.b64
          base64 -d -i ./keystore.b64 > ./$
          cp ./$ ./app/$
      - name: Build Signed APK
        run: |
          bash ./gradlew assembleRelease \
            -Pandroid.injected.signing.store.file=$ \
            -Pandroid.injected.signing.store.password=$ \
            -Pandroid.injected.signing.key.alias=$ \
            -Pandroid.injected.signing.key.password=$ \
            --stacktrace
      - name: set now
        run: |
          echo "now=v$(date +'%Y.%m.%d.%H%M')" >> $GITHUB_ENV
      - name: Create Release
        id: create_release
        uses: softprops/action-gh-release@v1
        env:
          GITHUB_TOKEN: $
        with:
          tag_name: $
          files: |
            app/build/outputs/apk/release/app-release.apk

job을 하나로 통일해서 처리해 주었다.


이렇게 수정하면 아래 아무런 warning 없이 깔끔하게 성공하는 것을 확인 할 수 있다.

result with new workflow