Skip to content

Commit 2ae07c3

Browse files
author
Jairo Matos Da Rocha
committed
new server
1 parent df8f295 commit 2ae07c3

File tree

6 files changed

+45
-375
lines changed

6 files changed

+45
-375
lines changed

.gitconfig

-3
This file was deleted.

.github/workflows/prod.yml

+34-173
Original file line numberDiff line numberDiff line change
@@ -1,215 +1,76 @@
11
name: Build and Deploy in Production Server AGROTÓXICOS
2-
32
on:
43
push:
54
branches:
65
- main
7-
86
jobs:
9-
build-and-deploy:
7+
build:
108
runs-on: ubuntu-latest
11-
env:
12-
REGISTRYSERVER: ${{secrets.REGISTRYPROD}}
13-
SERVER_KNOWN: ${{secrets.SERVER_PROD_KNOWN}}
14-
DOCKER_SERVER: ${{secrets.SERVER_PROD}}
15-
SSH_SERVER: ${{secrets.SERVER_PROD_SSH}}
16-
DOCKER_PATH: "prod"
17-
18-
199
outputs:
20-
START_TIME: ${{ steps.creat_env.outputs.START_TIME }}
10+
APPLICATION_NAME: ${{ steps.creat_env.outputs.APPLICATION_NAME }}
11+
DOCKER_PATH: ${{ steps.creat_env.outputs.DOCKER_PATH }}
2112
LAST_COMMIT_HASH: ${{ steps.creat_env.outputs.LAST_COMMIT_HASH }}
2213

23-
LAPIG_AUTHOR_NAME: ${{ steps.creat_env.outputs.LAPIG_AUTHOR_NAME }}
24-
LAPIG_AUTHOR_EMAIL: ${{ steps.creat_env.outputs.LAPIG_AUTHOR_EMAIL }}
25-
LAPIG_AUTHOR_DATE: ${{ steps.creat_env.outputs.LAPIG_AUTHOR_DATE }}
26-
LAPIG_PROJECT_NAME: ${{ steps.creat_env.outputs.LAPIG_PROJECT_NAME }}
27-
LAPIG_COMMIT_DATE: ${{ steps.creat_env.outputs.LAPIG_COMMIT_DATE }}
28-
29-
CREATE_STATUS: ${{steps.deploy_container.outputs.CREATE_STATUS}}
30-
DELETE_STATUS: ${{steps.deploy_container.outputs.DELETE_STATUS}}
31-
START_STATUS: ${{steps.start_container.outputs.START_STATUS}}
32-
33-
3414
steps:
3515
- name: Checkout code
3616
uses: actions/checkout@v2
3717

