Gitlab +Jenkins +S3 部署静态页面
admin
2023-02-28 13:22:17
0

一、Introduction

This article provides instructions to setup a basic deployment using Jenkins to Amazon S3 by pulling the source code from GitLab and pushing it to a S3 bucket. Deployment automation using Jenkins saves us from manually upload files to the S3 bucket using AWS online console. In addition to saving time, this method pushes the exact code that was committed in the latest Git push, therefore avoiding upload of wrong files. This is useful for static web site stored on S3 having a large number of files.

二、Pre-requisite

OS: Mac OS but the main ideas are OS agnostic.

It is assumed that you already have a static webpage on AWS S3. If not, you can check out instructions from AWS documentation: http://docs.aws.amazon.com/AmazonS3/latest/dev/HostingWebsiteOnS3Setup.html

You should also have your project added in GitLab. If not, you can have a look at their documentation: https://docs.gitlab.com/ee/gitlab-basics/create-project.html

Install Jenkins

    1. Download Jenkins and install (Current LTS version as of this writing is 2.89.2): https://jenkins.io/download
    1. After the installation, change the Update Site url from https to http: Jenkins->Plugin Manager->Advanced (tab)->Update Site: http://updates.jenkins.io/update-center.json
    1. Install Git Plugin (3.7.0) Jenkins->Plugin Manager->Available (tab) Optional. Install Green Balls plugin to make the blue success ball green.

Setup to pull project from GitLab

Establish SSH authentication between your local machine and GitLab.

    1. Get the Private Key Inside the File /.ssh/id_rsa and Create a Git Credential.
      This site shows you how to create a Pair of Ssh Key if you do not have one: https://docs.gitlab.com/ce/ssh/README.html
    1. Create a Git credential in Jenkins.

Jenkins->Credentials->System->Global credentials (unrestricted) -> Add Credentials

Kind: SSH Username with private key.
Select Private Key and paste the private key.
Press OK

Gitlab +Jenkins +S3 部署静态页面

    1. Add Git username and email to Jenkins Git properties.

Manage Jenkins->Configure System
Add your Git username and email under Git plugin section

Gitlab +Jenkins +S3 部署静态页面

    1. Create a project/job in Jenkins

Jenkins->New Item

Enter any name for this Job
Select Freestyle Project
Press Ok

Gitlab +Jenkins +S3 部署静态页面

    1. Configure Source Code Management to pull the project from Git.

Fill in Git project URL and select credential to use (created in step 2) under Source Code Management tab.
Press Save.

Gitlab +Jenkins +S3 部署静态页面

    1. At this point you can test to see if the Jenkins job can retrieve your project from Git by clicking Build Now.

Gitlab +Jenkins +S3 部署静态页面

If successful, you should see a blue or green ball. You can check the logs by clicking on the blue/green ball.

Gitlab +Jenkins +S3 部署静态页面

To check if the project is correctly pulled from git to Jenkins workspace, click on Workspace. You should see the same files that are in your Git repository.

Gitlab +Jenkins +S3 部署静态页面

Pushing project to Amazon S3

    1. Create a user to allow access to your S3 bucket.
      In the online AWS console->IAM (service)->Users
      Click Add user
      Enter any username you want
      Check Programmatic access
      Click Next Permission
      Select tab Attach Policy Directly
      Search for 's3'
      Select AmazonS3FullAccess
      Click Next Review
      Click Create user
      Write down the user Access Key ID and Secret Access Key as they will not be available anymore after this point.
      Click Close

If you server is EC2, you can use IAM Role to attach to your EC2.

    1. Install and configure aws command (command line client to access S3)
apt install awscli

https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html

    1. Update the Jenkins job to use awscli to push code to S3

Return to the job created in Jenkins and click configure
Go to the Build section
Enter:

aws s3 sync . s3://beauty.wzlinux.com/ --region eu-west-3 --delete --exclude ".git/*";

explanation: the first line tells Jenkins where to find s3cmd command by adding its location to PATH
the second line uses s3cmd to copy all (.) to a S3 bucket name optimus.com
--delete-removed will remove deleted files from S3
--exclude '.git/' excludes the git directory to sync to S3.
Click Save
Click Build Now

Gitlab +Jenkins +S3 部署静态页面

By checking the job’s log, you should see that Jenkins pulled the code from Git and pushed it to AWS S3.
That’s it! I hope this has helped you.

License
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

欢迎大家扫码关注,获取更多信息

Gitlab +Jenkins +S3 部署静态页面

相关内容

热门资讯

沈伯洋彻底没戏?深绿智库民调:... 岛内深绿智库“新台湾正常智库”7日公布的最新民调显示,在台北市长选战中,力拼连任的国民党籍台北市长蒋...
白象“多半袋”、今麦郎“手打”... 印有“手打”“手擀”字样的挂面,其实全部来自流水线;印有“多半袋”“多半桶”字样的方便面,其实只多出...
陕西一镇被曝垃圾堆满山腰,当地... 5月6日,一则关于陕西省山阳县南宽坪镇垃圾填埋问题的视频引发关注。一名视频博主反映,该镇后坡半山腰处...
中国第一台高能加速器:北京正负... 感谢IT之家网友 的线索投递! 5 月 7 日消息,中国科学院高能物理研究所今日官宣,2026 年...
最强计算组合刷新大分子模拟纪录 量子计算机最具前景的应用方向之一,就是模拟蛋白质,助力新药研发。但眼下这类设备误差率仍然偏高。据英国...
贵州高校借力“中国天眼”勇攀科... “中国天眼”(FAST)。 新华社记者 欧东衢 摄 4月8日,遵义师范学院青年教师吴庆东以第一作者身...
Claude牵手马斯克,调用限... 智东西 作者 | 程茜 编辑 | 李水青 智东西5月7日报道,今日凌晨,Anthropic在开发者大...
男子称爷爷30年前向天津美院捐... 5月6日,天津康先生反映,1996年他爷爷捐赠40件书画到天津美术学院,如今部分书画去向不明。
寒武纪股价再成A股最贵,半导体... 一方面,受益于AI产业发展,不少半导体公司业绩上涨;另一方面,美股半导体的上涨也带动了A股行情 文|...
OpenAI两大劲敌联手!马斯... AIPress.com.cn报道 奥特曼今晚能安然入睡吗? 就在刚刚,OpenAI的两大死对头美美牵...