提交 512f4494 作者: 余乾开

feat(CI):Action+Dockerfile

上级 d7afd6af
# This workflow will build and push a new container image to Alibaba Cloud Container Registry (ACR),
# and then will deploy it to Alibaba Cloud Container Service for Kubernetes (ACK), when there is a push to the "develop" branch.
#
# To use this workflow, you will need to complete the following set-up steps:
#
# 1. Create an ACR repository to store your container images.
# You can use ACR EE instance for more security and better performance.
# For instructions see https://www.alibabacloud.com/help/doc-detail/142168.htm
#
# 2. Create an ACK cluster to run your containerized application.
# You can use ACK Pro cluster for more security and better performance.
# For instructions see https://www.alibabacloud.com/help/doc-detail/95108.htm
#
# 3. Store your AccessKey pair in GitHub Actions secrets named `ACCESS_KEY_ID` and `ACCESS_KEY_SECRET`.
# For instructions on setting up secrets see: https://developer.github.com/actions/managing-workflows/storing-secrets/
#
# 4. Change the values for the REGION_ID, REGISTRY, NAMESPACE, IMAGE, ACK_CLUSTER_ID, and ACK_DEPLOYMENT_NAME.
#
name: Build and Push to ACR
on:
push:
branches: [ "develop" ]
env:
REGION_ID: cn-shenzhen
REGISTRY: mmc-registry.cn-shenzhen.cr.aliyuncs.com
NAMESPACE: sharefly
IMAGE: ims
TAG: ${{ github.sha }}
#ACK_CLUSTER_ID: clusterID
#ACK_DEPLOYMENT_NAME: nginx-deployment
ACR_EE_REGISTRY: mmc-registry.cn-shenzhen.cr.aliyuncs.com
ACR_EE_INSTANCE_ID: cri-yhk5zgfc2v1sia6l
ACR_EE_NAMESPACE: sharefly
ACR_EE_IMAGE: ims
ACR_EE_TAG: ${{ github.sha }}
JAVA_VERSION: '8'
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
environment: dev
steps:
- name: Checkout
uses: actions/checkout@v3
#- uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v1
with:
java-version: ${{env.JAVA_VERSION}}
# 2.1 (Optional) Login to ACR EE
- name: Login to ACR EE with the AccessKey pair
uses: aliyun/acr-login@v1
with:
login-server: "https://${{ env.ACR_EE_REGISTRY }}"
region-id: "${{ env.REGION_ID }}"
username: "QD--KeBiTeHangKong@1354706964800968"
password: "MMC@2023&ACR"
#access-key-id: "${{ secrets.ACCESS_KEY_ID }}"
#access-key-secret: "${{ secrets.ACCESS_KEY_SECRET }}"
instance-id: "${{ env.ACR_EE_INSTANCE_ID }}"
# 2.2 (Optional) Build and push image ACR EE
- name: Build and push image to ACR EE
run: |
mvn clean package
docker build -t "$ACR_EE_REGISTRY/$ACR_EE_NAMESPACE/$ACR_EE_IMAGE:$TAG" .
docker push "$ACR_EE_REGISTRY/$ACR_EE_NAMESPACE/$ACR_EE_IMAGE:$TAG"
# 3.2 Deploy the image to the ACK cluster
- name: Kustomize Set Image
run: |-
cd kustomization/overlays/dev
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash /dev/stdin 3.8.6
./kustomize edit set image REGISTRY/NAMESPACE/IMAGE:TAG=$REGISTRY/$NAMESPACE/$IMAGE:$TAG
#- name: Commit files
# run: |
# git config --local user.email "986022405@qq.com"
# git config --local user.name "qiankaiyu"
# git commit -am "Image Update"
# git push
#- name: Push changes
# uses: ad-m/github-push-action@master
# with:
# #github_token: ${{ secret.GITHUB_TOKEN }}
# github_token: "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"
\ No newline at end of file
FROM openjdk:8-jdk-alpine
#VOLUME ["/tmp","/files","/var/logs/"]
ARG JAVA_OPTS
ENV JAVA_OPTS=$JAVA_OPTS
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
COPY ./release-service/target/release-service-0.0.1-SNAPSHOT.jar ims.jar
EXPOSE 10001
# For Spring-Boot project, use the entrypoint below to reduce Tomcat startup time.
ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar ims.jar
# application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ims-application
namespace: argocd
spec:
project: default # 项目名
source:
repoURL: http://git.mmcuav.cn/iuav/ims.git
targetRevision: HEAD #develop master # 分支名
path: argocd # 资源文件路径
destination:
server: https://kubernetes.default.svc # API Server 地址
namespace: develop # 部署应用的命名空间
# 默认情况下每 3 分钟会检测 Git 仓库一次
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: true
prune: true
apiVersion: v1
kind: ConfigMap
metadata:
name: ims-map
namespace: default
data:
SPRING_PROFILES_ACTIVE: default
apiVersion: apps/v1
kind: Deployment
metadata:
name: ims-deployment
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: ims
template:
metadata:
labels:
app: ims
spec:
containers:
- name: ims
image: REGISTRY/NAMESPACE/IMAGE:TAG
resources:
limits:
memory: 256Mi
cpu: 100m
ports:
- containerPort: 10001
env:
- name: SPRING_PROFILES_ACTIVE
valueFrom:
configMapKeyRef:
name: ims-map
key: SPRING_PROFILES_ACTIVE
\ No newline at end of file
#apiVersion: extensions/v1beta1
#kind: Ingress
#metadata:
# name: pms-ingress
# namespace: default
#spec:
# rules:
# - host: infra.mmcuav.cn
# http:
# paths:
# - backend:
# serviceName: pms-svc
# servicePort: 8081
# path: /
\ No newline at end of file
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
commonLabels:
app: ims
resources:
- ./deployment.yaml
- ./service.yaml
- ./configMap.yaml
\ No newline at end of file
apiVersion: v1
kind: Service
metadata:
name: ims-svc
namespace: default
spec:
selector:
app: ims
type: NodePort
ports:
- protocol: TCP
port: 10001
targetPort: 10001
NodePort: 30001
\ No newline at end of file
apiVersion: v1
kind: ConfigMap
metadata:
name: ims-map
data:
SPRING_PROFILES_ACTIVE: dev
\ No newline at end of file
apiVersion: apps/v1
kind: Deployment
metadata:
name: ims-deployment
spec:
template:
spec:
containers:
- name: ims
image: REGISTRY/NAMESPACE/IMAGE:TAG
\ No newline at end of file
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
namePrefix: dev-
namespace: dev
commonLabels:
variant: dev
commonAnnotations:
note: This is dev!
patchesStrategicMerge:
- configMap.yaml
- deployment.yaml
# - ingress.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: ims-map
data:
SPRING_PROFILES_ACTIVE: prod
\ No newline at end of file
apiVersion: apps/v1
kind: Deployment
metadata:
name: ims-deployment
spec:
replicas: 1
template:
spec:
containers:
- name: ims
image: REGISTRY/NAMESPACE/IMAGE:TAG
\ No newline at end of file
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
namespace: prod
namePrefix: prod-
commonLabels:
variant: prod
commonAnnotations:
note: This is prod!
patchesStrategicMerge:
- configMap.yaml
- deployment.yaml
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论