38-
39-
- name: Define a variável application_name
18+
- name: Define environment variables
4019
id: creat_env
4120
run: |
42-
echo "START_TIME=$(date -u +%s)" >> "$GITHUB_OUTPUT"
43-
44-
repo_full_name=$GITHUB_REPOSITORY
45-
repo_name=${repo_full_name##*/}
46-
echo "Nome do repositório: $repo_name"
47-
48-
echo "application_name=app_agrotoxico" >> $GITHUB_ENV
49-
50-
echo "LAST_COMMIT_HASH=$(git log --pretty=format:%h -n 1)" >> $GITHUB_ENV
51-
52-
echo "LAST_COMMIT_HASH=$(git log --pretty=format:%h -n 1)" >> "$GITHUB_OUTPUT"
53-
54-
echo "LAPIG_AUTHOR_NAME=$(git show -s --pretty=%an)" >> "$GITHUB_OUTPUT"
55-
echo "LAPIG_AUTHOR_EMAIL=$(git show -s --pretty=%ae)" >> "$GITHUB_OUTPUT"
56-
echo "LAPIG_AUTHOR_DATE=$(git log -1 --format=%cd --date=local)" >> "$GITHUB_OUTPUT"
57-
echo "LAPIG_PROJECT_NAME=$repo_name" >> "$GITHUB_OUTPUT"
58-
echo "LAPIG_COMMIT_DATE=$(git show -s --format=%ci)" >> "$GITHUB_OUTPUT"
59-
60-
61-
echo "NODE_OPTIONS=--max-old-space-size=8096" >> $GITHUB_ENV
21+
# Função para definir variáveis no GITHUB_ENV e GITHUB_OUTPUT
22+
set_var() {
23+
echo "$1=$2" >> $GITHUB_ENV
24+
echo "$1=$2" >> $GITHUB_OUTPUT
25+
}
26+
# Defina as variáveis
27+
set_var "DOCKER_PATH" "prod"
28+
set_var "APPLICATION_NAME" "app_agrotoxico"
29+
set_var "LAST_COMMIT_HASH" "$(git log --pretty=format:%h -n 1)"
6230
6331
- name: Create version.json
6432
run: echo "{\"commitId\":\"$LAST_COMMIT_HASH\"}" > version.json
6533

66-
- name: Configurar Node.js
34+
- name: Setup Node.js
6735
uses: actions/setup-node@v2
6836
with:
6937
node-version: '16.4.2'
7038

71-
- name: Build Server and client
39+
- name: Build Server and Client
7240
run: |
41+
export NODE_OPTIONS=--max-old-space-size=8096
7342
npm set progress=false
7443
cd ${{ github.workspace }}/src/server && npm install
7544
cd ${{ github.workspace }}/src/client && npm install
7645
npm install -g @angular/[email protected]
7746
cd ${{ github.workspace }}/src/client && ng build --stats-json --source-map=false --no-progress
7847
79-
80-
- name: Build Docker
48+
- name: Build Docker image
8149
run: |
82-
docker build -t $REGISTRYSERVER/$application_name:${LAST_COMMIT_HASH} -t $REGISTRYSERVER/$application_name:latest -f docker/$DOCKER_PATH/Dockerfile . --no-cache
83-
50+
docker build -t lapig/$APPLICATION_NAME:${DOCKER_PATH}_${LAST_COMMIT_HASH} \
51+
-t lapig/$APPLICATION_NAME:${DOCKER_PATH}_latest \
52+
-f docker/$DOCKER_PATH/Dockerfile . --no-cache
8453
8554
- name: Login to Docker Registry
86-
run: echo "${{ secrets.HARBOR_PASS }}" | docker login -u "${{ secrets.HARBOR_USER }}" --password-stdin "${{ secrets.URL_PRIVATE_REGISTRY }}"
55+
run: echo "${{ secrets.DOCKERHUB_PASS }}" | docker login -u "lapig" --password-stdin
8756

8857
- name: Push Image to Registry
8958
run: |
90-
docker push $REGISTRYSERVER/$application_name:${LAST_COMMIT_HASH}
91-
docker push $REGISTRYSERVER/$application_name:latest
92-
93-
- name: Remove image locally
94-
run: |
95-
docker rmi $REGISTRYSERVER/$application_name:${LAST_COMMIT_HASH}
96-
docker rmi $REGISTRYSERVER/$application_name:latest
97-
98-
99-
- name: Add SSH key to known_hosts
100-
run: |
101-
mkdir -p ~/.ssh
102-
ssh-keyscan -t rsa $SERVER_KNOWN >> ~/.ssh/known_hosts 2>/dev/null
103-
chmod 644 ~/.ssh/known_hosts
104-
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa
105-
chmod 600 ~/.ssh/id_rsa
59+
docker push lapig/$APPLICATION_NAME:${DOCKER_PATH}_${LAST_COMMIT_HASH}
60+
docker push lapig/$APPLICATION_NAME:${DOCKER_PATH}_latest
10661
107-
- name: Pull Image on Server
108-
run: |
109-
ssh $SSH_SERVER "docker pull $REGISTRYSERVER/$application_name:latest"
110-
111-
112-
- name: Deploy Container
113-
id: deploy_container
114-
run: |
115-
delete_status=$(ssh $SSH_SERVER "curl -v -X DELETE -w "%{http_code}" http://$DOCKER_SERVER/containers/$application_name?force=true 2>/dev/null")
116-
create_status=$(ssh $SSH_SERVER "curl -v -X POST -H 'Content-Type: application/json' -d @${{secrets.CONFIG_FILES}}$application_name.json -s -o /dev/null -w "%{http_code}" http://$DOCKER_SERVER/containers/create?name=$application_name 2>/dev/null")
117-
case $delete_status in
118-
204) delete_status_text="OK";;
119-
*) delete_status_text="ERROR";;
120-
esac
121-
122-
case $create_status in
123-
201) create_status_text="OK";;
124-
*) create_status_text="ERROR";;
125-
esac
126-
127-
echo "del $delete_status"
128-
echo "creat $create_status"
129-
130-
echo "CREATE_STATUS=$create_status_text" >> "$GITHUB_OUTPUT"
131-
echo "DELETE_STATUS=$delete_status_text" >> "$GITHUB_OUTPUT"
132-
133-
- name: Start Container
134-
id: start_container
135-
run: |
136-
start_status=$(ssh $SSH_SERVER "curl -v -X POST -s -o /dev/null -w "%{http_code}" http://$DOCKER_SERVER/containers/$application_name/start 2>/dev/null")
137-
case $start_status in
138-
204) start_status_text="OK";;
139-
*) start_status_text="ERROR";;
140-
esac
141-
echo $start_status
142-
143-
echo "START_STATUS=$start_status_text" >> "$GITHUB_OUTPUT"
144-
145-
146-
post-deploy:
147-
runs-on: ubuntu-latest
148-
needs: build-and-deploy
149-
if: ${{ always() || needs.build-and-deploy.result == 'failure' }}
62+
deploy:
63+
needs: build
64+
runs-on: self-hosted
65+
15066
steps:
151-
- name: Load env
152-
run: |
153-
echo "LAST_COMMIT_HASH=${{needs.build-and-deploy.outputs.LAST_COMMIT_HASH}}" >> $GITHUB_ENV
154-
155-
echo "LAPIG_AUTHOR_NAME=${{needs.build-and-deploy.outputs.LAPIG_AUTHOR_NAME}}" >> $GITHUB_ENV
156-
echo "LAPIG_AUTHOR_EMAIL=${{needs.build-and-deploy.outputs.LAPIG_AUTHOR_EMAIL}}" >> $GITHUB_ENV
157-
echo "LAPIG_AUTHOR_DATE=${{needs.build-and-deploy.outputs.LAPIG_AUTHOR_DATE}}" >> $GITHUB_ENV
158-
echo "LAPIG_PROJECT_NAME=${{needs.build-and-deploy.outputs.LAPIG_PROJECT_NAME}}" >> $GITHUB_ENV
159-
echo "LAPIG_COMMIT_DATE=${{needs.build-and-deploy.outputs.LAPIG_COMMIT_DATE}}" >> $GITHUB_ENV
160-
echo "CREATE_STATUS=${{needs.build-and-deploy.outputs.CREATE_STATUS}}" >> $GITHUB_ENV
161-
echo "DELETE_STATUS=${{needs.build-and-deploy.outputs.DELETE_STATUS}}" >> $GITHUB_ENV
162-
echo "START_STATUS=${{needs.build-and-deploy.outputs.START_STATUS}}" >> $GITHUB_ENV
163-
164-
- name: Send message to Telegram
165-
run: |
166-
end_time=$(date -u +%s)
167-
echo "LAPIG_DURATION=$((end_time - $START_TIME))" >> $GITHUB_ENV
168-
curl -s -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_API_KEY }}/sendMessage" -d "chat_id=${{ secrets.CHAT_ID }}" -d "parse_mode=markdown" -d "text=*Project*: *${LAPIG_PROJECT_NAME}*\
169-
*Status:*${{ needs.build-and-deploy.result }}\
170-
*Branch*: ${LAPIG_BRANCH_NAME}\
171-
*Author*: *${LAPIG_AUTHOR_NAME}*\
172-
*Author_Email*: *${LAPIG_AUTHOR_EMAIL}*\
173-
*Commit_ID*: *${LAST_COMMIT_HASH}*\
174-
*Date_Commit*: *${LAPIG_COMMIT_DATE}*\
175-
*Duration*: *${LAPIG_DURATION}*"
176-
177-
- name: creat message to Discord
67+
- name: Pull Image on Server
17868
run: |
179-
if [[ "${{ needs.build-and-deploy.result }}" == "success" && "$START_STATUS" == "OK" && "$DELETE_STATUS" == "OK" && "$CREATE_STATUS" == "OK" ]]; then
180-
echo "avatar_url=${{vars.LAPIG_SUCCESS}}" >> $GITHUB_ENV
181-
status_geral="Sucesso"
182-
else
183-
echo "avatar_url=${{vars.LAPIG_ERROR}}" >> $GITHUB_ENV
184-
status_geral="Falhou"
185-
fi
186-
187-
case $START_STATUS in
188-
"OK") START_STATUS_D="{ \"title\": \"DOCKER START OK!\",\"color\": 65280},";;
189-
*) START_STATUS_D="{ \"title\": \"DOCKER START ERROR!\",\"color\": 16711680},";;
190-
esac
191-
192-
case $DELETE_STATUS in
193-
"OK") DELETE_STATUS_D="{ \"title\": \"DOCKER DELETE OK!\",\"color\": 65280},";;
194-
*) DELETE_STATUS_D="{ \"title\": \"DOCKER DELETE ERROR!\",\"color\": 16711680},";;
195-
esac
196-
197-
case $CREATE_STATUS in
198-
"OK") CREATE_STATUS_D="{ \"title\": \"DOCKER CREATE OK!\",\"color\": 65280},";;
199-
*) CREATE_STATUS_D="{ \"title\": \"DOCKER CREATE ERROR!\",\"color\": 16711680},";;
200-
esac
201-
202-
echo "EMBEDS_STATUS=$DELETE_STATUS_D $CREATE_STATUS_D $START_STATUS_D" >> $GITHUB_ENV
203-
204-
205-
echo "discordDesc=Result: $status_geral\nProject: $LAPIG_PROJECT_NAME\nCommit: $LAST_COMMIT_HASH\nAuthor: $LAPIG_AUTHOR_NAME\nAuthor_Email: $LAPIG_AUTHOR_EMAIL\nDate: $LAPIG_COMMIT_DATE\nDuration: $LAPIG_DURATION seconds" >> $GITHUB_ENV
206-
207-
echo "discordFooter=${{ github.workflow }} (#${{ github.run_number }})" >> $GITHUB_ENV
208-
echo "discordTitle=${{ github.workflow }} (build #${{ github.run_number }})" >> $GITHUB_ENV
69+
docker pull lapig/${{ needs.build.outputs.APPLICATION_NAME }}:${{ needs.build.outputs.DOCKER_PATH }}_latest
20970
210-
- name: Send menssage to Discord
71+
- name: Restart Application
21172
run: |
212-
echo "{\"content\": \"$discordTitle\", \"embeds\": [ { \"title\": \"$discordTitle\", \"description\": \"$discordDesc\", \"footer\": { \"text\": \"$discordFooter\" }, \"thumbnail\": { \"url\":\"$avatar_url\"} }, $EMBEDS_STATUS] ], \"username\": \"GitHub Actions\", \"avatar_url\": \"$avatar_url\" }"
213-
214-
curl -H "Content-Type: application/json" -X POST -d "{\"content\": \"$discordTitle\", \"embeds\": [ $EMBEDS_STATUS { \"title\": \"$discordTitle\", \"description\": \"$discordDesc\", \"footer\": { \"text\": \"$discordFooter\" }, \"thumbnail\": { \"url\":\"$avatar_url\"} }], \"username\": \"GitHub Actions\", \"avatar_url\": \"$avatar_url\" }" https://discord.com/api/webhooks/${{ secrets.DISCORD_KEY }}
215-
73+
/compose/resetapp.sh --title "Plataforma Agrotóxicos" \
74+
--github "https://github.com/${{ github.repository }}" \
75+
--commit "${{ needs.build.outputs.LAST_COMMIT_HASH }}" \
76+
${{ needs.build.outputs.APPLICATION_NAME }}

0 commit comments

Comments
 (0)