An Interest In:
Web News this Week
- April 18, 2024
- April 17, 2024
- April 16, 2024
- April 15, 2024
- April 14, 2024
- April 13, 2024
- April 12, 2024
GITHUB ACTION (Quick guide)
**
This article is written as a reminder of myself, if you can put this to good use, you are welcome to comment to add content.
What is GITHUB ACTION
it is CICD of Github .
like a normal CICD in the world but it can integrate some action on git for example push , release tag , create branch , delete branch etc ...
How it work ?
If you imagine deploying typically requires writing a script and using a machine to run . yes that it !
Hint machine for run script it naming runner
Github jest provide share server for run your script (CICD)
The components of GitHub Actions
in work flow it have 5 component
- Workflows : Workflows are defined in the
.github/workflows
directory in a repository - Events : An event is a specific activity in a repository that triggers a workflow run
- Jobs : A job is a set of steps in a workflow that execute on the same runner.
- Actions : An action is a custom application for the GitHub Actions platform that performs a complex but frequently repeated task
- Runner : A runner is a server that runs your workflows when they're triggered.
Example work flow
This workflow use for deploy cloudfront aws . it trigger when published release tag start with releases-prod/*
Why i use when published release tag
because when deploy project it should mark version of deployment example
releases-prod/v1.0.1
: when deploy production it check if in below work flowreleases-staging/v1.0.1
: when deploy staging it check if in below work flowreleases-develop/v1.0.1
: when deploy develop it check if in below work flow
Repo/.github/workflows/main.yml
When you create this file in the repo, it will be triggered by itself when you do something that matches the event you set.
hint: uses for call SDK on Github action example gcloud,aws ,huawei etc..
name: Node.js CICDon: release: types: [published]jobs: deploy-prod: # jobs name deploy-prod runs-on: ubuntu-latest # script run on ubuntu if: startsWith( github.ref, 'refs/tags/releases-prod/') steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '14' - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_PROD }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} aws-region: ap-southeast-2 - name: yarn install run: yarn - name: test run: yarn test - name: build production run: yarn build:production - name: aws sync s3 run: aws s3 sync ./build s3://my-hello-aws --acl public-read - name: deploy aws cloudfront run: aws cloudfront create-invalidation --distribution-id MY_DISTRIBUTE_ID --paths '/*' - name: print run: echo "deploy PROD"#------------ deploy staging ------------ deploy-staging: runs-on: ubuntu-latest if: startsWith( github.ref, 'refs/tags/releases-staging/') steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '14' - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_PROD }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} aws-region: ap-southeast-2 - name: yarn install run: yarn - name: build staging run: yarn build:staging - name: aws sync s3 run: aws s3 sync ./build s3://my-hello-aws --acl public-read - name: deploy aws cloudfront run: aws cloudfront create-invalidation --distribution-id MY_DISTRIBUTE_ID --paths '/*' - name: print run: echo "deploy STAGING test"#------------ deploy develop ------------ deploy-develop: # needs: build-develop runs-on: ubuntu-latest if: startsWith( github.ref, 'refs/tags/releases-develop/') steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '14' - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_DEVELOP }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_DEVELOP }} aws-region: ap-southeast-2 - name: yarn install run: yarn - name: build development run: yarn build:development - name: aws sync s3 run: aws s3 sync ./build s3://my-hello-aws --acl public-read - name: deploy aws cloudfront run: aws cloudfront create-invalidation --distribution-id MY_DISTRIBUTE_ID --paths '/*' - name: print run: echo "deploy develop test"
Secret manager
${{ secrets.AWS_ACCESS_KEY_ID_PROD }}
this value store in secret manager Github can config in below image .when you use it in CICD command it will replace by ****** for hidden.
Example log
Easy roll back
When you bomb yourself in the new version.
you can click action and rerun action for roll back follow image
click rerun all jobs for rollback to old version
Try it on your self
Reference
Original Link: https://dev.to/gun27311/github-workflow-quick-guide-1dgg
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To