Hey there, 🖐
Suppose you have an angular application and need to automate building and deployment also you are looking for how to do it.
You are in the right place.
Requirements
- 👉 Angular application
- 👉 Github account
- 👉 surge token and domain name
Prerequisite
- 👉 Push your application to github repo
- 👉 Add a folder .github/workflows/ in the root location and create a file with an extension of yml inside of it . Lets say (deplyment.yml) ( .github/workflows/)
✅ Add name for your workflow
name : Build and Deploy
If you omit name inside the workflow file, GitHub will set workflow name to the workflow file path relative to the root of the repository.
✅ Setup trigger
- A workflow trigger is required for a workflow. We need to provide event that trigger the workflow
- Read more about it right here
on: push: branches: - 'master'
- So on pushing the master branch. Change as you want.
✅ Create angular build
- In GitHub Actions, jobs are defined by a series of steps that are executed on a runner.
- Each job runs on a different workspace, meaning that files and job side effects are not kept between jobs.
jobs: build: name: Build runs-on: ubuntu-latest
The latest version of Ubuntu GitHub-hosted runner is utilized for this job
Jobs will not pull the source code by default, you need to explicitly tell the job to do so
- name: Checkout uses: actions/checkout@v1
- This action checks-out your repository , so your workflow can access it. More about actions/checout@v1 right here
✅ Setup Node.js
- name: Use Node 12.x uses: actions/setup-node@v1 with: node-version: '12.x'
- This action sets by node environment for use in actions by:
- Optionally downloading and caching a version of node - npm by version spec and add to PATH
- Registering problem matchers for error output
- Configuring authentication for GPR or npm
- Read it here
✅ Run build
- name: Install dependencies run: npm install - name: Build run: npm run build
✅ Upload artifact
- To expose the results of the current job to the next job, we can configure build job to upload the build artifacts
- name: Archive build if: success() uses: actions/upload-artifact@v1 with: name: deploy_dist path: dist
if: success() is used to make sure upload artifact only runs if all the previous steps passed
✅ Create Deploy Job
deploy: runs-on: ubuntu-latest needs: build steps: - name: Checkout uses: actions/checkout@v1
needs: build is used to tell GitHub to only execute deploy job when build and test job completed successfully.
✅ Download build artifact
- name: Download build uses: actions/download-artifact@v1 with: name: deploy_dist
✅ Install surge
- name: Install surge a uses: actions/setup-node@v1 with: node-version: '12.x' - run: npm install -g surge
✅ Deployment
- run: surge ./deploy_dist/projectname ${{ secrets.SURGE_DOMAIN }} --token ${{ secrets.SURGE_TOKEN }}
SURGE_DOMAIN
- DOMAIN_NAME - Set the secret in settings -> Secrets -> New repository secret
SURGE_TOKEN
- TOKEN - Set the secret in settings -> Secrets -> New repository secret
Type in terminal as follows to get surge token
surge token
✅ Conclusion
name: Build and Deploy on: push: branches: - 'master' jobs: build: name: Build and Test runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Use Node 12.x uses: actions/setup-node@v1 with: node-version: '12.x' - name: Install dependencies run: npm install - name: Build run: npm run build - name: Archive build if: success() uses: actions/upload-artifact@v1 with: name: deploy_dist path: dist deploy: runs-on: ubuntu-latest needs: build name: Deploying to surge steps: - uses: actions/checkout@v2 - name: Download build uses: actions/download-artifact@v1 with: name: deploy_dist - name: Install surge and fire deployment uses: actions/setup-node@v1 with: node-version: '12.x' - run: npm install -g surge - run: surge ./deploy_dist/projectname ${{ secrets.SURGE_DOMAIN }} --token ${{ secrets.SURGE_TOKEN }}
Top comments (0)