github协作
GitHub 多人协作开发三种方式
Fork 方式
暂无
Organizations方式
准备项目
新建组织(创建免费的即可,有每月免费2000分钟)
创建team(不建也是可以,建了容易管理)
添加team成员,在组织下选择team,给team拉队友,队友收到邮件后,同意了就可以加入
仓库转入(原来已有的仓库,进入仓库选择settings,下滑选Transfer
)或在新建项目
为组织下的仓库添加合作者,配置权限
设置主分支保护,不让其他人直接push到主分支,打开仓库下的settings,选择branchs
添加Branch protection rules
开始协作
协作者在组织下找到对应的仓库,克隆仓库到本地
1
| git clone git@github.com:hycBook/bk_python.git
|
开始编写,完成后提交至新分支,一般命名为dev_xxx
新分支创建一次就可以,commit
之后,再push
到自己的dev_xxx
分支
注意:
在修改文件之前一般是先从主分支
拉取最新内容,修改完成后尽早提交,较少冲突
commit
和push
操作都是在自己的dev_xxx
分支,pull
操作是从主分支来
到github界面,选择Pull requests
,在选择New pull request
,选择分支
提交合并请求后,等待合并即可
合作者
暂无
githun actions
Github Actions 是 Github 推出的自动化构建工具,一般来说,CI / CD (持续集成 / 持续部署)都需要自己的计算资源,但 Github Actions 提供免费的计算资源,这是它的优势之一,用户只用操心 workflow 文件,不用关心环境相关的琐碎,便可部署 CI / CD,加速了流程。
在 GitHub Actions 中,一次执行过程被称为一个 workflow,一个 workflow 中可以有一个或者多个 job,job 又由 step 组成,step 中可以执行 action,就是一条条命令
github同步gitee
Hub Mirror Action
一个用于在hub间(例如Github,Gitee)账户代码仓库同步的action
准备步骤
本地生成公钥和秘钥
1
| ssh-keygen -t -C "1832044043@qq.com"
|
公钥放在gitee
github项目下新建:name=GITEE_PRIVATE_KEY,value=秘钥
gitee生成token
github项目下新建:name=GITEE_TOKEN,value=gitee生成的token
基本用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| steps: - name: Sync Github Repos To Gitee uses: Yikun/hub-mirror-action@master with: src: github/hycBook dst: gitee/hycBook dst_key: ${{ secrets.GITEE_PRIVATE_KEY }} dst_token: ${{ secrets.GITEE_TOKEN }} account_type: org debug: true force_update: true static_list: "bk_index" timeout: '660s'
|
必选参数
src
需要被同步的源端账户名,如github/kunpengcompute,表示Github的kunpengcompute账户。
dst
需要同步到的目的端账户名,如gitee/kunpengcompute,表示Gitee的kunpengcompute账户。
dst_key
用于在目的端上传代码的私钥(默认可以从~/.ssh/id_rsa获取),可参考生成/添加SSH公钥或generating SSH keys生成,并确认对应公钥已经被正确配置在目的端。对应公钥,Github可以在这里配置,Gitee可以这里配置。
dst_token
创建仓库的API tokens, 用于自动创建不存在的仓库,Github可以在这里找到,Gitee可以在这里找到。
可选参数
account_type
默认为user,源和目的的账户类型,可以设置为org(组织)或者user(用户),该参数支持同类型账户(即组织到组织,或用户到用户)的同步。如果源目的仓库是不同类型,请单独使用src_account_type
和dst_account_type
配置。
src_account_type
默认为account_type
,源账户类型,可以设置为org(组织)或者user(用户)。
dst_account_type
默认为account_type
,目的账户类型,可以设置为org(组织)或者user(用户)。
clone_style
默认为https,可以设置为ssh或者https。当设置为ssh时,你需要将dst_key
所对应的公钥同时配置到源端和目的端。
cache_path
默认为’’, 将代码缓存在指定目录,用于与actions/cache配合以加速镜像过程。
black_list
默认为’’, 配置后,黑名单中的repos将不会被同步,如“repo1,repo2,repo3”。
white_list
默认为’’, 配置后,仅同步白名单中的repos,如“repo1,repo2,repo3”。
static_list
默认为’’, 配置后,仅同步静态列表,不会再动态获取需同步列表(黑白名单机制依旧生效),如“repo1,repo2,repo3”。
force_update
默认为false, 配置后,启用git push -f强制同步,注意:开启后,会强制覆盖目的端仓库。
debug
默认为false, 配置后,启用debug开关,会显示所有执行命令。
timeout
默认为’30m’, 用于设置每个git命令的超时时间,’600’=>600s, ‘30m’=>30 mins, ‘1h’=>1 hours
mappings
源仓库映射规则,比如’A=>B, C=>CC’, A会被映射为B,C会映射为CC,映射不具有传递性。主要用于源和目的仓库名不同的镜像。
部署github pages
GitHub Pages Deploy Action
自动发布到github pages分支(可以自己设置分支)
配置token
github项目下新建:name=TOKEN,value=github生成的token
基本用法
1 2 3 4 5 6
| - name: Deploy uses: JamesIves/github-pages-deploy-action@3.1.5 with: ACCESS_TOKEN: ${{ secrets.TOKEN }} BRANCH: gh-pages FOLDER: _book
|
发布release
action-automatic-releases@latest
自动创建release,并发布
基本用法
1 2 3 4 5 6 7 8 9
| - name: Create GitHub release uses: marvinpinto/action-automatic-releases@latest with: repo_token: ${{ secrets.TOKEN }} automatic_release_tag: 'ebook_index' title: ${{ env.ReleaseVersion }} prerelease: false files: | _ebook/*
|
build gitee pages
Gitee 如何自动部署 Pages?还是用 GitHub Actions!
使用 GitHub Actions 解决了 GitHub 代码自动同步 Gitee 的问题,但我们的博客仓库代码同步到 Gitee 后,并不能像 GitHub 一样自动部署 Pages,如果不使用付费的 Gitee Pages Pro 服务,那我们该怎么实现 Gitee 自动部署 Pages 呢
基本用法
新建一个name=GITEE_PASSWORD, value=gitee登陆密码的secrets
1 2 3 4 5 6 7 8 9 10 11
| - name: Build Gitee Pages uses: yanglbme/gitee-pages-action@main with: gitee-username: narutohyc gitee-password: ${{ secrets.GITEE_PASSWORD }} gitee-repo: hycBook/bk_index branch: gh-pages
|
github
基本命令
强制覆盖本地文件
1 2 3 4 5
| # 单条执行 git fetch --all && git reset --hard origin/master && git pull
# 或者试下 git pull --force
|
要将 Git 仓库回退到指定版本
1 2 3 4 5 6 7 8
| # 使用以下命令查看提交历史,以找到你想要回退到的版本的哈希 git log
# 使用 git reset 将仓库回退到指定的提交哈希 git reset --hard <commit-hash>
# 如果你需要更新远程仓库(注意,这会覆盖远程历史),使用强制推送 git push origin <branch-name> --force
|
gitlab runner
GitLab Runner 介绍
GitLab Runner是一个开源项目,用于运行您的作业并将结果发送回GitLab。它与GitLab CI一起使用,GitLab CI是GitLab随附的开源持续集成服务,用于协调作业
GitLab Runner是用Go编写,可以作为单个二进制文件运行,不需要语言特定的要求
GitLab Runner的三种类型
shared:运行整个平台项目的作业(gitlab)
group:运行特定group下的所有项目的作业(group)
specific:运行指定的项目作业(project)
下载安装
下载安装 Install GitLab Runner manually on GNU/Linux(依赖docker)
linux手动
1 2 3
| curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_amd64-fips.rpm" chomd 777 gitlab-runner_amd64-fips.rpm rpm -i gitlab-runner_amd64-fips.rpm
|
docker方式
Run GitLab Runner in a container
注册runner
gitlab runner 注册
点击用户管理—左边点击runner,可以看到界面右边有gitlab的地址和token。这个需要用于后面runner的注册使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| (base) [root@FDBL ~]# sudo gitlab-runner register INFO[0000] Binary was compiled with FIPS mode, but an external SSL library was not enabled. Runtime platform arch=amd64 os=linux pid=5898 revision=8ec04662 version=16.3.0 Running in system-mode. Enter the GitLab instance URL (for example, https://gitlab.com/): http://192.168.50.128 Enter the registration token: iqxKz5XTz4w_2RxiSQ5S Enter a description for the runner: [FDBL]: for python project Enter tags for the runner (comma-separated): py310 Enter optional maintenance note for the runner:
WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872 Registering runner... succeeded runner=tKejdsiT Enter an executor: instance, kubernetes, custom, parallels, shell, virtualbox, docker+machine, docker, docker-windows, ssh, docker-autoscaler: docker Enter the default Docker image (for example, ruby:2.7): python:3.10 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
|
如果是docker的方式
1 2 3
| [root@localhost config]# docker exec -it gitlab-runner bash root@24dc60abee0b:/# gitlab-runner register # 同上
|
挂载
gitlab runner高级设置
打开/etc/gitlab-runner/config.toml
,添加volumes配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| concurrent = 4 check_interval = 0 shutdown_timeout = 0
[session_server] session_timeout = 1800
[[runners]] name = "for python project" url = "http://192.168.0.143" id = 947 token = "xxx" token_obtained_at = 2023-08-21T02:17:13Z token_expires_at = 0001-01-01T00:00:00Z executor = "docker" [runners.cache] MaxUploadedArchiveSize = 0 [runners.docker] tls_verify = false image = "centos:7" privileged = false disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = ["/cache", "/home/pypi_packages:/var/pypi_packages"] shm_size = 0
|
volumes是将/home/pypi_packages
映射到/var/pypi_packages
中,concurrent = 4
表示并行的数量
修改成立即生效sudo gitlab-runner verify
.gitlab-ci.yml
.gitlab-ci.yml keyword reference
gitlab—内置的环境变量、自定义环境变量
验证您的GitLab CI配置(语法检验)
实现一个自动化编译python,并将打包的好的发布到仓库,如果需要自定义变量可以用$env_name
访问在CI/CD配置的变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| image: python:3.10
stages: - build
build: stage: build script: - python setup.py sdist bdist_wheel - cp -R dist/* /var/pypi_packages/ - touch ~/.pypirc - 'echo "[distutils]" >> ~/.pypirc' - 'echo "index-servers" = >> ~/.pypirc' - 'echo " local" >> ~/.pypirc' - 'echo "" >> ~/.pypirc' - 'echo "[local]" >> ~/.pypirc' - 'echo "repository: 192.168.xx.xx:8282" >> ~/.pypirc' - 'echo "username: $u_name" >> ~/.pypirc' - 'echo "password: $u_pd" >> ~/.pypirc' # - python setup.py sdist bdist_wheel upload -r http://192.168.xx.xx:8282 # - pip install --extra-index-url http://192.168.xx.xx:8282/simple/ --trusted-host 192.168.xx.xx:8282 twine==4.0.2 # - twine upload dist/* artifacts: paths: - dist/ only: - dev # 或者您的主分支的名称,比如 "master" # 告诉 Runner 我们应用哪个标签 tags: - global_py310
#方式一 # - python setup.py sdist bdist_wheel # - cp -R dist/* /var/pypi_packages/ #方式二 # variables: # TWINE_USERNAME: $TWINE_USERNAME # TWINE_PASSWORD: $TWINE_PASSWORD # script: # - touch ~/.pypirc # - 'echo "[distutils]" >> ~/.pypirc' # - 'echo "index-servers" = >> ~/.pypirc' # - 'echo " local" >> ~/.pypirc' # - 'echo "" >> ~/.pypirc' # - 'echo "[local]" >> ~/.pypirc' # - 'echo "repository: 192.168.xx.xx:8282" >> ~/.pypirc' # - 'echo "username: $u_name" >> ~/.pypirc' # - 'echo "password: $u_pd" >> ~/.pypirc' # - python setup.py sdist bdist_wheel upload -r http://192.168.135.201:8282 #方式三 # - python setup.py sdist bdist_wheel # - pip install --extra-index-url http://192.168.135.201:8282/simple/ --trusted-host 192.168.135.201:8282 twine==4.0.2 # - twine upload dist/*
|