Merge: release <- develop #7
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: production-cd | |
on: | |
push: | |
branches: [ 'release' ] | |
permissions: | |
contents: read | |
jobs: | |
newrelic: | |
runs-on: ubuntu-latest | |
name: New Relic | |
steps: | |
# This step builds a var with the release tag value to use later | |
- name: Set Release Version from Tag | |
run: echo "RELEASE_VERSION=${{ github.ref_name }}" >> $GITHUB_ENV | |
# This step creates a new Change Tracking Marker | |
- name: New Relic Application Deployment Marker | |
uses: newrelic/[email protected] | |
with: | |
apiKey: ${{ secrets.NEW_RELIC_API_KEY }} | |
guid: ${{ secrets.NEW_RELIC_DEPLOYMENT_ENTITY_GUID }} | |
version: "${{ env.RELEASE_VERSION }}" | |
user: "${{ github.actor }}" | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- name: Set up properties | |
run: | | |
cd src/main | |
mkdir resources | |
cd resources | |
touch application.properties | |
echo "${{ secrets.PROD_APPLICATION }}" > application.properties | |
cat application.properties | |
shell: bash | |
- name: Set up newrelic.yml | |
run: | | |
cd newrelic | |
touch newrelic.yml | |
echo "${{ secrets.PROD_NEW_RELIC_FILE }}" | base64 --decode > newrelic.yml | |
shell: bash | |
- name: Grant execute permission for gradlew | |
run: chmod +x gradlew | |
- name: Build with Gradle | |
run: ./gradlew build -x test -x ktlintMainSourceSetCheck | |
- name: Docker build | |
run: | | |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
docker build --no-cache -t app . | |
docker tag app ${{ secrets.DOCKER_USERNAME }}/prod-phote:latest | |
docker push ${{ secrets.DOCKER_USERNAME }}/prod-phote:latest | |
- name: Deploy | |
uses: appleboy/[email protected] | |
with: | |
host: ${{ secrets.PROD_HOST }} | |
username: ${{ secrets.USERNAME }} | |
key: ${{ secrets.PROD_PRIVATE_KEY }} | |
port: ${{ secrets.DEV_PORT }} | |
script: | | |
docker pull ${{ secrets.DOCKER_USERNAME }}/prod-phote:latest | |
sudo chmod 777 ./deploy.sh | |
./deploy.sh | |
docker image prune -f |