Ich habe ein Projekt, das erfolgreich auf Jenkins baut, aber wenn ich versuche, mit AWS Codebuild zu bauen, gibt es einen Plugin-Fehler. Das Projekt ist im Grunde ein NodeJS- und ReactJS-Projekt. Wir möchten nicht zu Jenkins wechseln, da wir serverlos sind und die Installation von jenkins eine EC2-Instanz benötigt. Wir möchten keinen Server unterhalten. Ich habe unten Umgebungen für AWS codebuild versucht:Build ist in Jenkins erfolgreich, aber AWS-Codebuild gibt Plugin Fehler
aws/codebuild/ubuntu-base:14.04
aws/codebuild/nodejs:6.3.1
aws/codebuild/nodejs:7.0.0
aws/codebuild/nodejs:4.4.7
Die ersten vier Befehle meines buildspec.yml wird nur dann ausgeführt, wenn ich aws/codebuild/ubuntu-base:14.04
codebuild Umgebung. Ansonsten werden nur
Im Folgenden drei Befehle sind Teil meiner buildspec.yml zuletzt ist mein buildspec.yml ist
version: 0.1
phases:
build:
commands:
- sudo apt-get update
- curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
- sudo apt-get install -y nodejs
- sudo apt-get install -y build-essential
- npm install
- npm run dev
- aws s3 cp --recursive dist/ s3://$AWS_BUCKET_NAME/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
Im Folgenden meine Fehlerprotokolle in AWS codebuild während npm Lauf
ERROR in
Child html-webpack-plugin for "index.html":
+ 3 hidden modules
Auch ich bekomme folgende Warnung während der Installation von npm in Codebuild, aber ich bekomme diese Warnung nicht in Jenkins
Unten ist mein webpack.config.js
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var FlowStatusWebpackPlugin = require('flow-status-webpack-plugin');
module.exports = {
entry: [
'./src/app/index.js'
],
output: {
path: __dirname + '/dist',
filename: 'index_bundle.js'
},
module: {
loaders: [
{
test: /\.json$/,
loader: 'json'
},
{
test: /\.js$/,
exclude: /(node_modules|test)/,
loaders: ["babel-loader"]
},
{
test: /\.(css|scss)$/,
loaders: ['style', 'css', 'sass-loader']
},
{
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
loader: 'url-loader',
options: {
limit: 100000,
name: 'assets/[hash].[ext]'
}
},
{
test: /\.styl$/,
loader: 'style-loader!css-loader!postcss-loader!stylus-loader'
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: __dirname + '/src/app/index.html',
filename: 'index.html',
inject: 'body'
}),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
}),
new webpack.DefinePlugin({
"process.env": {
'NODE_ENV': JSON.stringify('dev')
}
}),
new FlowStatusWebpackPlugin({
failOnError: true
})
],
devtool: 'source-map',
node: {
tls: "empty",
fs: "empty"
},
resolve: {
root: path.resolve(__dirname),
alias: {
'~': 'src',
},
extensions: ['', '.js', '.jsx']
},
};
Hallo, nur zu überprüfen, wo hoffen Sie, die Website (aus dem Build kommen) zu hosten? Betrachtet man die Buildspec, würde ich vermuten, dass Sie versuchen, es in S3 zu hosten? – Rikusor
Ja, es ist in S3 gehostet. @ Riku – deosha
Amazon S3 unterstützt serverseitige Skripts nicht. Sie können dort keinen NodeJS-Code hosten. http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html Das bedeutet, dass Ihr Build nur Befehle ausführen sollte, die die endgültige vollständig statische Version der Website ausliefern und diese Dateien auf S3 hochladen. Bedeutung z.B. npm run sollte nicht Teil des Build-Prozesses sein. – Rikusor