nolanpro send deploy EKS π #40
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: deploy-k8s | |
run-name: ${{ github.actor }} send deploy EKS π | |
on: | |
pull_request: | |
types: [opened, reopened, synchronize, edited, closed] | |
#push: | |
# branches: | |
# - FOUR-9465 | |
workflow_dispatch: | |
env: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
aws-url: ${{ secrets.AWS_URL }} | |
pull_req_id: ${{github.event.pull_request.number}} | |
DATE: $(date -d '-1 day' '+%Y-%m-%d'|sed 's/-//g') | |
CI_PACKAGE_BRANCH: ${{github.event.pull_request.head.ref || 'next' }} | |
CI_PROJECT: ${{github.event.pull_request.head.repo.name || 'processmaker' }} | |
CI_PR_BODY: ${{ github.event_name == 'schedule' && 'ci:deploy' || github.event.pull_request.body }} | |
IMAGE_TAG: $(echo "$CI_PROJECT-$CI_PACKAGE_BRANCH" | sed "s;/;-;g") | |
DEPLOY: ${{ secrets.DEPLOY }} | |
GH_USER: ${{ secrets.GH_USER }} | |
GH_EMAIL: ${{ secrets.GH_EMAIL }} | |
GITHUB_COMMENT: ${{ secrets.GH_COMMENT }} | |
DOM_EKS: ${{ secrets.DOM_EKS }} | |
BASE: ${{ contains(github.event.pull_request.body, 'ci:next') && 'ci-base-php82' || 'ci-base' }} | |
GITHUB_TOKEN: ${{ secrets.GIT_TOKEN }} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
imageEKS: | |
name: build-docker-image-EKS | |
if: contains(github.event.pull_request.body, 'ci:build-k8s') | |
runs-on: ubuntu-22.04 | |
steps: | |
#- uses: actions/checkout@v3 | |
- name: Clone repo K8S | |
run: | | |
git clone --depth 1 -b cicd2 "https://[email protected]/ProcessMaker/pm4-k8s-distribution.git" pm4-k8s-distribution | |
git clone --depth 1 "https://[email protected]/ProcessMaker/pm4-tools.git" pm4-k8s-distribution/images/pm4-tools | |
- name: Generate image EKS | |
run: | | |
cd pm4-k8s-distribution/images | |
export CICD=1 | |
bash build.k8s.sh $CI_PACKAGE_BRANCH ${{env.IMAGE_TAG}} $BASE | |
- name: List Images | |
run: | | |
docker images | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ env.aws-access-key-id }} | |
aws-secret-access-key: ${{ env.aws-secret-access-key }} | |
aws-region: ${{ env.aws-region }} | |
- name: Login to ECR | |
run: | | |
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/processmaker | |
- name: Push OpenSource Image to ECR | |
run: | | |
cd pm4-k8s-distribution | |
docker tag local/processmaker:${{env.IMAGE_TAG}} public.ecr.aws/processmaker/processmaker:${{env.IMAGE_TAG}} | |
docker push public.ecr.aws/processmaker/processmaker:${{env.IMAGE_TAG}} | |
- name: Push Enterprise Image to ECR | |
run: | | |
cd pm4-k8s-distribution | |
docker tag local/enterprise:${{env.IMAGE_TAG}} public.ecr.aws/processmaker/enterprise:${{env.IMAGE_TAG}} | |
docker push public.ecr.aws/processmaker/enterprise:${{env.IMAGE_TAG}} | |
deployEKS: | |
name: build-deploy-EKS | |
if: contains(github.event.pull_request.body, 'ci:build-k8s') | |
needs: imageEKS | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Clone private repository | |
run: | | |
git clone --depth 1 -b main "https://[email protected]/ProcessMaker/argocd.git" argocd | |
cd argocd | |
- run: git config --global user.email $GH_EMAIL | |
- run: git config --global user.name $GH_USER | |
- name: Add instance EKS | |
run: | | |
cd argocd | |
deploy=$(echo -n ${{env.IMAGE_TAG}} | md5sum | head -c 10) | |
if ! echo $(ls ci/) | grep $deploy; then | |
echo "Creating Deploy :: $deploy" | |
cp template-argocd.yaml ci/ci-$deploy.yaml | |
cp template-db.yaml ./ci/job_database.yaml | |
sed -i "s/{{instance}}/ci-$deploy/" ./ci/ci-$deploy.yaml | |
sed -i "s/{{image}}/${{env.IMAGE_TAG}}/" ./ci/ci-$deploy.yaml | |
sed -i "s/{{instance}}/ci-$deploy/" ./ci/job_database.yaml | |
git status | |
git add . | |
git commit -m "Deploy CICD : ci-$deploy" | |
git push origin main | |
else | |
echo "Exist Deploy :: https://ci-$deploy$DOM_EKS" | |
fi | |
echo "INSTANCE_URL=https://ci-$deploy$DOM_EKS" >> "$GITHUB_ENV" | |
- name: Comment Instance | |
run: | | |
echo "Instance URL: '${INSTANCE_URL}'" | |
bash argocd/gh_comment.sh "$CI_PROJECT" "$pull_req_id" | |
deleteEKS: | |
name: Delete Instance | |
if: github.event.action == 'closed' | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Clone private repository | |
run: | | |
git clone --depth 1 -b main "https://[email protected]/ProcessMaker/argocd.git" argocd | |
- run: git config --global user.email $GH_EMAIL | |
- run: git config --global user.name $GH_USER | |
- name: Remove instance EKS | |
run: | | |
cd argocd/ci/ | |
deploy=$(echo -n ${{env.IMAGE_TAG}} | md5sum | head -c 10) | |
rm -rf ci-$deploy.yaml | |
git status | |
git add . | |
git commit -m "Delete Instance : ci-$deploy" | |
git push origin main |