Dalam postingan Saya kali ini, Saya akan berbagi sedikit informasi tentang bagaimana cara Automation Deploy ke Server dengan Github Actions. Sebelumnya bagi yang belum tahu apa itu Automation Deploy, Automation Deploy merupakan suatu cara / metode untuk membangun suatu aplikasi secara otomatis. Otomatisasi ini sangat berperan penting dalam pembangunan suatu aplikasi, yang mana akan membuat pembangunan berjalan lebih cepat, efisien dan juga terstruktur. Oleh karenanya Saya akan membuat tutorial sederhana bagaimana Automation Deploy itu berjalan.
Yang di perlukan :
- Akun GitHub
- Repositori Proyek pada GitHub
- Server dengan Akses SSH, sudah Terinstal sshpass, Git dan terhubung ke Github
Jika kamu sudah memiliki apa yang di perlukan, kita langsung saja pada tutorialnya :
1. Clone repositori proyek yang kamu miliki kedalam Servermu.
Hal pertama yang perlu kamu lakukan adalah melakukan clone repositori kedalam server kamu.
# Enter your server with ssh # ssh -p [port] [user]@[yourIpServer] # Example ssh -p 22 root@192.168.1.1 # Cd to directory you want # Example cd /var/www/ # Clone your repository with git clone # git clone [your repo link] # Example git clone https://github.com/lukman134/sample.git
2. Buat Shellscripts yang berfungsi mengupdate proyekmu.
Shellscripts ini akan berjalan secara otomatis dengan menggunakan pemicu. Pemicu yang saya gunakan ada pada saat developer melakukan git push ke GitHub. Buat file shellscripts dengan nama deploy-sample.sh (contoh),
# cd to directory you want to place shellscript file # Example cd /usr/local/sbin/ # create shellscript file vim deploy-sample.sh
lalu isikan perintah berikut ini :
#!bin/bash cd /your/repository/project && git fetch origin main && git pull origin main echo "Deployment Finished"
3. Atur environment variable proyekmu di dalam GitHub.
Kamu perlu membuat environmet variabel pada repositori proyek di GitHub kamu. Variabel ini nantinya akan digunakan GitHub Actions untuk mengakses servermu.
- Masuklah ke akun GitHub-mu,
- setelah itu masuklah kedalam repositori proyekmu,
- buka settings > secrets.
- Di dalam secrets ini, masukkan variabel variabel penting yang di butuhkan untuk automation deploy ke server. masukkan lah ssh host, ssh port, ssh user dan ssh password dari servermu. Tenang saja, GitHub akan mengenkripsi nilai dari variabel yang sudah kamu buat. Jadi tidak akan ada yang tahu isinya.
4. Buat Github Actions untuk mengkonfigurasi automation deploy
Terakhir, kita buat konfigurasi untuk melakukan automation deploynya.
- Masuklah ke akun GitHub-mu,
- setelah itu masuklah kedalam repositori proyekmu,
- buka Actions, lalu scroll sampai ke bagian Automation,
- Pilih Manual Workflow, lalu klik Configuration,
- Berikan nama file sesuai keinginanmu,
- Isi file konfigurasi dengan ini :
# This is a basic workflow to help you get started with Actions name: CI # Controls when the action will run. on: # Triggers the workflow on push or pull request events but only for the main branch push: branches: [ main ] pull_request: branches: [ main ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 # Runs a set of commands using the runners shell - name: Sample Automation Deploy run: | VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') which ssh-agent || ( yum install openssh-client -y ) eval $(ssh-agent -s) sshpass -p ${{ secrets.SSH_PASSWORD }} ssh -p ${{ secrets.SSH_PORT }} -o StrictHostKeyChecking=no ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }} "cd /usr/local/sbin && sh deploy-sample.sh"
Sedikit penjelasan :
Konfigurasi ini berfungsi untuk mengatur tindakan apa saja yang di inginkan jika terdapat updatean pada repositori proyek. Di contoh yang saya buat ini, setiap ada push ataupun pull request pada branch main, akan memicu si GitHub Action ini untuk menjalankan perintah yang ada dibagian # Runs a set of commands using the runners shell . Perintah yang saya masukkan adalah perintah untuk masuk kedalam server, lalu menjalankan shellscript deploy-sample.sh yang sudah dibuat pada langkah ke-2.
Setelah konfigurasi di masukkan, selanjutnya klik Start Commit, klik Commit New File maka konfigurasi akan berjalan, kamu dapat melihat langsung prosesnya seperti contoh di bawah ini :
Selesai, untuk selanjutnya setiap ada push ataupun pull request ke branch main, Automation Deploy akan berjalan. Sekian tutorial mengenai Automation Deploy ke Server dengan GitHub Actions yang dapa Saya bagikan. Semoga tulisan ini dapat bermanfaat, Terima kkasih 😀
Baca Juga :
Install Jenkins dan Nginx dengan Docker-compose