👲 Neis Api를 간단하게 가져올 수 있는 라이브러리를 만든 과정을 이야기해봅니다.
도움을 주신 smoothbear, shw0471님 감사합니다😘
교육정보개방포털에서 제공하는 Api를 Java에 맞게 Parsing하여 Object로 반환해주는 Api입니다.
급식패스(GsPass)에서 급식을 가져오는 부분을 만들다보니 이걸 라이브러리화 하는것은 어떨까? 라는 고민으로부터 시작되었습니다.
일단 sonatype에 회원가입부터 하자!
상단 바를 보면 만들기버튼이 있다. 이 버튼으로 이슈를 발행한다.
입력해야하는 정보는
이슈를 등록하면 Group Id에 적었던 곳에 인증을 하라는 Comment가 달린다. 깃허브를 기준으로 OSSRH-70244와 같은 이슈넘버로 Public Repository를 만들면 인증된다.
저 Comment를 보면 알 수 있겠지만, 이제 Group Id로 com.github.*는 사용할 수 없다고한다. 대신 io.github.*로 사용하면 된다.
이렇게 간단하게 끝나지 않았다..😭😭
사전에 Gnupg가 필요합니다!!
gpg --gen-key를 실행한 이후 정보를 입력하면
public key(예시 : abcd1234)를 발급받을 수 있습니다.
gpg --output 파일명.asc --armor --export-secret-key [이메일입력]
을 실행시키면 private key를 발급받을 수 있습니다.
gpg -c .\파일명.asc를 실행시켜 암호화를 진행합니다.
gradle.properties를 만들어줍니다.
gradle.properties
signing.gnupg.keyName=public key
signing.gnupg.passphrase=password
gpg -c .\gradle.properties를 실행시켜 암호화를 진행합니다.
결과적으로 파일명.asc.gpg와 gradle.properties.gpg가 생성됩니다.
우리가 Maven Central Repository에 배포하려면 javadoc jar와 source jar도 같이 올려야한다.
물론 위에서 했던 GPG도 꼭 해야 배포할 수 있다!
여기를 봐주세요!
name: Publish package to the Maven Central Repository and GitHub Packages
on:
release:
types: [ created ]
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v2
- name: Set up Java
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Build packages
run: gradle build
- name: Grant permission to deploy.sh
run: chmod 755 .github/workflows/commands/deploy.sh
- name: Publish to the Maven Central Repository
run: .github/workflows/commands/deploy.sh
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
GPG_SECRET: ${{ secrets.GPG_SECRET }}
위 코드에 들어가는 deploy.sh는
set -euo pipefail
IFS=$'\n\t'
function cleanup {
echo "🧹 Cleanup..."
rm -f gradle.properties golo-dev-sign.asc
}
trap cleanup SIGINT SIGTERM ERR EXIT
echo "🚀 Preparing to deploy..."
echo "🔑 Decrypting files..."
gpg --quiet --batch --yes --decrypt --passphrase="${GPG_SECRET}" \
--output 파일명.asc .github/workflows/commands/gpg/파일명.asc.gpg
gpg --quiet --batch --yes --decrypt --passphrase="${GPG_SECRET}" \
--output gradle.properties .github/workflows/commands/gpg/gradle.properties.gpg
gpg --fast-import --no-tty --batch --yes 파일명.asc
echo "📦 Publishing..."
gradle publish
echo "✅ Done!"
Github에서 release를 생성하시면 위의 Github Actions가 실행되고 deploy.sh에서 gradle publish가 되며 업로드가 될것입니다.
publish가 성공적으로 끝나도 해야하는 작업이 더 있습니다 ㅎㅎ..
여기를 들어가서 로그인을 한 후 staging repository탭으로 들어가면
이런 화면이 나옵니다. publish가된 Repository를 선택한 후 close를 해주고, Release를 하면 됩니다.
30분 정도 기다리면
🥳최대 2시간 정도 기다리면 업로드된다고 메일이 옵니다!🥳
라이브러리 배포가 처음이라 미숙한 많을텐데 끝까지 봐주셔서 감사합니다🤠
코드상 오류가 있다면 이슈를 날려주시고, 궁금한점은 댓글 달아주세요!
제작자 Github입니다!
참고한 자료
Gradle Docs
Gradle Docs Plugin
지리네요