study-plan/其他自动cicd操作.txt

147 lines
4.5 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: demo pipeline
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: [ubuntu-latest]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Build with Maven
run: mvn clean install -DskipTests
- name: Login to docker hub
run: docker login -u "${{ secrets.DOCKER_USERNAME }}" -p "${{ secrets.DOCKER_PASSWORD }}"
- name: Build docker image
run: docker build -t <dockerhub repository name>.
- name: Push docker image
run: docker push <dockerhub repository name>:latest
deploy:
needs: build
runs-on: [<ec2 instance runner's lable>]
steps:
- name: Check Docker Installation
run: |
if ! [ -x "$(command -v docker)" ]; then
echo "Error: Docker is not installed." >&2
exit 1
fi
- name: Pull image from docker hub
run: sudo docker pull <dockerhub repository name>:latest
- name: Delete existing container
run: |
if [ "$(sudo docker ps -aq -f name=demo)" ]; then
sudo docker rm -f demo
fi
- name: Run docker container
run: sudo docker run -d -p 8080:8080 --name demo <dockerhub repository name>
ssh连接https://www.freebuf.com/articles/sectool/435623.html 和 https://github.com/appleboy/ssh-action/blob/master/README.zh-cn.md 以及 https://blog.gitcode.com/6676e2ca182e0fcb7d332c92dd2968c7.html
- name: Deploy blog.emooa.com
run: |
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
echo "Removing /var/www/$USER_NAME/blog"
ssh $USER_NAME@$IP "rm -f /var/www/$USER_NAME/blog || echo 'no such directory.'"
echo "Creating /var/www/$USER_NAME/blog"
ssh $USER_NAME@$IP "mkdir -p /var/www/$USER_NAME/blog"
echo "Copying 'public' directory to /var/www/$USER_NAME/blog"
scp -r public/* $USER_NAME@$IP:/var/www/$USER_NAME/blog/
发布 https://github.com/marketplace/actions/upload-files-to-a-github-release
steps:
- name: Upload files to a GitHub release
uses: svenstaro/upload-release-action@2.9.0
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: path/to/your/asset.zip # The file to attach to the release
tag: ${{ github.ref }} # The tag associated with the release
steps:
- uses: actions/checkout@v4 # Checkout your repository code
- name: Build something
run: |
# Your build commands that generate the files you want to attach
echo "This is a test artifact." > my-artifact.txt
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: my-build-output # Name of the artifact
path: my-artifact.txt # Path to the file or directory to upload
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js 18.x
uses: actions/setup-node@v4
with:
node-version: 18.x
cache: 'npm'
- run: npm install
- run: npm run build --if-present
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
release:
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Download Build Artifact
uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
body: |
自动发布的版本
draft: false
prerelease: false
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./dist/your-executable
asset_name: your-executable
asset_content_type: application/octet-stream
k8s操作
https://spacelift.io/blog/github-actions-kubernetes#why-use-github-actions-for-kubernetes-deployments
https://github.com/actions-hub/kubectl