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 部署静态页面

相关内容

热门资讯

国家防总提升针对广东的应急响应... 今年第12号台风“红霞”已于7月25日早晨加强为台风级。预计,“红霞”将于25日夜间至26日早晨在香...
美媒爆猛料:两国首次直接袭击伊... 多名知情人士向美国《华尔街日报》透露,巴林和科威特在7月初对伊朗境内军事目标实施了秘密空袭,知情人士...
郑丽文:只有中国国民党可以确保... 据凤凰卫视报道,国民党今天(7月25日)举行“全代会”,党主席郑丽文与党内提名的县市长参选人一同造势...
透视上半年消费外贸外资走势 新华社北京7月23日电 题:稳中提质 韧性增强——透视上半年消费外贸外资走势新华社记者谢希瑶、王聿昊...
水龙头出水小怎么解决 水龙头出水小可能是由多种原因引起的,以下是一些常见的解决方法:1. 清洁水龙头:水龙头使用时间长了,...
小神童洗衣机启动后不出水直接洗 有可能是洗衣机的进水阀被烧坏了,需要换一个新的进水阀安装上即可。另外不建议自己擅自拆卸洗衣机内部进行...
祝贺景德镇! 海报制作:苗夏阳正在韩国釜山举行的联合国教科文组织第48届世界遗产大会25日通过决议将“景德镇手工瓷...
中央空调不制冷怎么办-中央空调... 中央空调,是电器股份有限公司主要产品之一,但是由于中央空调使用环境和使用方式的不同,在使用过程中就会...
空调不出水不制冷怎么回事 内罩长期不清洗,当然房间密封性差的话也会导致这种现象;其次就是外机问题,如果外机积满灰尘,会成空调制...
空调不出水,不制冷 原因有多种,可能是电源插头没有接牢、制冷剂不足、空调短时间休息间隙、空调滤网积灰等等。很多情况可以自...